The 8-Bit Kickboxing Kid — Fullstack Developer

The 8-Bit Kickboxing KidThe 8-Bit Kickboxing Kid
Tom

PRESENTACIÓN

Quién soy

QUIÉN SOY


Soy Tom Senior, y soy software developer. Lo de Senior no es porque sea senior developer, sino porque mi padre también era Senior de apellido, de ahí que yo sea Tom Senior y no, por ejemplo, Tom Junior. Sin embargo, mi padre también se llamaba Tom, así que realmente soy Tom Senior Junior, pero no porque sea junior developer, sino porque me llamo igual que mi padre.

Soy un apasionado del kickboxing, pero sobre todo soy un apasionado de la tecnología, la informática, la retroinformática, y el Commodore 64.

También me gusta mucho el cine, y me considero cinéfilo. Sólo veo películas que traten de la condición humana y que me hagan pensar.

Y también soy freelancer, nómada digital, proactivo, y adicto al trabajo.

Mis orígenes

MIS ORÍGENES


Mi padre era marine americano destinado en la base de Rota, en Cádiz, y mi madre es española de Algatocín. A mis tres años de edad nos mudamos a California al terminar mi padre su servicio en Rota, y no regresé a España hasta pasados quince años.

Dónde estudié

DÓNDE ESTUDIÉ


Al regresar a España fui directo a Madrid y estudié en la Pollitécnica, donde obtuve el mejor expediente de mi promoción y seis matrículas de honor. Y tengo ya más de cuarenta años y todavía no me canso de decirlo.

Logros académicos

Mi ceremonia de graduación. Momento de la entrega de matrículas.

No es IA, se parecen entre ellos porque son hermanos los seis. Es lo que tiene ser un país de nepotistas y enchufados... Ssshhhh, calladito.

Mi primer trabajo

MI PRIMER TRABAJO


Después de graduarme no encontraba trabajo en España, cosa rara porque en España siempre ha habido mucho trabajo y las empresas son muy generosas y se preocupan por la gente. Así que volví a Estados Unidos y estuve nueve años trabajando para una consultora de Palo Alto. Participé en un proyecto de alto valor tecnológico para una alta entidad financiera de alto nombre y prestigio. Debido a lo mucho que un proyecto como este podía aportarme a mí y a lo poco que podía aportar yo, mi contratación suponía una situación de desequilibrio, una circunstancia en la que yo salía demasiado beneficiado y que era totalmente injusta para la entidad, así que acordamos que empezaría trabajando sin cobrar hasta demostrar mi valía. Hay pocas cosas en esta vida más gratificantes que trabajar gratis para un banco, sólo por el placer de aprender. Yo, es que soy proactivo y adicto al trabajo. Gracias, Robert Kiyosaki (er quillo). Y pa cenar, gachas de harina.

Regreso a España

REGRESO A ESPAÑA


En California conocí a una colombiana que me robó el corazón. Yo, a ella, le robé el bolso. Y le gorroneé todo lo que pude. Es la consecuencia irremediable de no tener ni un centavo. Nos hicimos novios, y después de un tiempo juntos decidimos venir a España.

Tras haber vivido en varias ciudades de Estados Unidos y de España, actualmente me considero un nómada digital y un desarrollador freelance. Sí, me han dicho muchas veces "¡ea!, pues ya hemos terminado, y no te quejes, que te vamos a pagar el día entero". Pero paso la mayor parte del tiempo en Marbella. Aquí he trabajado ya para tres empresas distintas y creo haber encontrado el lugar ideal para pasar el resto de mi vida. Creo que encajo bien con el ambiente que he encontrado en esta ciudad, porque hay muchos empresarios y gente de bien, personas que se preocupan por los demás y generan bienestar y riqueza para todos.

Mis compañeros

Mis compis de la oficina de Marbella.

No tenemos futbolín ni fruta fresca, pero tenemos a Roxanne y la llave del cuarto de contadores.

♫♫ Roooooxanne, you don't have to put on the red light... ♫♫

CURRICULUM VITAE

Formación

Ingeniería Técnica en Informática de Sistemas
09/2003 – 09/2006

Universidad Pollitécnica de Madrid

Experiencia profesional

Software Engineer
02/2007 – 03/2016

TechNova Consulting - Global National Bank · Palo Alto, California, EE.UU.

  • Desarrollo de aplicaciones bancarias internas
    • Diseño e implementación de nuevas funcionalidades para la plataforma de banca corporativa.
    • Desarrollo de módulos para la gestión de cuentas, transferencias y autorizaciones.
    • Corrección de incidencias detectadas por usuarios y equipos de negocio.
    • Evolución funcional de aplicaciones existentes.
    Tecnologías

    Java · Spring · Spring Boot · Maven · JPA / Hibernate · Oracle · Database · Git

  • Desarrollo Frontend
    • Implementación de nuevas pantallas para aplicaciones internas.
    • Desarrollo de formularios complejos con validaciones.
    • Adaptación de interfaces para distintos tamaños de pantalla.
    • Integración con APIs REST desarrolladas por otros equipos.
    Tecnologías

    HTML5 · CSS3 · JavaScript · Bootstrap

  • Integración entre sistemas
    • Desarrollo de servicios REST consumidos por aplicaciones internas.
    • Integración con sistemas de autenticación corporativos.
    • Consumo de servicios de terceros mediante APIs.
    • Serialización y transformación de datos JSON.
    Tecnologías

    Spring MVC · REST · JSON · JWT · Swagger

  • Mantenimiento y mejora del rendimiento
    • Análisis y resolución de incidencias de producción.
    • Optimización de consultas SQL.
    • Refactorización de componentes heredados.
    • Reducción de tiempos de respuesta de operaciones críticas.
    Tecnologías

    Oracle · SQL · PL/SQL · Hibernate · VisualVM

  • Calidad del software
    • Desarrollo de pruebas unitarias.
    • Revisión de código mediante Pull Requests.
    • Aplicación de estándares de codificación.
    • Corrección de vulnerabilidades detectadas durante auditorías.
    Tecnologías

    JUnit · Mockito · SonarQube · Checkstyle · GitHub

  • Integración continua y despliegue
    • Automatización de compilaciones.
    • Configuración de pipelines de integración continua.
    • Despliegues en entornos de desarrollo, pruebas y preproducción.
    • Monitorización de ejecuciones y resolución de errores de despliegue.
    Tecnologías

    Jenkins · Maven · Docker · Kubernetes · Nexus

  • Colaboración con equipos multidisciplinares
    • Participación en reuniones de planificación.
    • Refinamiento de historias de usuario junto con analistas funcionales.
    • Coordinación con arquitectos y administradores de bases de datos.
    • Soporte técnico a equipos de QA durante las pruebas funcionales.
    Tecnologías

    Scrum · Jira · Confluence · Agile

  • Seguridad y cumplimiento normativo
    • Implementación de controles de autorización.
    • Protección frente a vulnerabilidades OWASP.
    • Gestión segura de credenciales y secretos.
    • Adecuación de aplicaciones a las políticas internas del banco.
    Tecnologías

    Spring Security · OAuth2 · JWT · Vault

Técnico Enchufista
04/2016 – 09/2016

Ayuntamiento de Tetulcias · Tetulcias

  • Técnico Auxiliar de Enchufamientos Varios, bajo supervisión del Técnico Cacique Superior de turno
    • Enchufes de pared, con y sin toma de tierra.
    • Enchufes de electrodomésticos, neveras y aires acondicionados pa estar fresquitos en el despacho.
    • Amigas, familia y conocidos del Técnico Superior, con tecnología MenestraClever (el dinero público no es de nadie).
    Tecnologías

    MenestraClever · NepoteFiel · ClassicSpain · Oracle · Git

Desarrollador Java
10/2016 – 07/2017

Recauchutados Manolo · Madrid

  • Desarrollo de aplicaciones internas
    • Implementación de módulos para la gestión de pedidos y producción.
    • Desarrollo de nuevas funcionalidades solicitadas por los distintos departamentos.
    Tecnologías

    Java · Spring Boot · Maven · DB2 · Git

  • Mantenimiento de aplicaciones
    • Resolución de incidencias detectadas por los usuarios.
    • Optimización de consultas SQL y mejora del rendimiento.
    Tecnologías

    SQL · Hibernate · Jenkins · SonarQube

Senior Java Developer
08/2017 – 06/2018

Cristalería Paquito · Valencia

  • Arquitectura de microservicios
    • Diseño de APIs REST para procesos logísticos.
    • Coordinación técnica con el resto del equipo de desarrollo.
    Tecnologías

    Spring Boot · Docker · Kubernetes · Redis · RabbitMQ · PostgreSQL

Senior Java Developer
07/2018 – 03/2020

Русское дело - Ruskeye Diela - La Cosa Rusa SL · Marbella

  • Departamento de optimización avanzada de aduanas
    • Desarrollo de un sistema de gestión documental para el procesamiento automatizado de declaraciones y expedientes.
    • Gestor documental con desaparición espontánea de documentación e inventario.
    Tecnologías

    Java 21 · Spring Boot · Spring Batch · PostgreSQL · Kafka

  • Reubicación involuntaria de mercancías
    • Implementación de una plataforma de seguimiento de envíos y sincronización de inventarios en tiempo real.
    • Diseño del modelo de persistencia de datos.
    Tecnologías

    Spring Boot · Redis · RabbitMQ · Docker · Hibernate · JPA · PostgreSQL

  • Importación de vehículos de 'bajo kilometraje'
    • Desarrollo de un portal de gestión de vehículos, historial de mantenimiento y documentación de importación.
    • Desarrollo de nuevas funcionalidades.
    Tecnologías

    Spring Boot · MySQL · Hibernate · Apache POI

  • Logística nocturna
    • Optimización de procesos batch de planificación de rutas y distribución ejecutados durante la madrugada.
    • Sistema altamente tolerante a registros policiales inesperados.
    • Optimización de consultas SQL y mejora del rendimiento.
    Tecnologías

    Spring Batch · Quartz Scheduler · DB2 · JMS

Fullstack Developer
04/2020 – 07/2023

Matrioshka Capital SL · Marbella

  • Dep. Resoluciones extrajudiciales de desacuerdos
    • Desarrollo de un gestor de incidencias, mediaciones y flujo de aprobaciones entre particulares y empresas.
    • Desarrollo de autorización basada en JWT.
    Tecnologías

    Spring MVC · Spring Security · Camunda · Hibernate · Oracle

  • Dep. Protección empresarial persuasiva
    • Desarrollo de una aplicación de control de accesos, autorizaciones y registro de visitas.
    • Migración de servicios SOAP a REST.
    Tecnologías

    Spring Boot · Spring MVC · Spring Security· Keycloak · JWT · LDAP

  • Auditorías SECA (Señores Enormes con Chándal Adidas)
    • Implementación de una herramienta de auditoría interna con generación automática de informes y registro de actividad y visitas.
    Tecnologías

    Java · JasperReports · ELK Stack (Elasticsearch, Logstash, Kibana) · Logback

  • Servicios de convencimiento estratégico
    • Desarrollo de un CRM para la gestión de clientes, seguimiento de negociaciones y planificación de visitas.
    • Desarrollo de paneles de administración.
    Tecnologías

    Spring Boot · PostgreSQL · Kafka · Angular

  • Recuperación de activos especialmente perdidos
    • Implementación de un sistema para localizar y gestionar activos corporativos mediante geolocalización y auditoría.
    • Integración con APIs REST.
    • Análisis de calidad del código.
    Tecnologías

    Java · Elasticsearch · PostgreSQL + PostGIS · REST APIs · Angular · Fetch API · Axios · SonarQube

  • Gestión de maletines
    • Desarrollo de un sistema de trazabilidad de entregas con firma digital, códigos QR y registro de custodia.
    Tecnologías

    Java · Spring Data JPA · Spring Security · Redis · OpenAPI

