{"site":"https://tablerus.es","name":"Héctor Tablero Díaz","description":"Portfolio of Héctor Tablero Díaz - software engineer and data scientist. Projects in machine learning, web development and data engineering.","generated":"2026-07-29T17:05:12.515Z","usage":{"markdown":"Append .md to any page path for the Markdown version, or send Accept: text/markdown.","forceHtml":"Add ?format=html to any path to force the HTML version.","projectSummary":"Some projects have a condensed version at ?type=summary. Entries where the field is absent have no summary and ?type=summary returns the full text instead.","structure":"Projects nest through parent and children. An entry with children groups related work and carries its own overview prose as well; an entry without them is a leaf. Articles and projects cross-reference each other through the project/article fields.","length":"\"words\" counts the Markdown body, and for articles it also includes their annexes, which render inside the article page rather than at their own URL. Articles additionally carry readingTime in minutes."},"projects":[{"slug":"diary","title":"Diary - A Local-First Personal CRM","description":"A single-user application that mixes a bullet-point journal with a lightweight personal CRM, built with local-first sync, fine-grained relevance decay, and a voice-to-diary AI pipeline.","technologies":["React","Vite","TypeScript","MongoDB","Capacitor","Hono","Better Auth","Zod","TailwindCSS","ShadCN"],"date":"2026-07-01","words":2679,"repository":"https://github.com/hectortablero/diary","demo":"https://diary.tablerus.es","url":"https://tablerus.es/projects/diary","markdown":"https://tablerus.es/projects/diary.md"},{"slug":"slide-matching","title":"Multimodal Slide Synchronization (Original Algorithm)","description":"A hybrid computer vision algorithm that aligns presentation video frames with their corresponding PDF slides by fusing geometry, embeddings, and DP, achieving 98.3% accuracy.","technologies":["Python","OpenCV","HuggingFace"],"date":"2026-02-01","words":892,"article":"aimlas","url":"https://tablerus.es/projects/slide-matching","markdown":"https://tablerus.es/projects/slide-matching.md"},{"slug":"rapidpipe","title":"RapidPipe: An Advanced Data Orchestration Framework","description":"A cycle-synchronized, in-memory dataflow engine for real-time heterogeneous pipelines with declarative dependency grammar, fine-grained task scheduling, and observability.","technologies":["Python","NetworkX","Numba","Pytest"],"date":"2025-09-01","words":1812,"article":"rapidpipe","license":"MIT","repository":"https://github.com/hectortablero/rapidpipe","url":"https://tablerus.es/projects/rapidpipe","markdown":"https://tablerus.es/projects/rapidpipe.md"},{"slug":"gdguam","title":"Google Developer Group on Campus UAM - Projects","description":"Systems and events built for GDGoC UAM: including a full-stack organizational platform.","children":[{"slug":"gdguam/esp32-competition","title":"ESP32 Competition Event","description":"A real-time sensor telemetry system built on ESP32 boards featuring WebSocket-based dashboards, live competition scoring, and anomaly-aware data processing.","parent":"gdguam","technologies":["MicroPython","JavaScript"],"date":"2026-04-01","words":948,"repository":"https://github.com/Hugo30B/esp32_distance_competition","url":"https://tablerus.es/projects/gdguam/esp32-competition","markdown":"https://tablerus.es/projects/gdguam/esp32-competition.md"},{"slug":"gdguam/portfolio-event","title":"Event: Deploy Your Portfolio","description":"An Astro-based portfolio template and workshop designed to get students from zero to deployed in under two hours, with a YAML-driven content system and zero client-side frameworks.","parent":"gdguam","technologies":["Astro","TypeScript"],"date":"2026-03-01","words":777,"repository":"https://github.com/GDG-UAM/portfolio-workshop","url":"https://tablerus.es/projects/gdguam/portfolio-event","markdown":"https://tablerus.es/projects/gdguam/portfolio-event.md"},{"slug":"gdguam/website","title":"GDGoC UAM Website","description":"A full-stack platform for GDGoC UAM, featuring a public-facing Next.js frontend and an Elysia.js backend with granular permissions, real-time features, and a custom CMS.","parent":"gdguam","children":[{"slug":"gdguam/website/certificate-system","title":"Certificate System","description":"A template-driven certificate generation engine with OpenBadges v2 compliance, automatic recipient resolution from team memberships, and fallback value inheritance.","parent":"gdguam/website","technologies":["TypeScript","MongoDB","OpenBadges","Elysia.js"],"date":"2025-12-01","words":593,"url":"https://tablerus.es/projects/gdguam/website/certificate-system","markdown":"https://tablerus.es/projects/gdguam/website/certificate-system.md"},{"slug":"gdguam/website/ai-translations","title":"Automatic AI Translations","description":"A client-side AI translation layer built on Chrome's experimental Translator API, enabling real-time, privacy-preserving page translation across 39+ languages.","parent":"gdguam/website","technologies":["TypeScript","Gemini"],"date":"2025-08-01","words":1567,"url":"https://tablerus.es/projects/gdguam/website/ai-translations","markdown":"https://tablerus.es/projects/gdguam/website/ai-translations.md"},{"slug":"gdguam/website/custom-markdown","title":"Highly Customized Markdown Editor","description":"A custom markdown processing pipeline for the GDGoC UAM CMS, supporting BlurHash placeholders, audio players, iframe embeds, and user mentions with a unified rendering chain.","parent":"gdguam/website","children":[{"slug":"gdguam/website/custom-markdown/auto-blurhash","title":"Automatic Blurhash System","description":"A server-side image preprocessing system that generates BlurHash placeholders for all remote images in markdown content, eliminating layout shifts and improving UX.","parent":"gdguam/website/custom-markdown","technologies":["TypeScript"],"date":"2025-12-01","words":552,"url":"https://tablerus.es/projects/gdguam/website/custom-markdown/auto-blurhash","markdown":"https://tablerus.es/projects/gdguam/website/custom-markdown/auto-blurhash.md"},{"slug":"gdguam/website/custom-markdown/embeds","title":"Custom Embeds","description":"A sandboxed iframe embed system for external content with automatic title fetching, responsive sizing, and security policies that prevent clickjacking and unauthorized navigation.","parent":"gdguam/website/custom-markdown","technologies":["TypeScript","React","Elysia.js"],"date":"2025-12-01","words":369,"url":"https://tablerus.es/projects/gdguam/website/custom-markdown/embeds","markdown":"https://tablerus.es/projects/gdguam/website/custom-markdown/embeds.md"},{"slug":"gdguam/website/custom-markdown/audio-player","title":"Custom Audio Player","description":"An accessible audio player with real-time waveform visualization and responsive design for embedded podcast and talk recordings.","parent":"gdguam/website/custom-markdown","technologies":["TypeScript","React"],"date":"2025-10-01","words":460,"url":"https://tablerus.es/projects/gdguam/website/custom-markdown/audio-player","markdown":"https://tablerus.es/projects/gdguam/website/custom-markdown/audio-player.md"},{"slug":"gdguam/website/custom-markdown/user-mentions","title":"User Mentions","description":"An inline mention system that converts @username syntax into interactive profile cards, with privacy-aware resolution and admin moderation capabilities.","parent":"gdguam/website/custom-markdown","technologies":["TypeScript","React","Next.js"],"date":"2025-10-01","words":462,"url":"https://tablerus.es/projects/gdguam/website/custom-markdown/user-mentions","markdown":"https://tablerus.es/projects/gdguam/website/custom-markdown/user-mentions.md"}],"technologies":["TypeScript","MongoDB","React","Tailwind CSS"],"date":"2025-08-01","dateEnd":"2025-12-01","words":754,"url":"https://tablerus.es/projects/gdguam/website/custom-markdown","markdown":"https://tablerus.es/projects/gdguam/website/custom-markdown.md"},{"slug":"gdguam/website/feature-flag-system","title":"Advanced Feature Flag System","description":"A runtime feature flag system with user-segmented rollouts, A/B testing support, and admin-controlled toggles that propagate without redeployment.","parent":"gdguam/website","technologies":["TypeScript","MongoDB","Redis","Next.js"],"date":"2025-08-01","words":332,"url":"https://tablerus.es/projects/gdguam/website/feature-flag-system","markdown":"https://tablerus.es/projects/gdguam/website/feature-flag-system.md"},{"slug":"gdguam/website/giveaway-system","title":"Real-Time Giveaway System","description":"A WebSocket-powered giveaway engine for live events, supporting weighted entries, real-time winner selection, and audience participation tracking.","parent":"gdguam/website","technologies":["TypeScript","Elysia.js"],"date":"2025-08-01","words":449,"url":"https://tablerus.es/projects/gdguam/website/giveaway-system","markdown":"https://tablerus.es/projects/gdguam/website/giveaway-system.md"}],"technologies":["Node.js","Elysia.js","MongoDB","Next.js","Tailwind CSS","TypeScript","React","Redis","Gemini","OpenBadges","Framer Motion","Sentry","Better Stack","Better Auth"],"date":"2025-08-01","dateEnd":"2025-12-01","words":1342,"repository":"https://github.com/GDG-UAM/website-refactor","demo":"https://gdguam.es","url":"https://tablerus.es/projects/gdguam/website","markdown":"https://tablerus.es/projects/gdguam/website.md"}],"technologies":["MicroPython","JavaScript","Astro","TypeScript","Node.js","Elysia.js","MongoDB","Next.js","Tailwind CSS","React","Redis","Gemini","OpenBadges","Framer Motion","Sentry","Better Stack","Better Auth"],"date":"2025-08-01","dateEnd":"2026-04-01","words":559,"url":"https://tablerus.es/projects/gdguam","markdown":"https://tablerus.es/projects/gdguam.md"},{"slug":"image-diffusion","title":"Image Generation Module via Diffusion Models","description":"A Python package implementing multiple diffusion model variants, sampling strategies, and controllable generation techniques for image synthesis and manipulation.","technologies":["Python","PyTorch","Streamlit"],"date":"2025-05-01","words":1236,"article":"image-diffusion","license":"MIT","repository":"https://github.com/HectorTablero/image-gen","demo":"https://image-gen-htd.streamlit.app/","url":"https://tablerus.es/projects/image-diffusion","markdown":"https://tablerus.es/projects/image-diffusion.md"},{"slug":"rl-system","title":"Reinforcement Learning System","description":"A reinforcement learning system implementing tabular methods (Q-Learning, SARSA) and deep learning (DQN) with a focus on performance optimization and benchmarking.","technologies":["Python","TensorFlow"],"date":"2025-04-01","words":547,"repository":"https://github.com/alvariitoSW/reinforcement_learning","url":"https://tablerus.es/projects/rl-system","markdown":"https://tablerus.es/projects/rl-system.md"},{"slug":"etl-spark","title":"ETL Pipeline for Social Media Analysis with Spark and Hadoop","description":"A distributed data processing pipeline built with PySpark to extract, transform, and analyze large-scale social media datasets.","technologies":["Python","Spark","Hadoop"],"date":"2025-03-01","words":312,"url":"https://tablerus.es/projects/etl-spark","markdown":"https://tablerus.es/projects/etl-spark.md"},{"slug":"nback","title":"N-Back Memory Game","description":"A browser game featuring four cognitive training modes (including three originals) that extend N-Back through spatial and temporal recall, and multi-target recognition challenges.","technologies":["HTML","CSS","JavaScript"],"date":"2025-03-01","words":868,"repository":"https://github.com/HectorTablero/cf-page-nback","demo":"https://nback.games.tablerus.es/","url":"https://tablerus.es/projects/nback","markdown":"https://tablerus.es/projects/nback.md"},{"slug":"nlp-corpus","title":"NLP Corpus for Sentiment Analysis in Game Reviews","description":"A modular corpus management system for sentiment analysis featuring intelligent caching, parallel processing, and dual-backend linguistic analysis.","technologies":["Python","SpaCy","SciPy","Polars","Scikit-Learn"],"date":"2025-01-01","words":1002,"url":"https://tablerus.es/projects/nlp-corpus","markdown":"https://tablerus.es/projects/nlp-corpus.md"},{"slug":"esn","title":"Erasmus Student Network UAM Madrid - Projects","description":"A collection of internal tools and automation systems built for ESN UAM Madrid, covering HR management, volunteer recruitment, and public subsidy monitoring.","children":[{"slug":"esn/management-platform","title":"Internal Management Platform","description":"A secure internal portal for ESN UAM Madrid that orchestrates recurring internal processes through an unified dashboard.","parent":"esn","technologies":["Node.js","TypeScript","MongoDB","Next.js","React","Tailwind CSS","Framer Motion","Better Auth"],"date":"2026-03-01","words":1258,"repository":"https://github.com/Webmaster-ESN-UAM-Madrid/web-esn","demo":"https://management.esnuam.org","url":"https://tablerus.es/projects/esn/management-platform","markdown":"https://tablerus.es/projects/esn/management-platform.md","summary":"https://tablerus.es/projects/esn/management-platform.md?type=summary"},{"slug":"esn/recruitment-website","title":"Recruitment Platform","description":"A full-stack ERP for managing the ESN recruitment pipeline: form ingestion, interview scheduling, collaborative deliberation, and relational analytics.","parent":"esn","technologies":["Node.js","TypeScript","MongoDB","Next.js","React","Google Apps Script","Better Auth"],"date":"2025-06-01","words":1318,"license":"MIT","repository":"https://github.com/Webmaster-ESN-UAM-Madrid/recruitment","demo":"https://recruitment.esnuam.org","url":"https://tablerus.es/projects/esn/recruitment-website","markdown":"https://tablerus.es/projects/esn/recruitment-website.md","summary":"https://tablerus.es/projects/esn/recruitment-website.md?type=summary"},{"slug":"esn/subsidy-scraper","title":"Subsidy Web Scraper","description":"An automated monitoring system that scrapes university and regional government subsidy portals, detects newly opened applications, and notifies ESN board members via email.","parent":"esn","technologies":["Python","Selenium","JavaScript","Cloudflare Workers"],"date":"2024-12-01","words":423,"url":"https://tablerus.es/projects/esn/subsidy-scraper","markdown":"https://tablerus.es/projects/esn/subsidy-scraper.md","summary":"https://tablerus.es/projects/esn/subsidy-scraper.md?type=summary"}],"technologies":["Node.js","TypeScript","MongoDB","Next.js","React","Tailwind CSS","Framer Motion","Better Auth","Google Apps Script","Python","Selenium","JavaScript","Cloudflare Workers"],"date":"2024-12-01","dateEnd":"2026-03-01","words":320,"url":"https://tablerus.es/projects/esn","markdown":"https://tablerus.es/projects/esn.md"},{"slug":"r-risk-analysis","title":"Obesity Risk Factor Analysis in R","description":"A statistical analysis implementing PCA, LDA and Naive Bayes for classification and K-Means to identify groupings based on dietary habits, physical activity, and demographic variables.","technologies":["R"],"date":"2024-12-01","words":501,"repository":"https://github.com/alvariitoSW/factores_riesgo_obesidad","url":"https://tablerus.es/projects/r-risk-analysis","markdown":"https://tablerus.es/projects/r-risk-analysis.md"},{"slug":"clustering","title":"Clustering Projects - Custom Algorithms & Advanced Method Evaluation","description":"A collection of clustering implementations and evaluations, from custom KNNs to comparative studies of fuzzy, probabilistic, and spectral methods.","children":[{"slug":"clustering/advanced-method-evaluation","title":"Evaluation of Advanced Clustering Methods","description":"A comparative study of Fuzzy C-Means, Gaussian Mixture Models, and Spectral Clustering on synthetic and real-world datasets.","parent":"clustering","technologies":["Python","Scikit-Learn","Pandas","SciPy"],"date":"2025-03-01","words":752,"url":"https://tablerus.es/projects/clustering/advanced-method-evaluation","markdown":"https://tablerus.es/projects/clustering/advanced-method-evaluation.md","summary":"https://tablerus.es/projects/clustering/advanced-method-evaluation.md?type=summary"},{"slug":"clustering/custom-clustering","title":"KNN & Feature Selection from Scratch","description":"A from-scratch exploration of K-Nearest Neighbors, distance-weighted variants, tie-breaking strategies, custom KNN imputation, and manual mRMR feature selection.","parent":"clustering","technologies":["Python","Pandas","Scikit-Learn"],"date":"2024-10-01","words":549,"url":"https://tablerus.es/projects/clustering/custom-clustering","markdown":"https://tablerus.es/projects/clustering/custom-clustering.md","summary":"https://tablerus.es/projects/clustering/custom-clustering.md?type=summary"}],"technologies":["Python","Scikit-Learn","Pandas","SciPy"],"date":"2024-10-01","dateEnd":"2025-03-01","words":183,"url":"https://tablerus.es/projects/clustering","markdown":"https://tablerus.es/projects/clustering.md"},{"slug":"db-performance","title":"Database Performance Analysis","description":"A benchmarking framework designed to evaluate the throughput, latency, and resource consumption of SQL and NoSQL database engines using synthetic data generation.","technologies":["Python","MongoDB","PostgreSQL","SQLite","DuckDB"],"date":"2024-10-01","words":819,"repository":"https://github.com/alvariitoSW/comparacion_bbdd","url":"https://tablerus.es/projects/db-performance","markdown":"https://tablerus.es/projects/db-performance.md","summary":"https://tablerus.es/projects/db-performance.md?type=summary"},{"slug":"geometric-cipher","title":"Geometric Cipher (Original Algorithm)","description":"An encryption algorithm based on concentric regular polygons using trigonometric positioning, with optional layer-based secondary ciphers.","technologies":["Python"],"date":"2024-04-01","words":1050,"license":"MIT","repository":"https://github.com/HectorTablero/geometric-cipher","demo":"https://geometric-cipher.experiments.tablerus.es","url":"https://tablerus.es/projects/geometric-cipher","markdown":"https://tablerus.es/projects/geometric-cipher.md","summary":"https://tablerus.es/projects/geometric-cipher.md?type=summary"},{"slug":"qed","title":"QED Website - A Scientific Dissemination Platform","description":"A full-stack educational platform featuring interactive mathematical visualizations and progressive web capabilities to make advanced mathematics accessible and engaging.","children":[{"slug":"qed/interactive-components","title":"Interactive Components System","description":"A custom-built framework for embedding and managing high-performance mathematical simulations and games within web articles.","parent":"qed","children":[{"slug":"qed/interactive-components/magazine-4","title":"Magazine 4 (2024-25)","description":"Interactive elements built for the fourth edition of QED Magazine.","parent":"qed/interactive-components","children":[{"slug":"qed/interactive-components/magazine-4/billiards","title":"Equations or Experience: Who Comes Out on Top at the Table?","description":"Three billiard-table simulations covering cushion reflection, spin-corrected rebounds, and the diamond aiming system.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":597,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/Equations%20or%20experience%20-%20Who%20comes%20out%20on%20top%20at%20the%20table","demo":"https://qed.mat.uam.es/revista/articulo/billar","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/billiards","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/billiards.md"},{"slug":"qed/interactive-components/magazine-4/escher-and-mobius","title":"Only Those Who Attempt the Absurd Will Achieve the Impossible","description":"An editable Escher-style tessellation tool and a Möbius strip explorer with an ant walking its one-sided surface.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":563,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/Only%20those%20who%20attempt%20the%20absurd%20will%20achieve%20the%20impossible","demo":"https://qed.mat.uam.es/revista/articulo/intentar-lo-absurdo","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/escher-and-mobius","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/escher-and-mobius.md"},{"slug":"qed/interactive-components/magazine-4/false-friends-calculus","title":"False Friends in Calculus I","description":"Four interactive counterexamples to intuitive-but-false statements about continuity, differentiability, and series convergence.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":576,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/False%20Friends%20in%20Calculus%20I","demo":"https://qed.mat.uam.es/revista/articulo/false-friends","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/false-friends-calculus","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/false-friends-calculus.md"},{"slug":"qed/interactive-components/magazine-4/fold-and-cut","title":"Fold and Cut","description":"Three elements building up the fold-and-cut theorem — straight skeleton construction, perpendicular bounce tracing, and the final flat-folded cutting pattern.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":578,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/Fold%20and%20Cut","demo":"https://qed.mat.uam.es/revista/articulo/doblar-cortar","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/fold-and-cut","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/fold-and-cut.md"},{"slug":"qed/interactive-components/magazine-4/golden-rectangle","title":"The Beauty of Mathematics: Mathematics in Painting","description":"A step-by-step compass-and-straightedge construction of the golden rectangle, subdividing into the logarithmic spiral with a live Fibonacci-ratio readout.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":355,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%204/The%20Beauty%20of%20Mathematics%20-%20Mathematics%20in%20Painting/goldenRectangle.js","demo":"https://qed.mat.uam.es/revista/articulo/belleza-matematicas","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/golden-rectangle","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/golden-rectangle.md"},{"slug":"qed/interactive-components/magazine-4/mysterious-numbers","title":"The Sum of the First π Numbers, the Factorial of 1/2, and Other Mysterious Numbers","description":"Four elements visualizing extension criteria, harmonic-number flattening, Euler's factorial limit, and the Euler–Mascheroni constant as an area.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":598,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/The%20sum%20of%20the%20first%20%CF%80%20numbers%2C%20the%20factorial%20of%201%20half%2C%20and%20other%20mysterious%20numbers","demo":"https://qed.mat.uam.es/revista/articulo/cifras-misteriosas","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/mysterious-numbers","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/mysterious-numbers.md"},{"slug":"qed/interactive-components/magazine-4/p-adic-numbers","title":"A Journey Through p-adic Numbers","description":"Two visualizations of the p-adic world — a nested-ball tree geometry and a side-by-side convergence race against the reals.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":437,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/A%20Journey%20Through%20p-adic%20Numbers","demo":"https://qed.mat.uam.es/revista/articulo/numeros-p-adicos","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/p-adic-numbers","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/p-adic-numbers.md"},{"slug":"qed/interactive-components/magazine-4/pagerank","title":"PageRank, Google and Linear Algebra","description":"Three elements covering the PageRank link graph, the random surfer's empirical convergence, and the power method's fast convergence to the dominant eigenvector.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":569,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204/PageRank%2C%20Google%20and%20linear%20algebra","demo":"https://qed.mat.uam.es/revista/articulo/pagerank","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/pagerank","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/pagerank.md"},{"slug":"qed/interactive-components/magazine-4/polar-decomposition","title":"Operators Aren't That Complicated... or Are They?","description":"A side-by-side geometric picture of an operator's polar decomposition and the complex-number polar form it is analogous to.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":323,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%204/Operators%20aren't%20that%20complicated...%20or%20are%20they/polarDecomposition.js","demo":"https://qed.mat.uam.es/revista/articulo/operadores","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/polar-decomposition","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/polar-decomposition.md"},{"slug":"qed/interactive-components/magazine-4/the-man-who-counted","title":"The Man Who Counted","description":"A playable version of the eight-pearls, two-weighings balance puzzle from Malba Tahan's novel.","parent":"qed/interactive-components/magazine-4","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":328,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%204/The%20Man%20Who%20Counted/pearlBalance.js","demo":"https://qed.mat.uam.es/revista/articulo/el-hombre-que-calculaba","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4/the-man-who-counted","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4/the-man-who-counted.md"}],"technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":280,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%204","demo":"https://qed.mat.uam.es/revista/2024-25","url":"https://tablerus.es/projects/qed/interactive-components/magazine-4","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-4.md"},{"slug":"qed/interactive-components/magazine-5","title":"Magazine 5 (2025-26)","description":"Interactive elements built for the fifth edition of QED Magazine.","parent":"qed/interactive-components","children":[{"slug":"qed/interactive-components/magazine-5/fixed-point-theorems","title":"Fixed-Point Theorems","description":"Cobweb diagrams for Banach's contraction principle and a hand-drawn demonstration of Brouwer's theorem in one dimension.","parent":"qed/interactive-components/magazine-5","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":605,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%205/Cowlicks,%20a%20Flat%20Tire,%20and%20Too%20Many%20Coincidences","demo":"https://qed.mat.uam.es/revista/articulo/bola-de-pelo","url":"https://tablerus.es/projects/qed/interactive-components/magazine-5/fixed-point-theorems","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-5/fixed-point-theorems.md"},{"slug":"qed/interactive-components/magazine-5/magic-squares","title":"The Dot Quadrant Method","description":"Interactively constructing order-4k magic squares by mirroring a dot pattern across the square's four quadrants.","parent":"qed/interactive-components/magazine-5","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":435,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%205/The%20Mathematical%20Mystique%20of%20Magic%20Squares/dotQuadrantMethod.js","demo":"https://qed.mat.uam.es/revista/articulo/cuadrados-magicos","url":"https://tablerus.es/projects/qed/interactive-components/magazine-5/magic-squares","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-5/magic-squares.md"},{"slug":"qed/interactive-components/magazine-5/signal-and-noise","title":"Uncovering the Signal Amid the Noise","description":"Interactive comparisons of moving averages, the Savitzky-Golay filter, and edge-padding strategies for denoising a signal.","parent":"qed/interactive-components/magazine-5","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":645,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%205/Uncovering%20the%20Signal%20Amid%20the%20Noise","demo":"https://qed.mat.uam.es/revista/articulo/ruido","url":"https://tablerus.es/projects/qed/interactive-components/magazine-5/signal-and-noise","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-5/signal-and-noise.md"},{"slug":"qed/interactive-components/magazine-5/svd","title":"Singular Value Decomposition","description":"Visualizing SVD as a rotate-stretch-rotate transformation and applying it to low-rank image compression.","parent":"qed/interactive-components/magazine-5","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":561,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%205/What%20Is%20SVD%20and%20What%20Is%20It%20Used%20For","demo":"https://qed.mat.uam.es/revista/articulo/descomposicion-svd","url":"https://tablerus.es/projects/qed/interactive-components/magazine-5/svd","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-5/svd.md"}],"technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":98,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%205","demo":"https://qed.mat.uam.es/revista/2025-26","url":"https://tablerus.es/projects/qed/interactive-components/magazine-5","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-5.md"},{"slug":"qed/interactive-components/shared","title":"Shared Interactive Element Framework","description":"A small framework of base classes and geometry engines reused across dozens of QED magazine interactive elements.","parent":"qed/interactive-components","technologies":["JavaScript"],"date":"2026-07-01","words":1007,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Shared","url":"https://tablerus.es/projects/qed/interactive-components/shared","markdown":"https://tablerus.es/projects/qed/interactive-components/shared.md"},{"slug":"qed/interactive-components/magazine-3","title":"Magazine 3 (2023-24)","description":"Interactive elements built for the third edition of QED Magazine.","parent":"qed/interactive-components","children":[{"slug":"qed/interactive-components/magazine-3/angular-defect","title":"Angular Defect","description":"An unfolded-vertex visualization of Descartes' theorem that the total angular defect of a convex polyhedron is always 4π.","parent":"qed/interactive-components/magazine-3","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":638,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%203/J'ai%20un%20rêve%20(I%20have%20a%20dream)/angularDefect.js","demo":"https://qed.mat.uam.es/revista/articulo/reve","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3/angular-defect","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3/angular-defect.md"},{"slug":"qed/interactive-components/magazine-3/communication-theory","title":"The Wings of Information: Communication Theory","description":"Two interactive elements on information theory: a Huffman-tree entropy visualization, and a parity/Hamming-code error detection and correction sandbox.","parent":"qed/interactive-components/magazine-3","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":842,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%203/The%20Wings%20of%20Information%20-%20An%20In-depth%20Look%20at%20Communication%20Theory","demo":"https://qed.mat.uam.es/revista/articulo/teoria-comunicacion","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3/communication-theory","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3/communication-theory.md"},{"slug":"qed/interactive-components/magazine-3/mathematical-findings-2023","title":"Tile Workshop","description":"An editable-tiling sandbox where dragging one edge of a mother tile deforms its paired edge in consequence, so the shape never stops tiling the plane.","parent":"qed/interactive-components/magazine-3","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":572,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%203/Mathematical%20Findings%20in%202023/tileworkshop.js","demo":"https://qed.mat.uam.es/revista/articulo/hallazgos-2023","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3/mathematical-findings-2023","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3/mathematical-findings-2023.md"},{"slug":"qed/interactive-components/magazine-3/rubiks-cube","title":"The Mathematics of the Rubik's Cube","description":"Two interactive elements exploring the Rubik's Cube as a permutation group: cycle notation and decomposition, and a full 3×3×3 model with its legality invariants.","parent":"qed/interactive-components/magazine-3","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":852,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%203/The%20Mathematics%20of%20the%20Rubik’s%20Cube","demo":"https://qed.mat.uam.es/revista/articulo/rubik","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3/rubiks-cube","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3/rubiks-cube.md"},{"slug":"qed/interactive-components/magazine-3/symmetries","title":"Canonical Coordinates","description":"A side-by-side view of how a Lie symmetry acts as a rotation in Cartesian coordinates and a translation in canonical ones.","parent":"qed/interactive-components/magazine-3","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":437,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%203/Exploring%20the%20Power%20of%20Symmetries/canonicalCoordinates.js","demo":"https://qed.mat.uam.es/revista/articulo/simetrias","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3/symmetries","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3/symmetries.md"},{"slug":"qed/interactive-components/magazine-3/numdoku","title":"Numdoku Puzzle","description":"A number-placement puzzle where clusters of four cells around a circle must sum to a target value, with no repeated digits.","parent":"qed/interactive-components/magazine-3","technologies":["JavaScript","Tailwind CSS"],"date":"2025-06-01","words":384,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%203/Puzzles/numdoku.js","demo":"https://qed.mat.uam.es/revista/articulo/acertijos-3","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3/numdoku","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3/numdoku.md"}],"technologies":["JavaScript","Tailwind CSS"],"date":"2025-06-01","dateEnd":"2026-07-01","words":177,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%203","demo":"https://qed.mat.uam.es/revista/2023-24","url":"https://tablerus.es/projects/qed/interactive-components/magazine-3","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-3.md"},{"slug":"qed/interactive-components/magazine-2","title":"Magazine 2 (2022-23)","description":"Interactive elements built for the second edition of QED Magazine.","parent":"qed/interactive-components","children":[{"slug":"qed/interactive-components/magazine-2/close-to-the-sphere","title":"Close to the Sphere","description":"Two visualizations of the quantitative isoperimetric inequality: a live asymmetry-versus-deficit explorer and a sharp-exponent verifier.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":697,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%202/Close%20to%20the%20Sphere","demo":"https://qed.mat.uam.es/revista/articulo/cerca-esfera","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/close-to-the-sphere","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/close-to-the-sphere.md"},{"slug":"qed/interactive-components/magazine-2/dihedral-group","title":"Dihedral Group Explorer","description":"An interactive board-and-Cayley-table pair for exploring the dihedral group of symmetries of a regular polygon.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":674,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%202/Reflect%20and%20Rotate/dihedralGroup.js","demo":"https://qed.mat.uam.es/revista/articulo/reflexionar-rotar","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/dihedral-group","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/dihedral-group.md"},{"slug":"qed/interactive-components/magazine-2/pocket-math","title":"Pocket Math: A Brief Introduction to your Mobile Phone","description":"Three visualizations of the cryptography behind everyday phone security: Diffie-Hellman key exchange, the discrete logarithm problem, and elliptic curve group law.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":927,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%202/Pocket%20Math%20-%20A%20Brief%20Introduction%20to%20your%20Mobile%20Phone","demo":"https://qed.mat.uam.es/revista/articulo/matematicas-movil","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/pocket-math","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/pocket-math.md"},{"slug":"qed/interactive-components/magazine-2/quadratic-formula","title":"Real and Complex Quadratic Roots","description":"A dual-panel visualization pairing the parabola with the complex plane to illustrate the quadratic formula's derivation via conjugate roots.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":762,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%202/A%20Never%20Seen%20Before%20Method%20to%20Obtain%20the%20Second%20Degree%20Formula/quadraticRootsRealAndComplex.js","demo":"https://qed.mat.uam.es/revista/articulo/formula-segundo-grado","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/quadratic-formula","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/quadratic-formula.md"},{"slug":"qed/interactive-components/magazine-2/regiomontanus-problem","title":"The Problem of Regiomontanus","description":"Three visualizations reconstructing Regiomontanus's pre-calculus optimal-viewing-distance problem: the angle itself, the sine-sum diagram, and the means-inequality construction.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":1139,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%202/The%20Problem%20of%20Regiomontanus","demo":"https://qed.mat.uam.es/revista/articulo/regiomontano","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/regiomontanus-problem","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/regiomontanus-problem.md"},{"slug":"qed/interactive-components/magazine-2/second-woman-fields-medallist","title":"Second Woman Fields Medallist: E8 and Sphere Packing","description":"Two visualizations of Maryna Viazovska's Fields-Medal-winning work on the densest sphere packing in 8 dimensions.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":644,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%202/Second%20Woman%20Fields%20Medallist","demo":"https://qed.mat.uam.es/revista/articulo/medallista-fields","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/second-woman-fields-medallist","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/second-woman-fields-medallist.md"},{"slug":"qed/interactive-components/magazine-2/crossword","title":"Interactive Crossword (Empty-Cell Variant)","description":"The enhanced crossword engine with explicit empty-cell styling, reused unchanged across later magazine editions.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2024-06-01","words":664,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%202/Puzzles/crossword.js","demo":"https://qed.mat.uam.es/revista/articulo/acertijos-4","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/crossword","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/crossword.md"},{"slug":"qed/interactive-components/magazine-2/kenken","title":"KenKen Logic Puzzle","description":"An implementation of the KenKen mathematical puzzle requiring logic and arithmetic operations.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2024-06-01","words":347,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%202/Puzzles/kenKen.js","demo":"https://qed.mat.uam.es/revista/articulo/acertijos-2","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/kenken","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/kenken.md"},{"slug":"qed/interactive-components/magazine-2/numbrix","title":"Numbrix Path Puzzle","description":"A sequential logic puzzle where players must complete a path of consecutive numbers.","parent":"qed/interactive-components/magazine-2","technologies":["JavaScript","Tailwind CSS"],"date":"2024-06-01","words":287,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%202/Puzzles/numbrix.js","demo":"https://qed.mat.uam.es/revista/articulo/acertijos-2","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2/numbrix","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2/numbrix.md"}],"technologies":["JavaScript","Tailwind CSS"],"date":"2024-06-01","dateEnd":"2026-07-01","words":220,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%202","demo":"https://qed.mat.uam.es/revista/2022-23","url":"https://tablerus.es/projects/qed/interactive-components/magazine-2","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-2.md"},{"slug":"qed/interactive-components/magazine-1","title":"Magazine 1 (2021-22)","description":"Interactive elements built for the first edition of QED Magazine.","parent":"qed/interactive-components","children":[{"slug":"qed/interactive-components/magazine-1/enigma","title":"The Enigma Machine","description":"A working simulation of the WWII Enigma cipher, tracing every letter through plugboard, rotors, and reflector.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":619,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/A%20Brief%20Introduction%20to%20the%20Nazi%20Code%20-%20Enigma/enigmaMachine.js","demo":"https://qed.mat.uam.es/revista/articulo/enigma","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/enigma","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/enigma.md"},{"slug":"qed/interactive-components/magazine-1/goldbach-explorer","title":"Goldbach Conjecture Explorer","description":"An interactive prime-pair explorer that shows why Goldbach's conjecture looks trivial and why brute force can never prove it.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":497,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/Uncle%20Petros%20and%20Goldbach's%20Conjecture/goldbachExplorer.js","demo":"https://qed.mat.uam.es/revista/articulo/petros-goldbach","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/goldbach-explorer","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/goldbach-explorer.md"},{"slug":"qed/interactive-components/magazine-1/pi-aelindrome","title":"Pi Aelindrome Poetry","description":"A visualization of Anthony Etherin's pi-structured aelindrome, showing how its letter groups mirror between verses.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript"],"date":"2026-07-01","words":362,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/Poetry%20and%20Mathematics%20-%20A%20Surprising%20Relationship/aelindromePi.js","demo":"https://qed.mat.uam.es/revista/articulo/poesia-matematicas","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/pi-aelindrome","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/pi-aelindrome.md"},{"slug":"qed/interactive-components/magazine-1/polar-road-map","title":"Spain's Polar Road Map","description":"An interactive polar-coordinate map that translates between Spanish national road codes and their location relative to Madrid.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":508,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/In%20Spain%20we%20Move%20in%20Polar/planPenaPolar.js","demo":"https://qed.mat.uam.es/revista/articulo/espana-en-polares","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/polar-road-map","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/polar-road-map.md"},{"slug":"qed/interactive-components/magazine-1/wavelet-compression","title":"Wavelet Image Compression","description":"A demonstration of why keeping the largest Haar wavelet coefficients preserves an image far better than keeping the same fraction of pixels.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS"],"date":"2026-07-01","words":425,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/Wavelets/waveletImageCompression.js","demo":"https://qed.mat.uam.es/revista/articulo/ondiculas","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/wavelet-compression","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/wavelet-compression.md"},{"slug":"qed/interactive-components/magazine-1/bach","title":"Bach Raised to Twelve","description":"An exploration of mathematical music theory through audio synthesis.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript"],"date":"2024-01-01","words":436,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/Bach%20Raised%20to%20Twelve/sounds.js","demo":"https://qed.mat.uam.es/revista/articulo/bach-elevado-12","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/bach","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/bach.md"},{"slug":"qed/interactive-components/magazine-1/crossword","title":"Interactive Crossword","description":"A dynamic crossword puzzle engine featuring real-time validation and grid management.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS"],"date":"2024-01-01","words":618,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%202/Puzzles/crossword.js","demo":"https://qed.mat.uam.es/revista/articulo/acertijos","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/crossword","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/crossword.md"},{"slug":"qed/interactive-components/magazine-1/esther-klein","title":"Esther Klein Theorem","description":"Visualizing the Happy Ending problem in computational geometry.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS"],"date":"2024-01-01","words":359,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/blob/main/Magazine%201/Open%20Problems/estherKlein.js","demo":"https://qed.mat.uam.es/revista/articulo/problemas-abiertos","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/esther-klein","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/esther-klein.md"},{"slug":"qed/interactive-components/magazine-1/fractals","title":"The Fractal Dimension","description":"A comprehensive suite of fractal generators including Cantor, Sierpinski, and Koch curves.","parent":"qed/interactive-components/magazine-1","technologies":["JavaScript","Tailwind CSS","WebGL"],"date":"2024-01-01","words":699,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%201/The%20Fractal%20Dimension","demo":"https://qed.mat.uam.es/revista/articulo/dimension-fractal","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1/fractals","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1/fractals.md"}],"technologies":["JavaScript","Tailwind CSS","WebGL"],"date":"2024-01-01","dateEnd":"2026-07-01","words":194,"license":"MIT","repository":"https://github.com/HectorTablero/QED-Scripts/tree/main/Magazine%201","demo":"https://qed.mat.uam.es/revista/2021-22","url":"https://tablerus.es/projects/qed/interactive-components/magazine-1","markdown":"https://tablerus.es/projects/qed/interactive-components/magazine-1.md"}],"technologies":["JavaScript","Tailwind CSS","WebGL"],"date":"2024-01-01","dateEnd":"2026-07-01","words":1078,"license":"MIT","repository":"https://github.com/QED-UAM/QED-Website/blob/main/public/js/postInteractiveElements.js","demo":"https://qed.mat.uam.es/revista","url":"https://tablerus.es/projects/qed/interactive-components","markdown":"https://tablerus.es/projects/qed/interactive-components.md","summary":"https://tablerus.es/projects/qed/interactive-components.md?type=summary"}],"technologies":["Node.js","Express","MongoDB","EJS","i18n","Brevo","Tailwind CSS","TypeScript","JavaScript","Three.js","WebGL"],"date":"2024-01-01","dateEnd":"2026-07-01","words":1390,"license":"MIT","repository":"https://github.com/QED-UAM/QED-Website","demo":"https://qed.mat.uam.es","url":"https://tablerus.es/projects/qed","markdown":"https://tablerus.es/projects/qed.md","summary":"https://tablerus.es/projects/qed.md?type=summary"}],"articles":[{"slug":"rapidpipe","title":"RapidPipe: An Advanced Data Orchestration Framework","description":"A lightweight orchestration engine with declarative input names (including time‑windowed). RapidPipe resolves dependencies, calculates storage needs, and uses fine‑grained task scheduling and built-in garbage collection, profiling and visualization.","date":"2026-05-29","venue":"Journal of Open Source Software (JOSS) (pending)","words":1151,"readingTime":6,"project":"rapidpipe","url":"https://tablerus.es/articles/rapidpipe","markdown":"https://tablerus.es/articles/rapidpipe.md"},{"slug":"aimlas","title":"AIMLaS: A Multimodal System for Automated Labeling and Feedback Generation in Oral Presentations","description":"Design and implementation of AIMLaS, a multimodal architecture that extracts behavioral biometrics and leverages Large Language Models (LLMs) to automate public speaking assessment under the Privacy by Design paradigm.","date":"2026-05-20","venue":"Bachelor's Thesis (UAM) (accepted)","annexes":["A. Prompts and Generated Feedback","B. Dynamic Detection System"],"words":14817,"readingTime":75,"project":"slide-matching","url":"https://tablerus.es/articles/aimlas","markdown":"https://tablerus.es/articles/aimlas.md"},{"slug":"image-diffusion","title":"Development of an Image Generation Module via Diffusion Models","description":"A modular Python package for diffusion-based image generation supporting multiple additional tasks including colorization, inpainting, and class-conditioning. Includes an interactive dashboard and comprehensive evaluation benchmarks.","date":"2025-04-30","annexes":["A. Technical Material","B. Additional Examples","C. Exhaustive Comparisons"],"words":9404,"readingTime":48,"project":"image-diffusion","url":"https://tablerus.es/articles/image-diffusion","markdown":"https://tablerus.es/articles/image-diffusion.md"}]}