<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chess &amp; Friends on Christian Martínez De La Rosa</title><link>https://christt105.github.io/es/categories/chess--friends/</link><description>Recent content in Chess &amp; Friends on Christian Martínez De La Rosa</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Sun, 23 Aug 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://christt105.github.io/es/categories/chess--friends/index.xml" rel="self" type="application/rss+xml"/><item><title>Chess &amp; Friends: una web para llevar la cuenta de las palizas que me dan mis hermanos al ajedrez</title><link>https://christt105.github.io/es/blog/chess-and-friends/</link><pubDate>Sun, 23 Aug 2026 00:00:00 +0200</pubDate><guid>https://christt105.github.io/es/blog/chess-and-friends/</guid><enclosure url="https://christt105.github.io/blog/chess-and-friends/cover.webp" length="71956" type="image/webp"/><description>&lt;p&gt;Hola de nuevo.&lt;/p&gt;&#10;&lt;p&gt;Mis hermanos son unos frikis del ajedrez, la mayoría de veces que los veo están jugando partidas o viendo vídeos. Yo juego muy de vez en cuando, siempre me ha gustado, pero eso, un aficionado que juega alguna partida ocasional. De vez en cuando mis hermanos me retan a una partida y siempre acaba igual, paliza.&lt;/p&gt;&#10;&lt;p&gt;El otro día mi hermana me mandó por Discord, sin venir mucho a cuento, una gráfica de precisión de nuestras últimas partidas que se había sacado no sé muy bien de dónde. La verdad que la gráfica es lamentable, fue peor que perder la partida en sí. Pero me dio una idea: en vez de una gráfica suelta, ¿por qué no algo más vivo, que se fuera actualizando solo?&lt;/p&gt;&#10;&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="439px" data-flex-grow="183" height="485" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://christt105.github.io/blog/chess-and-friends/Chart.webp" srcset="https://christt105.github.io/blog/chess-and-friends/Chart_hu_936c5ee92dd7f8b8.webp 800w, https://christt105.github.io/blog/chess-and-friends/Chart.webp 889w" width="889"&gt;&lt;/p&gt;&#10;&lt;h2 id="manos-a-la-obra"&gt;Manos a la obra&#10;&lt;/h2&gt;&lt;p&gt;Chess.com tiene una API pública sin necesidad de clave ni de nada raro: por cada jugador puedes pedir el archivo de partidas de un mes concreto y te devuelve, entre otras cosas, la precisión de cada bando cuando está disponible (desde ~2023 chess.com la calcula para casi todas las partidas). Con eso de base, el plan era una web sencilla que fuera a buscar las partidas entre nosotros y las pintara en un par de gráficas.&lt;/p&gt;&#10;&lt;p&gt;Se lo planteé a Claude tal cual, con lo que quería y poco más, y a partir de ahí fue cuestión de ir iterando: un script en Node que pega a la API y guarda un &lt;code&gt;games.json&lt;/code&gt;, una web estática que lo lee y lo pinta con Chart.js, y ya puestos, que le diera un aire de tablero de ajedrez en vez de la típica web genérica. Fuimos afinando cosas por el camino: cachear los meses ya cerrados para no repetir peticiones de más, un icono distinto según cómo acabó cada partida (jaque mate, rendición, tiempo, tablas), y una GitHub Action que se ejecuta cada noche para refrescar los datos solita, así que la web nunca necesita que yo la toque para estar al día.&lt;/p&gt;&#10;&lt;a class="github-repo-card" href="https://github.com/christt105/chess-and-friends" target="_blank" rel="noopener"&gt;&#10; &lt;img src="https://avatars.githubusercontent.com/u/36189169?v=4" alt="christt105 avatar" class="repo-avatar"&gt;&#10; &lt;h3&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"&gt;&#10; &lt;path stroke="none" d="M0 0h24v24H0z" fill="none"/&gt;&#10; &lt;path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /&gt;&#10;&lt;/svg&gt;&#10;&#10;&#10; christt105/chess-and-friends&lt;/h3&gt;&#10; &lt;p&gt;&lt;/p&gt;&#10; &lt;div class="repo-stats"&gt;&#10; &lt;span&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" class="icon icon-tabler icons-tabler-filled icon-tabler-star"&gt;&lt;path stroke="none" d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M8.243 7.34l-6.38 .925l-.113 .023a1 1 0 0 0 -.44 1.684l4.622 4.499l-1.09 6.355l-.013 .11a1 1 0 0 0 1.464 .944l5.706 -3l5.693 3l.1 .046a1 1 0 0 0 1.352 -1.1l-1.091 -6.355l4.624 -4.5l.078 -.085a1 1 0 0 0 -.633 -1.62l-6.38 -.926l-2.852 -5.78a1 1 0 0 0 -1.794 0l-2.853 5.78z" /&gt;&lt;/svg&gt; 0&lt;/span&gt;&#10; &lt;span&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-git-fork"&gt;&lt;path stroke="none" d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M10 18a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /&gt;&lt;path d="M5 6a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /&gt;&lt;path d="M15 6a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /&gt;&lt;path d="M7 8v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2 -2v-2" /&gt;&lt;path d="M12 12l0 4" /&gt;&lt;/svg&gt; 0&lt;/span&gt;&#10; &lt;span&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-calendar-event"&gt;&lt;path stroke="none" d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12" /&gt;&lt;path d="M16 3l0 4" /&gt;&lt;path d="M8 3l0 4" /&gt;&lt;path d="M4 11l16 0" /&gt;&lt;path d="M8 15h2v2h-2l0 -2" /&gt;&lt;/svg&gt; 2026-08-26&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;/a&gt;&#10;&lt;h2 id="la-web"&gt;La web&#10;&lt;/h2&gt;&lt;p&gt;La tenéis publicada aquí: &lt;a class="link" href="https://christt105.github.io/chess-and-friends/" target="_blank" rel="noopener"&#10; &gt;https://christt105.github.io/chess-and-friends/&lt;/a&gt;. Tiene dos vistas. La individual, con mi evolución de precisión y mis números en solitario:&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="Vista individual del dashboard de Chess &amp; Friends" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://christt105.github.io/blog/chess-and-friends/dashboard-individual.png" srcset="https://christt105.github.io/blog/chess-and-friends/dashboard-individual_hu_d9f021192e2318f0.png 800w, https://christt105.github.io/blog/chess-and-friends/dashboard-individual.png 1400w" width="1400"&gt;&lt;/p&gt;&#10;&lt;p&gt;Y la de &amp;ldquo;Amigos&amp;rdquo;, que compara a todos los que jugamos entre nosotros y añade una tabla de cara a cara:&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="Vista de comparación entre hermanos en Chess &amp; Friends" class="gallery-image" data-flex-basis="339px" data-flex-grow="141" height="989" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://christt105.github.io/blog/chess-and-friends/dashboard-amigos.png" srcset="https://christt105.github.io/blog/chess-and-friends/dashboard-amigos_hu_dae8f4b3557ec75f.png 800w, https://christt105.github.io/blog/chess-and-friends/dashboard-amigos.png 1400w" width="1400"&gt;&lt;/p&gt;&#10;&lt;p&gt;Nada muy complicado por dentro (un HTML, un script de fetch y otro de dashboard, sin build ni frameworks), pero para lo que necesitaba es justo lo que quería: cero mantenimiento y con pinta de proyecto de verdad.&lt;/p&gt;&#10;&lt;h2 id="las-palizas-en-números"&gt;Las palizas, en números&#10;&lt;/h2&gt;&lt;p&gt;La verdad que es lamentable, y debería incluso darme vergüenza publicar esto. Pero bueno, qué más da, simplemente es un juego. Ya lo sospechaba, pero verlo en una tabla ordenadita es otro nivel de humillación.&lt;/p&gt;&#10;&lt;h2 id="despedida"&gt;Despedida&#10;&lt;/h2&gt;&lt;p&gt;Un proyecto de una mañana mientras hacía tareas domésticas, para reírme un poco de mí mismo (mientras escribo esto ya escucho reírse a los cabrones de mis hermanos). Lo he dejado público, cualquiera puede clonar el repo y modificar el archivo de datos para generar su página web.&lt;/p&gt;&#10;&lt;p&gt;Hasta la próxima.&lt;/p&gt;&#10;&lt;div class="video-wrapper"&gt;&#10; &lt;iframe loading="lazy" &#10; src="https://www.youtube.com/embed/c7BVtGnlxT8" &#10; allowfullscreen &#10; title="YouTube Video"&#10; &gt;&#10; &lt;/iframe&gt;&#10;&lt;/div&gt;&#10;&#10;</description></item></channel></rss>