Ingeniero de Rendimiento Audiovisual
08/2023 – Actualidad

Chicas Checas - Check Chicks (Bohemian Velvet Entertainment Group) · Marbella

  • Desarrollo de chat en directo y sistema de propinas
    • Experiencia Interactiva. Plataforma de mensajería instantánea para transmisiones en directo. Gestión de propinas virtuales, mensajes privados y moderación de contenido.
    Tecnologías

    Spring WebFlux (reactivo) · Socket.io · RabbitMQ · MongoDB · React Native (móvil)

  • Optimización y pruebas
    • Plataforma para probar diferentes thumbnails, títulos sugerentes y posiciones de botones de "Play". Descubrir qué imagen genera más clics.
    • Alcancé todo un hito profesional al conseguir que el reproductor dejara de preguntar al usuario "¿Sigues ahí?" en el momento menos oportuno.
    Tecnologías

    Spring Boot · Redis · Apache JMeter · React · Google Analytics API

  • Gestión de Talento - Recursos Humanos
    • CRM interno para gestión de perfiles de colaboradoras, contratos, pagos por escena, pluses por trabajos especiales, calendarios de grabación y verificación documental exhaustiva.
    Tecnologías

    JavaFX (cliente de escritorio) · Spring Security · LDAP integration · JasperReports (contratación) · Angular Material

TECNOLOGÍAS Y CONOCIMIENTOS

Antes de leer esta sección, es importante que comprendas

que domino todas y cada una de las tecnologías que aparecen a continuación.

De principio a fin.

Absolutamente TODAS.

Tratándose de mí, y con la barba de geek que tengo, no podía ser de otra manera.

No las habría incluido si no fuese cierto.

JAVA

JAVA

Nivel: Experto

Soy un mago con Java, posiblemente el número 3, o quizás el 4, de todo el planeta. Domino las versiones 8, 17, 21 y 32. Aún recuerdo cuando, siendo yo niño, James Goslin me pedía consejo. Qué tiempos aquellos.

SCALA

SCALA

Nivel: Alto

Scala quería reunir la programación orientada a objetos y la funcional. Lo consiguió tan bien que ahora cada desarrollador parece escribir su propio idioma y todos aseguran que su estilo es el verdadero Scala idiomático.

KOTLIN

KOTLIN

Nivel: Alto

Cada vez que alguien presume de usar Kotlin, tarda exactamente treinta segundos en mencionar que Java ya no está a la altura. Curiosamente, luego despliega sobre la misma JVM, usa las mismas bibliotecas y cobra exactamente el mismo salario basura.

GO

GO

Nivel: Alto

Go es sencillo. Como si faltara la mitad del lenguaje, o al menos es esa sensación.

GROOVY

GROOVY

Nivel: Alto

Relájate un poco con Groovy. Escribe menos código que con Java sintiéndote un genio. Y crea tu propio dialecto para fastidiar a los demás y que nadie entienda nada, al fin y al cabo los demás también lo hacen.

PYTHON

PYTHON

Nivel: Alto

Python es perfecto para escribir cualquier cosa rápidamente. También para que alguien convierta un script de veinte líneas en el corazón de la empresa. Pasado un tiempo, alguien pregunta: «¿por qué va todo tan lento?»

RUST

RUST

Nivel: Alto

Rust no te deja cometer errores de memoria. Tampoco te deja compilar hasta que demuestres ante un tribunal que cada referencia tiene motivos legales para existir. Después de acabar una compilación lloras de la emoción.

C

C

Nivel: Alto

Dicen que programar en C te hace mejor ingeniero. Es verdad. Después de pelearte con punteros, cualquier lenguaje moderno parece un juguete. Y quienes usan recolector de basura son unos MEDIOOCREESS MORTAALEESS JOJOJOJOJO.

C++

C++

Nivel: Alto

C++ te promete control absoluto del hardware. Y cumple. También controla tu tiempo libre... tu paciencia... y tus ganas de vivir cuando un error de memoria aparece dos semanas después de haber escrito el código.

PHP

PHP

Nivel: Alto

Cada pocos años alguien anuncia que PHP ha muerto. PHP responde desplegando otro millón de páginas web mientras los adeptos del resto de lenguajes siguen discutiendo cuál será el framework de moda el próximo trimestre.

NODE JS

NODE JS

Nivel: Alto

Nada transmite más optimismo que instalar mil doscientas dependencias para imprimir «Hola, mundo». Luego una de ellas desaparece de internet y el proyecto entero entra en crisis existencial. Pero eh, es un sistema muy dinámico.

JAKARTA EE

JAKARTA EE

Nivel: Alto

Jakarta EE no sigue vivo porque sea bonito. Sigue vivo porque apagarlo diez minutos costaría a un banco o a una empresa más dinero de lo que el consejo de administración se gasta en p. en un año.

SPRING

SPRING

Nivel: Alto

Soy muy bueno con Spring. Mis beans germinan y florecen solos, mis inyecciones de dependencia vienen con café incluido y hasta los @Autowired me saludan por mi nombre. Spring Boot me pidió que le enseñara a arrancar.

QUARKUS

QUARKUS

Nivel: Alto

Arranca en tan poco tiempo que al leer el log de inicio te da la sensación de estar leyendo un spoiler.

MICRONAUT

MICRONAUT

Nivel: Buenísimo

Elegí Micronaut porque odio desperdiciar recursos. Luego abrí Chrome y perdí toda autoridad moral.

NODE JS

NODE JS

Nivel: Muy bueno

Dropwizard tiene fama de sencillo. Es verdad. Lo complicado es convencer al resto del equipo de que no necesitan instalar otros cuarenta frameworks encima.

DJANGO

DJANGO

Nivel: Erudito

Django es tan completo que algunos lo llaman monolítico. Los mismos que construyen un microservicio con dieciséis librerías obligatorias, que después ni arranca.

FLASK

FLASK

Nivel: Alto

Elegimos Flask porque solo instalas lo que necesitas. Al cabo de un tiempo nuestra empresa aplicó la misma filosofía al equipo y decidió que tampoco necesitaba programadores.

FAST API

FAST API

Nivel: Estupendo

FastAPI genera documentación automáticamente. Ahora los clientes saben exactamente qué endpoint devuelve errores. Teniendo en cuenta que la mitad de las empresas se dedican a estafar a la otra mitad, ¿esto es bueno o malo?

EXPRESS JS

EXPRESS JS

Nivel: Bueno

Express.js es tan minimalista que el primer trabajo consiste en instalar todo lo que no trae. La sencillez también puede ser agotadora.

NEST JS

NEST JS

Nivel: Extraordinario

NestJS pone orden en JavaScript. Algunos desarrolladores llevan años intentando devolver el desorden por orgullo profesional.

KOA

KOA

Nivel: Muy alto

Koa es muy limpio. Tan limpio que el primer día echas de menos la mitad de las herramientas y el segundo ya las estás instalando otra vez.

LARAVEL

LARAVEL

Nivel: Bueno

Con Laravel hemos podido automatizar muchas tareas repetitivas. La dirección ha celebrado el ahorro. Los empleados hemos empezado a actualizar el currículum con el mismo entusiasmo.

SYMFONY

SYMFONY

Nivel: Magnífico

Un proyecto Symfony nuevo transmite paz. Un proyecto Symfony con diez años transmite historia. Uno con diez años y cinco consultoras transmite auténtico terror arqueológico.

POSTGRESQL

POSTGRESQL

Nivel: Extraordinario

Hay quien dice que PostgreSQL quiere ser una base de datos relacional y una documental al mismo tiempo. Yo lo llamo ambición. Si yo hiciera tantas cosas bien a la vez, también me volvería un poco chulo.

ORACLE DATABASE

ORACLE DATABASE

Nivel: Excepcional

Una vez me invitaron a dar una charla sobre bases de datos y acabé explicando, durante cuarenta minutos, por qué una clave foránea es mucho más estable que la mayoría de los matrimonios. Hubo dos divorcios durante el descanso. No puedo demostrar que fuese culpa mía, pero tampoco voy a negarlo.

IBM DB2

IBM DB2

Nivel: Meraviglioso

IBM DB2 tiene tanto historial que, cuando abro la documentación, encuentro referencias a tecnologías que ya estudian los arqueólogos. Y, aun así, sigue dando menos problemas que muchos proyectos nuevos.

MYSQL

MYSQL

Nivel: Abrumador

Me encanta MySQL. Es como ese compañero que siempre dice: «Tranquilo, esto funciona». Y funciona... hasta que el cliente decide multiplicar el número de usuarios por cien un viernes a las seis de la tarde.

MARIADB

MARIADB

Nivel: Fenómeno

Un día alguien dijo que MariaDB era igual que MySQL. Se hizo un silencio incómodo. Desde entonces, en las reuniones evitamos hablar de política, religión y motores de bases de datos derivados.

MS SQL SERVER

MS SQL SERVER

Nivel: C1

Siempre confío en SQL Server. Si algo falla, abre SQL Server Management Studio, pulsa cinco veces en «Refresh» y mira muy serio la pantalla. El problema no desaparece, pero los demás creen que sabes exactamente lo que haces.

MONGODB

MONGODB

Nivel: Fantástico

Repite conmigo: las tablas son para los débiles. Recuerdo una vez que un compañero buscaba un documento y me dijo: «Esto no puede estar bien organizado». Le respondí: «Claro que no, ¡es MongoDB!». Nos reímos los dos una barbaridad. Aunque él todavía está buscando el documento.

COUCHDB

COUCHDB

Nivel: Fenomenal

Mi favorita. La domino sin levantarme del sofá. Cuando alguien me pregunta dónde está el esquema, le miro fijamente unos segundos y cambio de tema. Una vez resolví una incidencia relacionada con esta base, pero luego me di cuenta de que la incidencia era que me había quedado dormido.

CASSANDRA

CASSANDRA

Nivel: Superlativo

Cassandra presume de que ningún nodo es imprescindible. Después de configurar un clúster entero, descubrí que el único imprescindible era el compañero que entendía la configuración. Desde entonces nadie se atreve a darle vacaciones.

IGNITE

IGNITE

Nivel: Bueno

Apache Ignite puede ser base de datos, caché, motor SQL y plataforma distribuida. Después de leer la documentación, la única duda que quedaba era qué problema intentaba resolver antes de resolverlos todos.

HAZELCAST

HAZELCAST

Nivel: Extraordinario

Hazelcast siempre aparece en las reuniones con la promesa de repartir los datos entre todos los servidores. Curiosamente, repartir la documentación entre los desarrolladores nunca resulta tan sencillo.

REDIS

REDIS

Nivel: Astonishing

Redis demuestra que la velocidad lo es todo. El problema llega cuando la RAM empieza a parecer un apartamento en el centro: demasiado pequeña para todas las cosas que hemos decidido guardar.

MEMCACHED

MEMCACHED

Nivel: De otro mundo

Memcached hace milagros con el rendimiento. Esto queda demostrado en el mismo momento en que alguien reinicia el servidor y descubre que la estrategia de persistencia se apoyaba principalmente en tener mucha fe.

VOLTDB

VOLTDB

Nivel: Sublime

VoltDB procesa transacciones a una velocidad increíble. La única operación realmente lenta consiste en convencer al cliente de que necesita una base de datos capaz de procesar millones por segundo.

H2 DATABASE

H2 DATABASE

Nivel: Exquisito

«En mi ordenador funciona perfectamente». Claro, llevas tres meses probando contra H2. Luego llega Oracle a producción y descubre que vuestra relación era puramente platónica.

SQLALCHEMY

SQLALCHEMY

Nivel: Perturbador

SQLAlchemy genera consultas estupendas. El director financiero sigue convencido de que el verdadero cuello de botella era comprar servidores con más de cuatro gigas de RAM.

MINIO

MINIO

Nivel: Asombroso

MinIO es Amazon S3 sin la factura mensual. Una frase capaz de emocionar a cualquier director financiero casi tanto como un despido masivo.

TOMCAT

TOMCAT

Nivel: Milagroso

—¿Usas Tomcat?

—Sí.

—¿Y no quieres algo más moderno?

—No. También sigo usando papel higiénico. Hay tecnologías tan buenas que no necesitan reinventarse cada seis meses para parecer inteligentes.

JETTY

JETTY

Nivel: Alto

Jetty presume de ser ligero. Tan ligero que, cuando lo arrancas, te preguntas si de verdad habrá arrancado o se habrá ido educadamente y sin hacer ruido para no molestar.

UNDERTOW

UNDERTOW

Nivel: Muy alto

Undertow va tan rápido que algunos desarrolladores creen que no hace nada. No, simplemente está ocupado trabajando mientras tu framework favorito sigue generando clases inútiles.

WILDFLY

WILDFLY

Nivel: Altísimo

Me encanta WildFly. Arrancarlo cada mañana cuenta como entrenamiento cardiovascular. Mientras carga, hago café, desayuno, reviso el correo y aún me sobra tiempo para arrepentirme.

GLASSFISH

GLASSFISH

Nivel: Te doy un revolcón

GlassFish es ese ex que jura haber cambiado. Le das otra oportunidad, sonríe, funciona dos días... y enseguida recuerdas exactamente por qué rompiste la relación.

PAYARA

PAYARA

Nivel: Alto

Payara es GlassFish después de ir al gimnasio, dejar las drogas y encontrar un trabajo estable. La familia está orgullosa, aunque todavía arrastra algún trauma de juventud.

WEBLOGIC

WEBLOGIC

Nivel: Supremo

WebLogic cuesta una fortuna, así que cuando consigo arrancarlo sin errores me siento obligado a comportarme como un consultor sénior. Si has desplegado en Tomcat... pues qué tierno. Ya crecerás.

WEBSPHERE

WEBSPHERE

Nivel: Alto

Cuando alguien dice que Kubernetes lo resuelve todo, le enseño una instalación histórica de WebSphere. Si sobrevive a esa experiencia, entonces hablamos de alta disponibilidad.

JBOSS EAP

JBOSS EAP

Nivel: Alto

Si nunca has actualizado JBoss EAP en producción con medio banco pendiente, no me expliques lo que significa vivir bajo presión. Cambiar el fondo de VS Code no cuenta.

NETTY

NETTY

Nivel: Altísimo

Netty mueve millones de conexiones con una elegancia insultante. Luego llega un compañero, mete un Thread.sleep() donde no debe y consigue que parezca PHP ejecutándose en un disquete. Cuando alguien presume de rendimiento y me habla de «miles» de conexiones simultáneas, automáticamente dejo de escuchar. Netty tampoco perdería el tiempo.

GUNICORN

GUNICORN

Nivel: You're simply the best

Desplegar con Gunicorn es fácil. Convencer al equipo de que reiniciar el servidor no arregla el código basura ya requiere bastante más infraestructura.

HYPERCORN

HYPERCORN

Nivel: Ensordecedor

Me encanta la gente que instalan Hypercorn esperando multiplicar el rendimiento y luego mantienen exactamente el mismo código de mierda que hace cinco llamadas síncronas para obtener un JSON.

RABBIT MQ

RABBIT MQ

Nivel: Extraordinario

Me encanta RabbitMQ. Es el único conejo capaz de transportar millones de mensajes sin cagarse en la alfombra. Bastante más educado que el de mi vecino.

ACTIVE MQ

ACTIVE MQ

Nivel: Extraordinario

Mi jefe quería sustituir ActiveMQ por algo moderno. Le pregunté si también quería cambiar el ascensor por una tirolina. Desde entonces no hablamos de arquitectura.

APACHE PULSAR

APACHE PULSAR

Nivel: Maravilloso

Pulsar puede mover millones de mensajes. Ahora solo necesitas conseguir que tu equipo sea capaz de mover alguna tarea al estado «terminada».

KAFKA

KAFKA

Nivel: Superior

Mi arquitectura tiene Kafka, eventos, particiones y replicación. El programa imprime «Hola, mundo». Pero lo hace con una escalabilidad que asusta.

NATS

NATS

Nivel: Top

Elegimos NATS porque queríamos simplicidad. El arquitecto estuvo tres semanas intentando complicarlo.

CELERY

CELERY

Nivel: Muy bueno, hablado y escrito

Desde que la empresa descubrió Celery y decidió que todo podía hacerse «en segundo plano», las subidas salariales han estado en cola ya cinco años.

DOCKER

DOCKER

Nivel: Alto

Mi mayor habilidad como programador es escribir un Dockerfile de doscientas líneas para ejecutar un programa que antes arrancaba con un doble clic.

DOCKER COMPOSE

DOCKER COMPOSE

Nivel: Beaucoup

Con Docker Compose levantas quince servicios con un comando. También puedes tirar quince servicios con otro. Puedes entretenerte descubriendo cuál de todos los servicios es el causante.

KUBERNETES

KUBERNETES

Nivel: Er mejón

Mi aplicación necesita un servidor. Mi arquitecto propone Kubernetes. Es como comprarte un aeropuerto porque tu primo te pidió que le llevaras al pueblo.

HELM

HELM

Nivel: Timonel

Helm simplifica desplegar Kubernetes. Lo demuestra envolviendo treinta archivos YAML dentro de cuarenta plantillas. Cuando algo falla, rezas para que el mensaje de error tenga más de cuatro palabras.

OPENSHIFT

OPENSHIFT

Nivel: Increíble

OpenShift es Kubernetes con cinturón, tirantes y vigilancia parental. Todo está protegido... especialmente de ti. Si consigues permisos para hacer algo, probablemente ya no recuerdes por qué querías hacerlo.

JENKINS

JENKINS

Nivel: Mayordomo

Algunos dicen que Jenkins tiene demasiados plugins. Pero es que yo no quiero un servidor de integración continua, yo quiero a Frankenstein con interfaz web.

NEXUS

NEXUS

Nivel: Muy alto, demostrable

Nexus guarda todos nuestros artefactos. También conserva dependencias que nadie recuerda haber usado desde 2014.

JFROG

JFROG

Nivel: Anfibio

Artifactory almacena todos los binarios. El nuestro pesa medio terabyte. Nuestro proyecto pesa veinte megas. La nostalgia ocupa muchísimo espacio.

HARBOR

HARBOR

Nivel: Alto

Harbor guarda todas tus imágenes Docker. Suele tener más imágenes antiguas que el álbum de fotos de tu abuela.

PODMAN

PODMAN

Nivel: Máximo

Cuando alguien pregunta por Docker, respondo Podman. No porque sea siempre mejor, sino porque me gusta ver cómo empieza otra discusión de dos horas.

CONTAINERD

CONTAINERD

Nivel: Máximo

La mayoría habla de Docker. Los que conocen Containerd suelen hacerlo con esa sonrisa de superioridad reservada para quien acaba de descubrir cómo funciona realmente el truco.

APACHE CAMEL

APACHE CAMEL

Nivel: Triple joroba

Mi integración con Apache Camel funciona. Nadie sabe por qué, así que hemos decidido no tocar absolutamente nada.

APACHE HTTP SERVER

APACHE HTTP SERVER

Nivel: Extraordinario

Mi servidor sigue usando Apache. Algunos lo llaman antiguo. Yo lo llamo «tecnología que sobrevive a las modas y a tres directores técnicos».

NGINX

NGINX

Nivel: Milagroso

Nginx sirve miles de peticiones por segundo. Tu aplicación responde una cada cinco segundos. Al menos uno de los dos está haciendo bien su trabajo.

HAPROXY

HAPROXY

Nivel: Alto

HAProxy reparte la carga entre todos los servidores. Qué detalle. Así ninguno se siente discriminado cuando tu código los tumba simultáneamente.

TRAEFIK PROXY

TRAEFIK PROXY

Nivel: Extraordinario

Traefik detecta servicios automáticamente. Es fantástico. Descubre microservicios que ni el equipo recordaba haber desplegado.

ENVOY

ENVOY

Nivel: Alto

Envoy sabe exactamente a qué servicio enviar cada petición. Ojalá Recursos Humanos tuviera la misma habilidad.

ISTIO

ISTIO

Nivel: Alto

Instalamos Istio para simplificar la infraestructura. Fue tan efectivo que ahora necesitamos tres ingenieros solo para entender Istio.

LINKERD

LINKERD

Nivel: De fantasía pura

Elegimos Linkerd porque queríamos un service mesh ligero. Linkerd demuestra que, a veces, menos complejidad también cuenta como una funcionalidad.

HASHICORP CONSUL

HASHICORP CONSUL

Nivel: Alto

Consul descubre automáticamente los servicios. Mi compañero sigue preguntándome dónde está la API. Hay límites para cualquier tecnología.

ZOOKEEPER

ZOOKEEPER

Nivel: Encargado

Cada vez que alguien pregunta para qué sirve ZooKeeper, un administrador suspira profundamente y abre otra documentación de Kafka.

ETCD

ETCD

Nivel: El jefe

Distributed /etc guarda la configuración crítica del clúster. Nadie piensa en él hasta que desaparece. Entonces descubres que Kubernetes, en realidad, era un castillo inflable sostenido por un fichero diminuto.

KONG

KONG

Nivel: Gran simio

Con Kong controlas todas tus APIs. Ahora solo necesitas explicarle a ese compañero tan empático, que parece pensar que su código es mejor que el de los demás, que deje de tocar los huevos cambiando las APIs a capricho y sin previo aviso solo porque, según él, ha tenido que optimizarlas porque tú las habías hecho mal y él es el que sabe hacerlas bien. Amén.

APACHE APISIX

APACHE APISIX

Nivel: Erudito

Algunos cambian de API Gateway cada dos años buscando más rendimiento. Es curioso que, año tras año, sigan devolviendo el mismo JSON de veinte megas para una lista con tres clientes.

MAVEN

MAVEN

Nivel: Erudito

Nada une más a un equipo que descubrir que el repositorio Maven acaba de dejar de responder cinco minutos antes del despliegue.

GRADLE

GRADLE

Nivel: No words to describe

Gradle descarga Internet entero, genera cachés místicas y ejecuta tareas con nombres que parecen hechizos. Cambias una línea y recompila el universo. Debe de tener alguna explicación científica.

NPM

NPM

Nivel: Fenomenal

Cuando veo un node_modules de dos gigas entiendo perfectamente por qué algunos desarrolladores creen que comprar más RAM es una estrategia de arquitectura.

YARN

YARN

Nivel: Fetén

Hubo una época en la que decir «yo uso Yarn» te hacía parecer un iluminado. Entonces npm copió media idea de yarn, y encima apareció pnpm para arreglar a los dos. Ahora todos hablan de pnpm. El ego del desarrollador caduca sorprendentemente rápido, y donde dije digo...

PNPM

PNPM

Nivel: Perita

Los usuarios de npm dicen que pnpm es raro. Curioso. Para mí lo raro era descargar quinientas copias idénticas de la misma librería y llamarlo diseño.

POETRY

POETRY

Nivel: Joer, el mejor

Poetry hace que gestionar entornos virtuales sea mucho más limpio. Lástima que no pueda gestionar también toda la mierda que el desarrollador mantiene en el proyecto.

APACHE CXF

APACHE CXF

Nivel: Muy alto

Apache CXF demuestra que SOAP sigue vivo. Igual que las cucarachas: puedes admirar su resistencia, pero no tienes por qué querer vivir con ellas.

KEYCLOAK

KEYCLOAK

Nivel: Mago

Mi aplicación tiene autenticación robusta gracias a Keycloak. El usuario sigue usando «123456» como contraseña. Tampoco se puede hacer magia.

HASHICORP VAULT

HASHICORP VAULT

Nivel: Alto

Vault guarda todos los secretos. Menos el de quién dejó la contraseña de producción escrita en un Post-it.

CHECKSTYLE

CHECKSTYLE

Nivel: Alto

Checkstyle encontró un espacio de más y decidió que el proyecto entero era indigno de compilar. El código funciona, pero la llave está dos columnas desplazada. Cuestión de prioridades.

PMD

PMD

Nivel: Alto

PMD encuentra métodos demasiado largos justo después de que pasaras dos días escribiéndolos.

SPOTBUGS

SPOTBUGS

Nivel: Spooky

SpotBugs detecta errores potenciales con una puntería admirable. También consigue que sospeches de código que lleva funcionando diez años. Nada fortalece tanto la paranoia de un desarrollador como un falso positivo elegante.

ERROR PRONE

ERROR PRONE

Nivel: Alto

Error Prone señala un posible fallo que jamás ocurrirá. Ignoras el aviso. Seis meses después ocurre exactamente ese fallo. Desde entonces finges que siempre le hiciste caso y hasta le das las gracias.

SONARQUBE

SONARQUBE

Nivel: Alto

Ayer le pasamos el Sonar al proyecto después de algún tiempo sin hacerlo. Descubrió errores de tres empleados jubilados. El puñetero guarda más rencor que mi ex.

JUNIT

JUNIT

Nivel: Superior

Escribir código sin JUnit es como hacer puenting sin revisar la cuerda. Puede salir bien... hasta que deja de salir.

MOCKITO

MOCKITO

Nivel: Superior

Si necesitas treinta mocks para probar un método, quizás el problema no sea Mockito. Quizás has diseñado una catedral para sumar dos números.

JMETER

JMETER

Nivel: Técnico Superior

JMeter lleva veinte años teniendo la misma pinta. Es una estrategia brillante: cuando alguien abre la interfaz ya está suficientemente estresado para hacer pruebas de carga de forma completamente natural.

CUCUMBER

CUCUMBER

Nivel: Extraordinario

Escribimos las pruebas en lenguaje natural para que las entendiera todo el mundo. Ahora ni los analistas entienden los escenarios, ni los desarrolladores saben qué demonios está validando ese «Dado que el usuario existe».

TESTNG

TESTNG

Nivel: Inimaginable

El proyecto tiene tres mil tests TestNG. Fallan dos. Buena suerte encontrando cuáles, porque el informe parece que lo ha escrito el becario con resaca y ganas de tocar los huevos.

ARQUILLIAN

ARQUILLIAN

Nivel: El máquina

Cuando un junior pregunta por qué usamos Arquillian, los sénior se quedan mirando al infinito. Al cabo de un rato, alguien responde: «Porque ya estaba».

WIREMOCK

WIREMOCK

Nivel: Excepcional

Cuando alguien dice «eso solo falla en producción», sonrío y saco WireMock. Después el silencio suele durar bastante más que la discusión.

REST ASSURED

REST ASSURED

Nivel: Torero

REST Assured comprueba tu API sin piedad. Lo malo es que luego ya no puedes culpar al frontend. To lo bueno se acaba.

KARATE

KARATE

Nivel: Señor Miyagui

Karate acerca negocio y desarrollo, y hasta el gestor del proyecto entiende los escenarios. Estupendo. Ahora ya puede meter la nariz hasta el fondo otro más que no tiene ni puta idea del código.

GATLING

GATLING

Nivel: Ametralladora

Gatling genera miles de usuarios simultáneos. Tu aplicación aguanta cinco. El informe: precioso, lleno de gráficas. La reunión: inolvidable.

PYTEST

PYTEST

Nivel: Magnífico

Pytest hace que escribir pruebas sea tan sencillo que ya no queda ninguna excusa. Habrá que inventar algunas nuevas.

OPENAPI

OPENAPI

Nivel: Fabuloso

Gracias a OpenAPI, frontend y backend hablan el mismo idioma. Luego llega el cliente con un Excel y consigue que ninguno de los dos lo entienda.

SWAGGER

SWAGGER

Nivel: Alto

Hay equipos que mantienen Swagger perfectamente actualizado. Otros lo usan como literatura fantástica: cualquier parecido con la API real es pura coincidencia.

ELASTICSEARCH

ELASTICSEARCH

Nivel: Altísimo

Elasticsearch encuentra cualquier cosa. Excepto el documento que necesitas cuando el cliente está presente en la reunión.

OPENSEARCH

OPENSEARCH

Nivel: Más alto

Antes usábamos Elasticsearch. Ahora OpenSearch. Las búsquedas son iguales, pero las discusiones de postureo en LinkedIn son muchísimo más largas.

PROMETHEUS

PROMETHEUS

Nivel: Más alto todavía

Prometheus no arregla problemas. Se limita a avisarte con una precisión humillante de que los tienes.

GRAFANA

GRAFANA

Nivel: Monstruo

Grafana convierte un desastre operativo en un conjunto de gráficas tan bonito que casi dan ganas de provocar otra caída. Mi jefe no entiende las métricas, pero adora Grafana. Es la herramienta ideal para que aquellos que realmente no aportan nada se entretengan y no molesten al artista.

FLUENTBIT

FLUENTBIT

Nivel: Experto

Fluent Bit consume pocos recursos. Tan pocos que parece pedir perdón cada vez que procesa un log. Luego descubres que olvidaste una etiqueta y llevas una semana enviando los registros al limbo.

FLUENTD

FLUENTD

Nivel: Bueno

Fluentd puede transformar cualquier log en cualquier formato. Después de trescientas líneas de configuración ya ni recuerdas cuál era el formato original. Pero queda profesional decir que es un pipeline de observabilidad.

GRAFANA LOKI

GRAFANA LOKI

Nivel: Bastante bueno

Loki prometía indexar menos para ahorrar costes. Pero tu equipo no es muy bueno con las etiquetas. Perfecto. Ahora ahorrar tiempo buscando un log concreto ya es otra historia. El error está ahí, escondido entre millones de líneas, disfrutando de su anonimato.

LOGSTASH

LOGSTASH

Nivel: Un poquito menos bueno

Gracias a Logstash, ahora ya tienes todos los errores centralizados. Qué cómodo resulta contemplar el desastre desde un único panel, ¿verdad?

KIBANA

KIBANA

Nivel: Buenísimo

Kibana demuestra una verdad universal: si el error aparece en un dashboard con filtros y colores, parece muchísimo más profesional.

JAEGER

JAEGER

Nivel: Senior

Gracias a Jaeger descubrí que una petición sencilla visitaba más servicios que yo de vacaciones.

ZIPKIN

ZIPKIN

Nivel: Senior

Zipkin dibuja el recorrido de cada petición. Es como Google Maps, pero todas las rutas terminan en un timeout.

OPEN TELEMETRY

OPEN TELEMETRY

Nivel: Sapiens

OpenTelemetry recopila trazas, métricas y logs. Luego necesitas media plataforma adicional para entenderlas. Has instrumentado hasta la tostadora, pero el bug sigue escondido exactamente donde estaba antes.

LIQUIBASE

LIQUIBASE

Nivel: Erudito

Antes modificábamos tablas a mano. Ahora usamos Liquibase. El desastre tarda un poco más, pero queda mucho mejor documentado.

APACHE HADOOP

APACHE HADOOP

Nivel: Sabio

Hay directivos que creen que instalar Hadoop convierte automáticamente los datos en inteligencia. Si fuera tan fácil, Excel habría conquistado el mundo hace veinte años. Yo por mi parte, cuando alguien presume de tener un clúster Hadoop gigantesco, siempre pregunto lo mismo: «¿Y exactamente qué problema está resolviendo?». El silencio suele procesarse bastante rápido.

APACHE SPARK

APACHE SPARK

Nivel: Brujería pura

Spark procesa terabytes en minutos. Luego llega un analista con un SELECT * y consigue que todo el clúster se plantee seriamente su propósito en la vida.

APACHE FLINK

APACHE FLINK

Nivel: Magician

Con Flink puedes reaccionar a un evento en milisegundos. La empresa responde al informe generado por Flink entre tres y cuatro meses después.

APACHE STORM

APACHE STORM

Nivel: Extraordinario

Storm mueve millones de eventos por segundo. El proyecto sigue parado porque falta una firma.

APACHE BEAM

APACHE BEAM

Nivel: De la hostia

Hay quien instala Apache Beam porque necesita portabilidad. Luego despliega siempre en el mismo sitio. Pero queda muy elegante decir que la arquitectura está preparada para el futuro.

HTML

HTML

Nivel: Fabuloso

Domino HTML desde que las etiquetas todavía tenían complejo de párrafo. Mis etiquetas están tan bien estructuradas que han venido a estudiarlas hasta de Zara. El navegador abre mis páginas y se pone firme por respeto.

CSS

CSS

Nivel: Extraordinario

Auténtica brujería visual: mis flex, grid y media queries obedecen sin discutir. He conseguido que Internet Explorer casi parezca un navegador moderno. Mis estilos tienen más capas que una cebolla con doctorado.

JAVASCRIPT

JAVASCRIPT

Nivel: Sorprendente

Manejo JavaScript con tanta soltura que el this me entiende perfectamente, las promesas se cumplen y los callbacks vuelven puntuales. Mis funciones son tan elegantes que hasta los bugs piden convertirse en funcionalidades.

TYPESCRIPT

TYPESCRIPT

Nivel: Admirable

TypeScript dejó de intimidarme hace mucho tiempo. Una vez corregí un tipo delante de todo el equipo y el Scrum Master se levantó, saltando como una loca, a aplaudirme. «¡Bravo! ¡¡bravooo!! ¡¡torerooo!!»

ANGULAS

ANGULAS

Nivel: Chupadedos

Con Angulas me manejo tan bien que, cuando entré en mi última empresa, los arquitectos empezaron a tomar apuntes, y al tercer día ya me ponían apodos. Pero cariñosos. Realmente es una cuestión de respeto profesional. «El de la barba», «el comensal», «el señor que vino a comer», «el arguiñano»... ¡Mmm! Con mucho ajito.

REACT

REACT

Nivel: Experto

React no supone problema. Me preocupa tan poco que, cuando alguien presume delante de mí de saber cómo funciona el useEffect, le doy una palmadita en el hombro y le digo: «Ya llegarás». Algunos se enfadan. Otros me piden que les firme el portátil.

NEXT JS

NEXT JS

Nivel: Brutal

Mi mayor logro con Next.js ha sido descubrir que borrar la carpeta .next soluciona más problemas de los que yo mismo genero. Desde entonces lo llamo «compilación incremental manual».

NUXT JS

NUXT JS

Nivel: Fantástico

Siempre digo que Nuxt.js es claramente superior a Next.js. Nunca he terminado un proyecto con ninguno de los dos, así que mi opinión es completamente imparcial.

VUE

VUE

Nivel: Alto

Mi conocimiento de Vue es muy profundo, como si lo hubiese hecho yo mismo, y por eso lo defiendo con auténtica pasión. Cada vez que alguien pregunta por qué, cambio de tema y empiezo a hablar de lo limpio que queda un v-for.

EMBER

EMBER

Nivel: C1

Ember lleva tantos años funcionando que merece todo mi respeto. Mi experiencia con él consiste en haber leído toda la documentación antes de decidir usar React.

GATSBY

GATSBY

Nivel: C2

Siempre recomiendo Gatsby para cualquier proyecto. Luego el cliente menciona contenido dinámico y empiezo a explicar por qué, en realidad, Next.js también tiene mucho potencial.

AURELIA

AURELIA

Nivel: Asombroso

Estoy convencido de que Aurelia es el futuro del desarrollo web. El único problema que me surge es encontrar otro desarrollador con quien debatirlo.

SVELTE

SVELTE

Nivel: Impresionante

Svelte compila todo de maravilla. Mi aplicación sigue teniendo errores, pero al menos ahora se generan mucho más rápido.

SVELTEKIT

SVELTEKIT

Nivel: Indiscutible

SvelteKit hace muchas cosas de manera automática. Mi aplicación también. Uno de estos días conseguiré que SvelteKit y mi aplicación coincidan en estas cosas.

BACKBONE JS

BACKBONE JS

Nivel: Grande

Conozco Backbone.js desde sus mejores tiempos. Esto hace que suela evitar explicar cuándo fueron exactamente esos mejores tiempos.

ASTRO

ASTRO

Nivel: Tremendo

Astro permite mezclar React, Vue, Svelte y otros frameworks en el mismo proyecto. Exactamente la flexibilidad que necesitas para que tu código sea inmantenible.

FRAMEWORK7

FRAMEWORK7

Nivel: Bueno

Otro framework de nicho. Lo inventó un ruso que se llama Vladimir nosequé, y por lo visto es el único que lo mantiene.

FRESH

FRESH

Nivel: Bueno

Muchos frameworks envían al navegador un gran paquete con Javascript. Fresh, sin embargo, empieza por enviar «cero» Javascript, y envía solo HTML. Para eso igual te sirve tu abuela con una pistola etiquetadora.

IONIC

IONIC

Nivel: Grandioso

¿Que no hay plugin para lo que quieres hacer? ¿Y a qué esperas pa ponerte a hacerlo tú mismo? No seas egoísta y dale al mundo algo gratis, las grandes corporaciones te lo agradecerán con una sesión de team building, una dinámica de grupo de 80 personas, o quizás una yincana que aburre a las ovejas.

MARKO

MARKO

Nivel: De diez

Optimizado para renderizado de páginas del lado del servidor. ¿Para qué vas a usar un sitio estático normal de toda la vida, cuando puedes liarla más poniendo al servidor a hacer cosas que no necesita realmente hacer?

MITHRIL JS

MITHRIL JS

Nivel: MATRÍCULA DE HONOOORRRRR

Madre del amor hermoso. ¿Alguien sabe qué coño es esto? ¿Los Juegos Semiolímpicos, o quizás alguna marca china de coches?

ONSEN UI

ONSEN UI

Nivel: Extraordinario

¡Que alguien rompa ya la lápida de este nicho, que se están asfixiando los desarrolladores dentro!

QWIK

QWIK

Nivel: Alto

«Con lo grande que es su comunidad, la gran cantidad de paquetes que tiene, y lo fácil que es de aprender y de depurar, es una de mis primeras opciones»... y entonces me desperté.

REMIX

REMIX

Nivel: Fabuloso

El sitio web es super chulo. Cuando sepa algo más ya lo cuento.

RIOT JS

RIOT JS

Nivel: Milagroso

Es fácil defender su uso cuando casi nadie en la reunión lo ha usado y puedes inventarte tranquilamente la mitad de las ventajas.

STENCIL

STENCIL

Nivel: Asombroso

Cuando digo que utilizo Stencil, muchos asienten con respeto. Sospecho que ninguno sabe exactamente qué hace, pero tampoco pienso estropear un momento tan bonito.

ALPINE JS

ALPINE JS

Nivel: Genial

Alpine.js prometía sustituir todo mi JavaScript. Lo consiguió durante tres días. Al cuarto ya había escrito seiscientas líneas intentando evitar escribir JavaScript.

SOLID JS

SOLID JS

Nivel: Alto

Aseguro que SolidJS supera a React en rendimiento. Mi única prueba consiste en una calculadora que nunca llegó a producción, pero los benchmarks emocionales me dan toda la razón.

INFERNO

INFERNO

Nivel: Alto

Elegí Inferno porque quería la máxima velocidad. Después descubrí que el cuello de botella seguía siendo el mismo de siempre: el humano escribiendo código.

KNOCKOUT

KNOCKOUT

Nivel: Alto

Siempre digo que Knockout.js estaba muy adelantado a su época. Es una frase fantástica que me evita tener que explicar por qué sigo utilizándolo.

LIT

LIT

Nivel: Alto

Llevo años diciendo que los Web Components son el futuro. Pero el futuro tiene la mala costumbre de llegar bastante más despacio que mis presentaciones de PowerPoint.

PREACT

PREACT

Nivel: Nobel

Preact demuestra que React tiene demasiado código. Mi aplicación también tiene demasiado código, pero ha sido el becario, que lo han dejado tocar.

HYPERAPP

HYPERAPP

Nivel: Oscar

Que Hyperapp sea minimalista no implica necesariamente que tu repositorio también vaya a acabar siéndolo.

ANGULAR MATERIAL

ANGULAR MATERIAL

Nivel: Turing

Domino Angular Material hasta el último detalle. Cuando un componente no hace lo que espero, concluyo que el problema es filosófico, no técnico.

CLARITY

CLARITY

Nivel: Bueno

Hay quien dice que tiene un estilo visual rígido y unos componentes de estilo un tanto corporativo o administrativo. Añádase una pizca de positividad tóxica, otra de postureo, un poco de teatro y el cincuenta por ciento de perfiles falsos, y ya tienes la próxima web comercial de Linkedin.

KENDO UI

KENDO UI

Nivel: Alto

Es de pago y el código está ofuscado, así que no le toques los huevos a ver si te va a meter una hostia con el sable de bambú.

NG-ZORRO

NG-ZORRO

Nivel: Bueno

¿NG zorro? NG CHINORRO, que la mitad de las guías están en chino.

PRIMENG

PRIMENG

Nivel: Mejor

Los frecuentes cambios en el CSS y en los temas rompen el código y obligan a reestructurarlo con frecuencia. Vamos, que dan unas ganas de actualizar...

MATERIAL UI

MATERIAL UI

Nivel: Bueno pero no tanto

Material UI tiene cientos de componentes. Yo utilizo siempre los mismos cuatro, pero con una seguridad que hace pensar que el resto son completamente innecesarios.

ANT DESIGN

ANT DESIGN

Nivel: Bueno

Trae tantos componentes que el proyecto parece terminado el primer día. El segundo descubres que quieres cambiar el aspecto de uno. El tercero ya aceptas que tu aplicación tendrá exactamente el mismo diseño que las otras veinte hechas con Ant Design.

HEADLESS UI

HEADLESS UI

Nivel: Medalla de oro

Libertad absoluta para diseñar cualquier interfaz. Definimos a continuación «libertad»: pasar tres días escribiendo el CSS que cualquier otra librería ya traía de serie.

MANTINE

MANTINE

Nivel: Sublime

Componentes, formularios, hooks, y media aplicación resuelta. Funciona tan bien que el arquitecto empezó a sospechar. Ahora el mayor esfuerzo consiste en convencerlo de que no hace falta cambiar otra vez de librería.

PRIMEREACT

PRIMEREACT

Nivel: Extraordinario

Tiene componentes para todo. Ahora a ver cuál de las ciento cuarenta propiedades hay que tocar para mover un icono tres píxeles hacia la izquierda.

REACT BOOTSTRAP

REACT BOOTSTRAP

Nivel: Maestro

Crea interfaces con aspecto muy moderno. Como del 2018. Teniendo en cuenta que el universo tiene 13800 millones de años... sí, es moderno... contemporáneo, vaya.

SHADCN/UI

SHADCN/UI

Nivel: Bueno

Todo el mundo dice que con shadcn/ui eres dueño de tus componentes. Es verdad. También eres dueño de actualizarlos, corregirlos, mantenerlos y explicar al becario por qué ahora hay quinientos archivos copiados dentro del proyecto.

RADIX UI

RADIX UI

Nivel: Experto

Radix UI separa comportamiento y estilos. Después paso una semana intentando que un botón parezca un botón.

CHAKRA

CHAKRA

Nivel: Experto

Chakra UI busca equilibrio entre diseño y productividad. Perdí los dos después de una semana entera intentando personalizar el tema.

TAILWIND CSS

TAILWIND CSS

Nivel: Perfecto

Tailwind CSS funciona tan bien porque lo utilizo yo. Las miles de clases que incluye ayudan, pero todos sabemos quién aporta el verdadero rendimiento.

PURE CSS

PURE CSS

Nivel: Ferpecto

Elegí Pure.css porque cualquier framework más grande habría limitado mi talento. Lo poco que ocupa la librería deja espacio suficiente para mi genialidad.

BULMA

BULMA

Nivel: Maestro Muten Roi

Puse «Bulma» en el currículum y me contrataron por el framework, pero tengo que reconocer que sigo esperando que me asignen un proyecto con Son Goku.

BOOTSTRAP

BOOTSTRAP

Nivel: Extraordinario

Crea una interfaz profesional en diez minutos. Después, arréglatelas para que el cliente no te enseñe otras cinco páginas idénticas preguntando si también las has desarrollado todas tú.

FOUNDATION

FOUNDATION

Nivel: Especial

Curva de aprendizaje regular, comunidad reducida, diseño predeterminado, sin personalización profunda. Vamos, más de lo mismo. Pero, ¿por qué no harán un framework que haga las cosas él solo? Ah, que eso decían también de la IA. Ya.

MATERIALIZE CSS

MATERIALIZE CSS

Nivel: Especialista

Elegí Materialize CSS porque quería seguir Material Design. Lo hice tan bien que mi aplicación parecía una captura de pantalla de Android de hace ocho años.

UIKIT

UIKIT

Nivel: Total

UIkit tiene componentes elegantes y una comunidad discreta. Tan discreta que, cuando busco una solución en Internet, Google insiste en enseñarme respuestas de Bootstrap como si quisiera ayudarme a tomar mejores decisiones.

SPECTRE

SPECTRE

Nivel: Absoluto

Spectre.css presume de ser ligero. Claro que pesa poco, cuando buena parte de lo que necesitas viene incluido en la categoría de «te lo haces tú mismo».

PICO CSS

PICO CSS

Nivel: Abrumador

Pico.css promete que el HTML semántico ya queda bonito sin apenas escribir clases. Es fantástico, siempre que tus clientes compartan exactamente el mismo concepto de «bonito» que los autores de Pico.css.

TACHYONS CSS

TACHYONS CSS

Nivel: Alto

Tachyons asegura que las clases pequeñas hacen el desarrollo más rápido. Puede ser. Mi HTML terminó pareciendo la contraseña del router: pa3 mt2 f5 w-100 flex justify-between items-center, pero con muchísimo menos significado.

REDUX

REDUX

Nivel: Alto

Este lo domino.

REDUX TOOLKIT

REDUX TOOLKIT

Nivel: Alto

Este también.

ZUSTAND

ZUSTAND

Nivel: Alto

Este, ni te cuento.

MOBX

MOBX

Nivel: Alto

Ay, este no. ¿Dónde está el becario?

RECOIL

RECOIL

Nivel: Dominio total

Recoil parecía el futuro del estado global en React. Después dejó de evolucionar al ritmo esperado y ahora cada reunión empieza con la misma pregunta: «¿Seguimos con Recoil o fingimos que nunca ocurrió?»

JOTAI

JOTAI

Nivel: Extraordinario

Jotai divide el estado en pequeños átomos. Mi proyecto acabó teniendo tantos que el verdadero experimento de física consistía en descubrir cuál provocaba la reacción en cadena.

XSTATE

XSTATE

Nivel: Mago

XState convierte toda la aplicación en una máquina de estados. Es una idea brillante, siempre que el equipo también disponga de otra máquina capaz de entender el diagrama resultante.

NGRX

NGRX

Nivel: Extraordinario

NgRx ofrece un flujo de datos impecable. También ofrece suficientes acciones, reducers, efectos y selectores para que cambiar el texto de un botón parezca una migración bancaria.

PINIA

PINIA

Nivel: Brujo

Pinia llegó para simplificar Vuex. Los desarrolladores de Vue la recibieron con entusiasmo. Los tutoriales de Vuex recibieron una jubilación anticipada bastante merecida.

VUEX

VUEX

Nivel: Sobrenatural

Vuex fue durante años la respuesta oficial para gestionar el estado en Vue. Hoy su principal función consiste en aparecer en proyectos heredados y recordar que el pasado nunca desaparece del todo.

AKITA

AKITA

Nivel: Bueno

Akita tiene una arquitectura muy elegante y bien organizada. El único inconveniente es explicar en cada incorporación por qué usamos Akita cuando el resto del mercado decidió aprender otra cosa.

FRAMER MOTION

FRAMER MOTION

Nivel: Extraordinario

Siempre añado animaciones con Framer Motion para mejorar la experiencia de usuario. La mayor parte de mi talento lo aplico en aumentar la duración de las animaciones hasta que parezcan deliberadamente elegantes. Si el usuario acaba mareado intentando cerrar un diálogo, considero que la experiencia ha sido inolvidable.

GSAP

GSAP

Nivel: Abysmal

Me gusta GSAP porque me gusta mucho animarlo todo, especialmente las reuniones, cuando intento explicar por qué necesitábamos una librería de cien funciones para mover un botón veinte píxeles.

MOTION ONE

MOTION ONE

Nivel: Especial

Motion One es simplicidad. Lo curioso es que he acabado dedicando más tiempo a comprobar la compatibilidad de los navegadores que a crear las animaciones.

ANIME JS

ANIME JS

Nivel: Alto

Me dijeron «usa Anime.js, verás qué elegante». Terminé con tantos efectos que los usuarios necesitan unos segundos para distinguir si la página está cargando o saludando.

LOTTIE

LOTTIE

Nivel: Alto

Lottie permite llevar animaciones de los diseñadores directamente al navegador. También permite descubrir que el diseñador considera perfectamente razonable entregar un archivo de cuarenta megabytes para un icono sonriente.

REACT-SPRING

REACT-SPRING

Nivel: Muy alto

React Spring utiliza física real para mover componentes. Todo rebota, oscila, y tarda una eternidad en quedarse quieto.

AOS

AOS

Nivel: Muy alto

AOS convierte cualquier web en una colección de apariciones espectaculares. Perfecto para esconder a un maquetador mediocre.

CHART JS

CHART JS

Nivel: Muy alto

Siempre digo que Chart.js resuelve el 95 % de las gráficas. Mi cliente, con una precisión admirable, siempre necesita exactamente el otro 5 por ciento.

D3JS

D3JS

Nivel: Dominio completo

¿Querías control total sobre las gráficas de datos? Ahora cada eje, cada etiqueta y cada línea dependen exclusivamente de tu capacidad para soportar el dolor.

ECHARTS

ECHARTS

Nivel: Cinturón negro

ECharts puede hacer cualquier tipo de gráfica. Mi único límite sigue siendo descubrir en qué nivel del objeto JSON escondieron esa opción concreta.

APEXCHARTS

APEXCHARTS

Nivel: Extraordinario

Algunos instalan ApexCharts porque quieren impresionar al cliente. Después el cliente acaba creyendo que todas las gráficas complejas tardan cinco minutos y cuestan exactamente lo mismo.

RECHARTS

RECHARTS

Nivel: Alto

Elegimos Recharts para escribir menos código. Y lo conseguimos. Pero ahora, todo el código que ahorramos ha terminado convertido en componentes auxiliares con nombres cada vez más desesperados.

VICTORY

VICTORY

Nivel: Extraordinario

Victory facilita mucho las gráficas estadísticas. Pero explicar al cliente por qué la gráfica no puede parecerse exactamente al Excel que envió sigue siendo completamente manual.

HIGHCHARTS

HIGHCHARTS

Nivel: Extraordinario

Nos pidieron que usáramos Highcharts porque hace gráficas espectaculares. Casi tan espectaculares como el cabreo del departamento financiero al descubrir el concepto de «licencia comercial» justo cuando el proyecto ya estaba terminado.

NIVO

NIVO

Nivel: Alto

Algunos dominan Nivo y lo ponen en el currículum porque queda muy moderno. Mi verdadera especialidad consiste en buscar ejemplos en GitHub a una velocidad francamente profesional.

REACT HOOK FORM

REACT HOOK FORM

Nivel: Extraordinario

Hace formularios rapidísimos. El cuello de botella siguen siendo las formas completamente innovadoras que el usuario continuamente encuentra para escribir mal su dirección de correo.

FORMIK

FORMIK

Nivel: Alto

Dicho por muchos, era la solución definitiva para formularios React. Hasta que apareció React Hook Form, claro.

ZOD

ZOD

Nivel: Alto

Empecé a usar Zod porque quería que los errores aparecieran en tiempo de desarrollo. Ahora aparecen en tiempo de desarrollo, de pruebas, de producción, y en mis pesadillas.

YUP

YUP

Nivel: Extraordinario

Yup fue durante años la reina de las validaciones. Hoy cada nuevo proyecto parece mirarla con la misma expresión con la que uno encuentra un CD-ROM en un cajón.

VEST

VEST

Nivel: Extraordinario

Con Vest validas formularios como si escribieras pruebas. Bastante tengo con las pruebas que ya me da la vida como para convertir también las validaciones en una suite de tests.

JEST

JEST

Nivel: Alto

Jest ejecuta miles de pruebas en segundos. Mi especialidad consiste en romperlas todas con un cambio de una sola línea y decir que «seguro que ya estaban fallando antes».

CARNE MECHÁ

CARNE MECHÁ

Nivel: Chupadedos

Recomendable un despliegue en slices no demasiado finas, siempre en frío. Esta es la única tecnología en la que los usuarios piden repetir después de una incidencia.

VITEST

VITEST

Nivel: Alto

Instalamos Vitest porque queríamos ahorrar tiempo. El tiempo ahorrado fue íntegramente invertido posteriormente en pelearnos con la configuración. El universo mantiene siempre el equilibrio.

CYPRESS

CYPRESS

Nivel: Extraordinario

Siempre alardeo de tener cobertura E2E. Lo que no cuento es que media suite depende de pulsar botones exactamente en el orden en que los alinearon los planetas el día que escribí las pruebas.

PLAYWRIGHT

PLAYWRIGHT

Nivel: Alto

Playwright ejecuta pruebas en todos los navegadores. Tu equipo también consigue que fallen en todos con una consistencia que delata un talento difícil de igualar.

TESTING LIBRARY

TESTING LIBRARY

Nivel: Extraordinario

Testing Library dice que pruebes la aplicación como lo haría un usuario. El problema es que mis usuarios hacen auténticas barbaridades que ni el desarrollador más cabrón sería capaz de imaginar.

JASMINE

JASMINE

Nivel: Alto

Conozco Jasmine desde hace tantos años que algunos tests ya tienen más antigüedad que los desarrolladores que intentan entenderlos. Y, sinceramente, ninguno de los dos está envejeciendo especialmente bien.

KARMA

KARMA

Nivel: Extraordinario

Karma fue durante años el compañero inseparable de Angular. Su especialidad consistía en tardar una eternidad en arrancar para luego decirte que habías olvidado un punto y coma. Cada vez que alguien propone volver a usar Karma, algún portátil comienza a hiperventilar como un reactor, y no sé si es coincidencia o un mecanismo de autodefensa del propio hardware.

VITE

VITE

Nivel: Alto

Algunos presumen de usar Vite porque «Webpack ya es historia». Cinco minutos después instalan siete plugins para que Vite termine comportándose sospechosamente parecido a Webpack.

WEBPACK

WEBPACK

Nivel: Extraordinario

Siempre digo que entiendo Webpack. Lo suficiente como para copiar una configuración de Internet, cambiar dos rutas y rezar para que siga compilando el lunes.

PARCEL

PARCEL

Nivel: Alto

Elegí Parcel porque quería olvidarme del bundler. Lo conseguí hasta que el proyecto dejó de ser pequeño y el bundler decidió acordarse de mí.

ROLLUP

ROLLUP

Nivel: Extraordinario

Llevo años copiando el mismo archivo de configuración entre proyectos con una confianza francamente admirable.

TURBOPACK

TURBOPACK

Nivel: Alto

Cada nueva versión de Turbopack promete más rendimiento. Yo actualizo inmediatamente, no porque lo necesite, sino porque me encanta participar involuntariamente en experimentos tecnológicos.

ESBUILD

ESBUILD

Nivel: Alto

Esbuild compila tan rápido que ya no tengo excusa para levantarme a por café mientras espero. Es un golpe durísimo para mi productividad cafetera.

SWC

SWC

Nivel: Alto

Siempre recomiendo SWC porque reemplaza a Babel en muchos proyectos. Luego aparece una transformación extraña y Babel entra otra vez por la puerta como si nunca se hubiera marchado.

BABEL

BABEL

Nivel: Alto

Cada vez que alguien anuncia que Babel ya no hace falta, aparece un proyecto heredado dispuesto a recordarnos que las despedidas nunca fueron sencillas.

AXIOS

AXIOS

Nivel: Alto

Axios simplifica las peticiones HTTP. Después mi equipo se encarga de volver a complicarlas con tres interceptores, dos transformadores y un compañero dando la lata con que todo debería ir con fetch.

RXJS

RXJS

Nivel: Alto

Cuando veo siete pipe() seguidos, ya no sé si estoy programando o invocando demonios.

LODASH

LODASH

Nivel: Alto

Siempre digo que JavaScript moderno ya no necesita Lodash. Cinco minutos después estoy buscando cómo se llamaba exactamente la función que usaba hace diez años.

DATE-FNS

DATE-FNS

Nivel: Alto

Hay quien cambia a date-fns para escapar de Moment.js. Y tres semanas después sigue buscando cómo sumar dos puñeteros meses sin leer veinte ejemplos distintos. Al menos el paquete pesa poco.

DAYS JS

DAYS JS

Nivel: Alto

Este lo uso mucho. De verdad.

PAPAS ALIÑÁS

PAPAS ALIÑÁS

Nivel: Chupadedos

Nuestro arquitecto dice que un buen código siempre es sencillo y nunca cambia. Lleva treinta años usando Papas Aliñás 1.0 y llama «ingredientes innecesarios» a cualquier mejora.

MOMENT JS

MOMENT JS

Nivel: Alto

Moment.js fue un gigante. Ahora cada vez que aparece en un proyecto heredado, todos lo miramos igual que a una cafetera del año 2004: funciona, pero da un poco de miedo tocarla.

SOCKET IO

SOCKET IO

Nivel: Alto

Socket.IO hace que todo ocurra en tiempo real. Los bugs también. Antes había que recargar la página para romper la aplicación. Ahora revienta delante del cliente sin perder un segundo.

APOLLO CLIENT

APOLLO CLIENT

Nivel: Alto

Apollo Client prometía resolver GraphQL elegantemente. Lo único elegante fue la cara del arquitecto cuando vio que necesitábamos un máster para entender la caché.

TANSTACK QUERY

TANSTACK QUERY

Nivel: Alto

React Query evita escribir mucho código repetitivo. El tiempo ahorrado suele invertirse en discutir si todavía se llama React Query o si hay que decir TanStack Query.

SWR

SWR

Nivel: Alto

SWR revalida automáticamente los datos. Es una función fantástica, aunque algunos compañeros todavía preguntan por qué la pantalla acaba de actualizarse «sin tocar nada».

THREE JS

THREE JS

Nivel: Alto

Three.js permite crear mundos tridimensionales increíbles. Yo sigo celebrándolo cuando consigo que la cámara apunte en la dirección correcta al primer intento.

BABYLON JS

BABYLON JS

Nivel: Alto

Babylon.js ofrece herramientas impresionantes para gráficos 3D. Mi mayor logro sigue siendo convencer a los demás de que ese objeto flotando boca abajo era una decisión artística.

PIXI JS

PIXI JS

Nivel: Alto

PixiJS renderiza gráficos 2D con una velocidad espectacular. Mi aplicación también, salvo cuando empiezo a añadir efectos porque «queda más bonito».

LEAFLET

LEAFLET

Nivel: Alto

Leaflet hace muy fácil mostrar mapas. Lo difícil empieza cuando el cliente descubre que también quiere rutas, capas, geolocalización y un botón que «haga algo inteligente».

OPENLAYERS

OPENLAYERS

Nivel: Alto

OpenLayers puede resolver prácticamente cualquier necesidad cartográfica. Encontrar la opción adecuada entre todas las disponibles ya es en sí parte del propio proyecto.

FULLCALENDAR

FULLCALENDAR

Nivel: Alto

Este también lo uso mucho. De verdad.

AG GRID

AG GRID

Nivel: Alto

AG Grid es tan potente que, cuando el cliente pide una tabla, tú ya sospechas que acabará queriendo Excel entero funcionando dentro del navegador. Y, por desgracia, casi siempre aciertas.

HANDSONTABLE

HANDSONTABLE

Nivel: Alto

Handsontable convierte una web en una hoja de cálculo. En cuanto el cliente descubre eso, deja de pedir una aplicación y empieza a exigir que repliques Excel. Sin el presupuesto de Microsoft, claro.

CODEMIRROR

CODEMIRROR

Nivel: Medio

Instalé CodeMirror para que los usuarios editaran código cómodamente. Tres días después uno pidió autocompletado, otro depuración y otro un compilador. La próxima vez les instalo Visual Studio Code y que dejen de tocar los huevos.

  • También domino las siguientes categorías:
    • Arquitecturas y patrones: microservicios, hexagonal, CQSR, SPQR e INRI.
    • Estándares y protocolos de seguridad como JWT y OAuth.
    • La mayoría de los IDEs habidos y por haber, Eclipse, IntelliJ, etc.
    • Agile, Scrum, toda la retórica corporativa y el parchís.
    • Herramientas auxiliares como Postman, Jira, Teams, Excel, etc, ya sean online o de escritorio, y en general cualquier aplicación para retrasados o Recursos Humanos, incluyendo ofimática y similares.
    • Habilidades blandas (soft skills, siempre atento a no herir sensibilidades).
    • Acrónimos y palabrejas en inglés para parecer sofisticado, y postureo de Linkedin a tutiplén.
  • Mención aparte merece mi dominio de la IA, ML, NL, NLP, LLM, SLM, GenAI, RAG, RL, RLHF, RLAIF, PEFT, LoRA, MoE, MCP, MLOps, LLMOps, CV, ASR, TTL, y por supuesto VLM.
    • Soy especialista en inteligencia artificial, aprendizaje automático y agentes autónomos. Mi mayor logro profesional ha sido entrenar un modelo capaz de sustituir al Scrum Master. En estos momentos nuestra IA está organizando una reunión para decidir si necesitamos otra reunión para determinar si la IA puede sustituir al Scrum Master o si necesitamos otro Scrum Master nuevo que supervise a la IA que sustituye al antiguo Scrum Master. El nuevo Scrum Master, por su parte, ha solicitado otra reunión para decidir si la reunión convocada por la IA debe ser supervisada por él o por otra IA especializada en supervisar a Scrum Masters que supervisan a otras IAs. La dirección ha creado un comité para analizar si este sistema puede considerarse Agile y el comité ha solicitado una reunión con el Scrum Master para decidir si debe solicitar una segunda reunión al comité. Mientras tanto, la IA ha propuesto automatizar todo el proceso, pero para aprobar la automatización necesitamos una reunión en la que decidamos quién debe convocar la reunión que decidirá quién tiene autoridad para aprobar la automatización, es decir, si la IA, el Scrum Master antiguo, el Scrum Master nuevo, la segunda IA que podría supervisar la reunión convocada por la primera IA, la dirección, el comité, o bien la puta madre que los parió a todos.
    • Después de seis meses, nadie sabe qué está ocurriendo exactamente, pero nos ha quedado en el Jira un tablero moníííssimo.
Y porque no soy de Bilbao...

PROYECTOS PERSONALES

Proyecto de electrónica
PROYECTO DE ELECTRÓNICA

¿Alguna vez has notado que ciertos animalitos han hecho una visita nocturna a tu patio o terraza y han marcado su territorio? A mí me pasaba lo mismo, y mi perro es demasiado flojo como para hacer nada, así que diseñé el Espantador de Mininos. Cuenta con sensores de pelo, de orines, y de ronroneo, y produce toda una variedad de sonidos ahuyentadores e incluso agarra gatos por la cola, mediante procedimiento electromecánico a base de relés que saqué de mi antiguo Seat Ibiza, pa zamarrearlos a gusto. Y sólo he necesitado 20 placas de prototipo de las grandes y algunos componentes. Lo más útil que he hecho en mi vida. La próxima vez intentaré hacer algo incluso más novedoso, ir más allá, hacer algo que nadie ha hecho nunca: un arduino pa regar las plantas.

Proyecto de electrónica

ESPANTADOR DE MININOS

¿Quién se va a presentar voluntario pa probarlo? ¿Ehh? ¿Quién? ¿Quién?

Venga, a ver si encuentras a Wally.

Videojuegos indie y 3D
¿VIDEOJUEGOS INDIE Y 3D?

A mí los que hacen videojuegos indie en 3D con Unity me parecen entrañables. Cuatro años aprendiendo shaders, físicas, iluminación y animaciones, para terminar haciendo un muñequito calvo que corre en círculos por un escenario del tamaño de un Mercadona, mientras una textura atraviesa una pared y el único enemigo del juego es una caja que no debería estar ahí.

No tengo nada contra Unity. El problema es que cada vez que veo un juego 3D hecho con Unity parece que estoy viendo el mismo proyecto de prácticas con distinto título: "corre hasta el otro extremo del escenario, esquiva a dos gilipollas y contempla cómo una roca atraviesa el suelo". La cosa más ambiciosa que puedes hacer parece ser poner un personaje a correr perseguido por tres enemigos con la inteligencia artificial de una tostadora desenchufada. Da igual el género: terror, acción, RPG, ciencia ficción... siempre acabas en un descampado minúsculo con un señor corriendo, tres enemigos con problemas cognitivos y alguna pared que decide dejar de existir. Y cinco años después siguen siendo exactamente eso: tu primer proyecto 3D, pero ahora el muñeco tiene sombras dinámicas y puedes ver cómo se le deforma la cara al girar demasiado rápido.

Yo no soy tan patético ni mediocre. A mí me gusta otra cosa...

Videojuego de 8 bits
VIDEOJUEGO DE 8 BITS

Se trata de un proyecto aún no finalizado, un videojuego de tipo matamarcianos en el que el jugador controla una navecita que se desplaza a izquierda y derecha por la parte baja de la pantalla y dispara hacia arriba a una formación de invasores alienígenas organizada en varias filas y columnas. Todos los alienígenas se mueven al mismo tiempo siguiendo un patrón: avanzan horizontalmente hacia un lado, al llegar al borde de la pantalla descienden una fila, cambian de dirección y repiten el proceso, de manera que cada vez están un poco más cerca de la navecita.

Llevo 7 años con esto y creo que pronto lo tendré listo. El mundo aún no ha visto nada igual. Creo que lo llamaré "Space Aliens" o "Martian invaders".

Code is art
CODE IS ART, MON PETIT CHOU

Es innegable que crear videojuegos como en los años 80 no tiene ninguna utilidad práctica.

Mientras otras personas aprenden tecnologías modernas, desarrollan inteligencia artificial o construyen aplicaciones capaces de gestionar millones de usuarios, tú puedes dedicar tres semanas a ahorrar exactamente dos bytes de memoria. Convertir un puñado de registros del procesador en una nave espacial formada por ocho píxeles requiere la imaginación suficiente para convencer al cerebro de que aquello realmente parece una nave espacial. Hay quien medita en la montaña, y otros buscan el equilibrio interior intentando descubrir por qué una rutina que ayer funcionaba hoy se bloquea porque un salto condicional aterriza exactamente un byte por delante o por detrás de donde debía.

Sí, es una inutilidad.

Pero yo no soy un simple programador. YO soy un artista.

Programador clásico

Programar para un sistema de 8 bits es como escuchar un clásico de Pink Floyd en vinilo. Yo soy un sibarita de la programación, y por eso sé que no hay ninguna experiencia más enriquecedora y placentera para un buen programador que escribir código en Basic, Ensamblador, o incluso código máquina directamente para un Commodore 64 del año de la pera, dígito a dígito, con cuidado, esmero, cariño y mucha paciencia, saboreando todos sus matices, sus detalles, su complejidad y dinamismo. Bueno, dinamismo más bien poco. El Commodore es ese vino viejo que no nos podemos permitir. Yo soy el sumiller que descorchará esa botella para ti.

Teclado ideal

EL ÚNICO TECLADO QUE NECESITAS

Ni gamer, ni inalámbrico, ni hostias. Esto es lo mejor para programar. Lo que no haga IBM...

ACERCA DE MÍ

MI FAMILIA

Familia
Mi mamá

Mi mamá. De joven fue futbolista.

Mi colombiana

Mi culombiana con su papito chulo. Tendríais que verla por detrás.

Mi perro Capone

Mi perro Capone esperando que le echen cerveza. Me lo dieron de cachorrito, fue un regalo del CEO de Matrioshka Capital. Le encanta pasear por Puerto Banús, no sé por qué.

AFICIÓN POR EL KICKBOXING

Kickboxing
Combate de Kickboxing

Roundhouse kick en combate con Big Mike "The Meat Grinder", en 2010.

Combate de Kickboxing

Mi combate con Rude Boy Bartolo. Ahí le curé la sordera.

Combate de Kickboxing

Directo de derecha que recibe de mí Rex Hunter. Por llamarme canijo.

AFICIÓN POR EL CINE

MIS PELIS FAVORITAS

Cine

Lo que más valoro en una película es su capacidad para explorar la dimensión humana de la existencia. Me atraen especialmente las obras que sitúan al ser humano en el centro de su relato y que se interesan por comprender qué nos define como personas. Más que la acción, el espectáculo o la complejidad argumental, busco historias que profundicen en la condición humana y que examinen, con sensibilidad e inteligencia, las motivaciones, contradicciones, virtudes y debilidades que conforman nuestra naturaleza.

Disfruto de las películas que indagan en la psicología de sus personajes y que presentan conflictos emocionales, morales o existenciales capaces de revelar aspectos esenciales de la experiencia humana. Me interesa el cine que reflexiona sobre cuestiones universales como el amor, la amistad, la pérdida, la esperanza, el miedo, la culpa, el sacrificio, la identidad, la compasión, la ambición o el sentido de la vida. En definitiva, me atraen aquellas historias que utilizan a sus personajes como un medio para comprender mejor a las personas y las múltiples facetas de la humanidad.

Considero especialmente valiosas las obras que presentan personajes complejos, creíbles y profundamente humanos, alejados de estereotipos simplistas y dotados de contradicciones, matices y evolución. Me interesa observar cómo reaccionan ante circunstancias difíciles, cómo toman decisiones, cómo cambian con el tiempo y cómo afrontan sus conflictos internos y sus relaciones con los demás.

En última instancia, el tipo de cine que más me interesa es aquel que, más allá del entretenimiento, constituye una reflexión sobre la naturaleza humana. Películas que invitan a comprender mejor quiénes somos, cómo pensamos, qué sentimos y por qué actuamos como lo hacemos; obras que exploran la riqueza psicológica y emocional del ser humano y que, de una forma u otra, contribuyen a ampliar nuestra comprensión de la condición humana.

Película
STAR BITCH

Larga vida y prosperidad, Señora Spock.

Hay pocas películas como esta. Es que lo tiene todo: malos malotes, disparos láser, muñecos de goma o generados por ordenador, naves espaciales que hacen ruido que se propaga por el vacío, robots concebidos por una lavadora y una boya marina, robots de oro...

El que la hizo, se hizo de oro: "Primero hago una a ver qué tal sale. Si gano pasta, hago dos más. Y al cabo de un tiempo, si todo el mundo se acuerda de ella, digo que en realidad yo tenía en mente hacer nueve, y me forro, y me forro, y me forro, y me paso a todo el mundo por el... Y cuando ya esté quemada del todo, se la vendo a una gran corporación del entretenimiento familiar, y me sigo forrando."

Jugada maestra. Una joya del merchandising.

Me atraen especialmente las películas que invitan a la reflexión y que continúan resonando en mi mente mucho después de haber terminado. Valoro aquellas obras que no se limitan a ofrecer un entretenimiento pasajero, sino que plantean preguntas, despiertan inquietudes intelectuales o emocionales y estimulan una reflexión profunda sobre los temas que abordan.

Disfruto del cine que desafía al espectador, que evita ofrecer respuestas simples o conclusiones cerradas y que deja espacio para la interpretación personal. Me interesan las películas que obligan a reconsiderar ideas preconcebidas, que presentan dilemas morales, filosóficos o existenciales y que invitan a analizar el comportamiento humano, la sociedad o la realidad desde perspectivas diferentes.

Aprecio especialmente las historias con múltiples niveles de lectura, capaces de revelar nuevos matices en cada visionado. Me resulta muy satisfactorio cuando una película permite descubrir significados, simbolismos o conexiones que no eran evidentes en un primer momento y que enriquecen progresivamente la experiencia.

En definitiva, considero especialmente valiosas aquellas películas que no terminan cuando aparecen los créditos, sino que permanecen en el pensamiento del espectador, generando preguntas, fomentando el debate y ofreciendo una experiencia intelectual y emocional que trasciende el mero acto de ver una historia.

Película
EL SEÑOR DE LOS PORRILLOS

Sin duda, la mejor comedia de los últimos treinta años.

La película empieza con Fredo (Alfredo, un hobbit italiano) de camino a su casa, cuando de repente se encuentra con alguien que va vestido de mago:

—Fredo, los orcos han averiguado dónde guardas el chocolate, tienes que marcharte cuanto antes.

—¿Tú estás loco o qué? Vaya momento pa tener otra alucinación. Mira, hace dos meses que no pillo... quiero decir, que no pillo una tarde libre, me voy a mi casa a ponerme hasta el culo, que me están esperando un par de colegas y me han dicho que han estado en Rivendel y se han traído material del bueno.

El resto es historia.

También me atraen las películas de tono serio y enfoque realista, aquellas que buscan representar el mundo con verosimilitud y que abordan cuestiones relevantes desde una perspectiva madura. Valoro las obras que encuentran su interés en la propia realidad, sin necesidad de recurrir a elementos fantásticos, artificios espectaculares o planteamientos excesivamente idealizados.

Me gustan las películas que tratan problemas auténticos y reconocibles, relacionados con la vida cotidiana, las relaciones personales, el trabajo, la economía, la política, la justicia, la historia o los grandes desafíos sociales que afectan a las personas y a las sociedades. Me interesa especialmente cuando estas cuestiones se presentan con rigor, profundidad y sensibilidad, evitando simplificaciones o enfoques superficiales.

Prefiero historias dirigidas a un público adulto, tanto por la complejidad de los temas que desarrollan como por la forma en que los abordan. Aprecio las películas que confían en la capacidad del espectador para comprender situaciones complejas, interpretar matices y enfrentarse a conflictos morales, sociales o psicológicos sin necesidad de convertirlos en un mero espectáculo.

No significa que rechace por completo la ficción o la imaginación, sino que encuentro un mayor interés en aquellas obras que permanecen ancladas en la realidad y que utilizan el cine como una herramienta para observar, comprender y reflexionar sobre el mundo tal como es. En definitiva, valoro las películas que presentan una visión madura de la existencia, que exploran problemas reales y que invitan a pensar sobre cuestiones que tienen una auténtica relevancia humana, social o política.

Película
EL CICATERO OSCURO

El género de superhéroes ha conseguido que millones de adultos hagan cola y paguen encantados por ver la misma historia envuelta cada vez en un traje diferente. Ver una de estas películas siempre es una experiencia profunda, porque el superhéroe suele tener un trauma y la fotografía es de color azul grisáceo. Después te puedes dedicar a coleccionar figuras de 300 euros y ediciones limitadas de cromos. Y no hace falta que tengas ocho o diez años, con cuarenta o cincuenta también te dejan entrar al cine.

A mí me encanta disfrutar de una buena peli de superhéroes de vez en cuando, porque son las pelis preferidas de aquellos que siempre se sentirán jóvenes. Se trata de una auténtica e inquebrantable resistencia a abandonar la infancia. Verdaderamente admirable.

Lo llamativo de todo esto ocurre cuando este género deja de ser un entretenimiento ocasional y se convierte en la personalidad completa de alguien que lleva décadas pagando impuestos.

BÚSQUEDA DE EMPLEO

En mi actual empresa hay rumores

de que van a despedir a la mitad de la plantilla

y me estoy planteando buscar otro trabajo.

Envíame una oferta si estás interesado.

The 8-Bit Kickboxing Kid

© 2026 8bitkickboxer.com

The 8-Bit Kickboxing Kid

ALL RIGHTS RESERVED

Third-party trademarks and logos are the property of their respective owners.