# jmrp.io > Personal technical blog and portfolio of José Manuel Requena Plens — R&D Engineer specializing in Embedded Systems, Acoustics, and Industrial Software Development. Last updated: 2026-08-02 For comprehensive context including blog post topics, FAQs, and tool features, see [llms-full.txt](https://jmrp.io/llms-full.txt). ## About José Manuel Requena Plens (JMRP) is a multidisciplinary engineer working across firmware, embedded systems, and applied research. Background in solar-inverter firmware and industrial control systems, Acoustics research, noise mitigation for the European Space Agency (ESA), and biomedical ultrasound at UPV. Active open source contributor and self-hoster. ## Sections - [Blog](https://jmrp.io/blog/): Technical articles on Nginx, MikroTik, networking, security, embedded firmware, and DevOps - [About](https://jmrp.io/about/): Who José Manuel Requena Plens is — firmware & software engineer, background, and featured open-source projects - [CV](https://jmrp.io/cv/): Professional curriculum vitae and experience - [Publications](https://jmrp.io/publications/): Academic papers on acoustics, metamaterials, and ultrasound - [Homelab](https://jmrp.io/homelab/): Self-hosted infrastructure — Mastodon, Matrix, AT Protocol PDS, Tor relays - [Projects](https://jmrp.io/projects/): Curated open-source software he authors and maintains — MCP servers, acoustics tooling, network security; language, license, source and docs per project - [Tools](https://jmrp.io/tools/): Free browser-based developer tools; all run in the browser except the certificate inspector and HTTP header analyzer, which fetch the target you ask them to inspect - [Uses](https://jmrp.io/uses/): Hardware, software, and homelab kept in rotation - [Privacy](https://jmrp.io/privacy/): What the site measures — self-hosted analytics beacon, no cookies, no third-party requests, no ads ## Blog Posts - [Mastering Mutual TLS (mTLS) with Nginx: A Deep Dive](https://jmrp.io/blog/001-secure-nginx-client-certificates/): Implement Mutual TLS (mTLS) with Nginx — create a CA, generate client certificates, configure CRL and OCSP revocation, and enable Zero Trust. - [Mastering Virtual Files in Nginx: A Complete Guide](https://jmrp.io/blog/002-serve-virtual-files-nginx/): Serve virtual files in Nginx without disk I/O. Covers root vs alias vs try_files, named locations, Kubernetes health endpoints, and containers. - [Content Security Policy (CSP) with Nginx: The Complete Guide](https://jmrp.io/blog/003-implementing-content-security-policy-nginx/): Master Content Security Policy from zero to A+ — nonces, hashes, strict-dynamic, Trusted Types, bypass prevention, and production Nginx configs. - [Mastering QUIC and HTTP/3 with Nginx: The Complete Guide](https://jmrp.io/blog/004-enabling-quic-http3-nginx/): Deep dive into QUIC and HTTP/3 — technical architecture, security features, and step-by-step Nginx configuration for production deployment. - [Implementing a Tarpit in Nginx: Trap Malicious Scanners](https://jmrp.io/blog/005-implementing-tarpit-nginx/): Implement an Nginx tarpit to slow down and trap malicious bots, vulnerability scanners, and brute-force attackers. Includes CrowdSec integration. - [MikroTik Honeypot: Trap & Auto-Block Port Scanners](https://jmrp.io/blog/006-implementing-mikrotik-honeypot/): Configure a MikroTik honeypot to detect port scanners, log malicious activity, and auto-block attackers using firewall address lists and the RAW table. - [MikroTik WireGuard VPN: Dual-Stack IPv4/IPv6 Configuration](https://jmrp.io/blog/007-mikrotik-wireguard-dual-stack-vpn/): Configure WireGuard VPN on MikroTik RouterOS with full IPv4/IPv6 dual-stack. Access your home network with native IPv6 from any connection. - [MikroTik PPPoE + DHCPv6-PD: Dual-Stack for DIGI Spain](https://jmrp.io/blog/008-mikrotik-pppoe-dualstack-digi/): Configure PPPoE with DHCPv6 Prefix Delegation on MikroTik RouterOS for DIGI Spain. VLAN tagging, SLAAC, prefix change handling, and firewall rules. - [Running a Tor Bridge on Linux: obfs4 and WebTunnel Guide](https://jmrp.io/blog/009-running-tor-bridge/): Guide to running obfs4 and WebTunnel Tor bridges on Linux with Nginx camouflage, firewall hardening, Prometheus monitoring, and CrowdSec. - [What the Linker Won't Do: Packing i18n Strings on an MCU](https://jmrp.io/blog/010-packed-i18n-string-pool/): A build-time generator packs firmware UI translations into one string pool indexed by uint16 offsets, halving the index table on a 32-bit MCU. - [A Vault File That Fails Closed: Encrypt-then-MAC on an MCU](https://jmrp.io/blog/011-encrypt-then-mac-vault/): How a hardware password manager authenticates every vault file before it decrypts: encrypt-then-MAC, verify-before-decrypt, and fail-closed reads. - [Your 4-Digit PIN Is Fine: Device-Bound Keys on ESP32-S3](https://jmrp.io/blog/012-device-bound-key-derivation/): Why PBKDF2 iterations can't protect a 4-digit PIN on a microcontroller, and how an eFuse-HMAC device secret plus HKDF stops offline brute force. ## Blog Posts (Español) - [Dominando Mutual TLS (mTLS) con Nginx: Una Guía Completa](https://jmrp.io/es/blog/001-secure-nginx-client-certificates/): Implementa Mutual TLS (mTLS) con Nginx — crea una CA, genera certificados de cliente, configura revocación CRL y OCSP, y habilita Zero Trust. - [Domina los archivos virtuales en Nginx: Guía completa](https://jmrp.io/es/blog/002-serve-virtual-files-nginx/): Sirve archivos virtuales en Nginx sin I/O de disco. Cubre root vs alias vs try_files, named locations, endpoints de salud en Kubernetes y containers. - [Content Security Policy (CSP) con Nginx: La Guía Completa](https://jmrp.io/es/blog/003-implementing-content-security-policy-nginx/): Domina Content Security Policy de cero a A+ — nonces, hashes, strict-dynamic, Trusted Types, prevención de bypass y configuraciones Nginx en producción. - [Dominando QUIC y HTTP/3 con Nginx: La Guía Completa](https://jmrp.io/es/blog/004-enabling-quic-http3-nginx/): Inmersión profunda en QUIC y HTTP/3 — arquitectura técnica, seguridad y configuración paso a paso de Nginx para despliegue en producción. - [Implementar un Tarpit en Nginx: Atrapa a los Escáneres Maliciosos](https://jmrp.io/es/blog/005-implementing-tarpit-nginx/): Implementa un tarpit en Nginx para ralentizar bots maliciosos, escáneres de vulnerabilidades y ataques de fuerza bruta. Integración con CrowdSec incluida. - [Honeypot en MikroTik: Atrapa y Bloquea Escáneres de Puertos](https://jmrp.io/es/blog/006-implementing-mikrotik-honeypot/): Configura un honeypot en MikroTik para detectar escáneres de puertos, registrar actividad maliciosa y bloquear atacantes automáticamente con la tabla RAW. - [WireGuard en MikroTik: Configuración Completa Dual-Stack IPv4/IPv6](https://jmrp.io/es/blog/007-mikrotik-wireguard-dual-stack-vpn/): Configura WireGuard en MikroTik RouterOS con dual-stack IPv4/IPv6 completo. Accede a tu red doméstica con IPv6 nativo desde cualquier conexión. - [MikroTik PPPoE + DHCPv6-PD: Dual-Stack para DIGI España](https://jmrp.io/es/blog/008-mikrotik-pppoe-dualstack-digi/): Configura PPPoE con DHCPv6 Prefix Delegation en MikroTik RouterOS para DIGI España. VLAN tagging, SLAAC, gestión de cambios de prefix y firewall. - [Ejecutando un Bridge Tor en Linux: Guía Completa obfs4 y WebTunnel](https://jmrp.io/es/blog/009-running-tor-bridge/): Guía para ejecutar bridges Tor obfs4 y WebTunnel en Linux con camuflaje Nginx, firewall, monitoreo Prometheus e integración CrowdSec. - [Lo que el linker no hará: empaquetar cadenas i18n en un MCU](https://jmrp.io/es/blog/010-packed-i18n-string-pool/): Un generador empaqueta las traducciones del firmware en un pool indexado por offsets uint16, reduciendo a la mitad la tabla índice en un MCU de 32 bits. - [Una bóveda con bloqueo ante fallos: Encrypt-then-MAC en un MCU](https://jmrp.io/es/blog/011-encrypt-then-mac-vault/): Cómo un gestor de contraseñas hardware autentica cada fichero antes de descifrar: Encrypt-then-MAC, verificación antes de descifrar y bloqueo ante fallos. - [Un PIN de 4 dígitos basta: claves vinculadas al ESP32-S3](https://jmrp.io/es/blog/012-device-bound-key-derivation/): Por qué las iteraciones de PBKDF2 no protegen un PIN de 4 dígitos en un MCU, y cómo un secreto del dispositivo más HKDF frenan la fuerza bruta offline. ## Developer Tools - [Base64 Encoder / Decoder](https://jmrp.io/tools/base64-encoder/): Encode and decode Base64, Base64URL, URL encoding, hex, and HTML entities. File support for images and documents. Runs client-side. - [Certificate Inspector](https://jmrp.io/tools/cert-inspector/): Decode PEM SSL/TLS certificates or fetch from a URL client-side. Inspect subject, issuer, validity, SANs, key usage, and security assessment. - [Color Contrast Checker](https://jmrp.io/tools/color-contrast-checker/): Check color contrast ratios for WCAG 2.2 AA and AAA compliance with APCA support, color blindness simulation, and auto-fix suggestions. - [Cron Expression Builder](https://jmrp.io/tools/cron-builder/): Visual cron expression builder with interactive field selectors, common presets, next execution preview, crontab line output, and shareable links. - [CSP Hash Calculator](https://jmrp.io/tools/hash-calculator/): Generate SHA-256 hashes for inline scripts. Get ready-to-use CSP directives for your Content Security Policy. - [CSP Policy Builder](https://jmrp.io/tools/csp-builder/): Build Content Security Policy headers interactively. Toggle directives, see real-time policy generation, and get security ratings for your CSP. - [Encrypt-then-MAC Envelope Visualizer](https://jmrp.io/tools/etm-envelope-visualizer/): Seal a secret into an encrypt-then-MAC envelope, flip a byte, and watch the read verify the tag before decrypting — and fail closed on tampering. - [HTTP Security Headers Analyzer](https://jmrp.io/tools/http-headers-analyzer/): Analyze HTTP response headers for security best practices. Get a security score, recommendations, and detailed analysis for each header. - [IP / Subnet Calculator](https://jmrp.io/tools/subnet-calculator/): IPv4 and IPv6 subnet calculator with CIDR notation, VLSM planner, range-to-CIDR converter, reverse DNS, and bit boundary visualization. - [Modbus Frame Builder](https://jmrp.io/tools/modbus-frame-builder/): Build and decode Modbus RTU/TCP/ASCII frames with CRC-16/LRC calculation, register interpretation, response builder, and byte visualization. - [Nginx Config Generator](https://jmrp.io/tools/nginx-config-generator/): Generate Nginx server blocks with upstream, QUIC/HTTP3, rate limiting, tarpit, OCSP stapling, Brotli, and modern TLS best practices. - [Offline PIN Brute-Force Calculator](https://jmrp.io/tools/pin-brute-force-calculator/): Estimate how long an offline GPU takes to brute-force a PIN through PBKDF2 — then toggle device binding and watch it become infeasible. - [Password Generator](https://jmrp.io/tools/password-generator/): Generate strong passwords and passphrases using the Web Crypto API. Estimate entropy, crack time, and customize character sets — all client-side. - [Regex Tester](https://jmrp.io/tools/regex-tester/): Test regular expressions with real-time match highlighting, capture groups, replace mode, and common pattern presets. Runs in your browser. - [String-Pool Packer](https://jmrp.io/tools/string-pool-packer/): Compare a pointer table vs a packed, tail-merged string pool with uint16 offsets. Paste strings and watch dedup, tail-merge, and bytes saved. - [Timestamp Converter](https://jmrp.io/tools/timestamp-converter/): Convert Unix timestamps to human-readable dates and vice versa. Supports seconds, milliseconds, ISO 8601, RFC 2822, and timezone comparison. - [WireGuard Config Generator](https://jmrp.io/tools/wireguard-config-generator/): Generate complete MikroTik RouterOS WireGuard VPN configurations with dual-stack IPv4/IPv6, firewall rules, NAT, peers, and client config files. ## Developer Tools (Español) - [Analizador de Cabeceras HTTP de Seguridad](https://jmrp.io/es/tools/http-headers-analyzer/): Analiza cabeceras HTTP de respuesta y buenas prácticas de seguridad. Obtén puntuación, recomendaciones y análisis detallado de cada cabecera. - [Calculadora de fuerza bruta offline de PIN](https://jmrp.io/es/tools/pin-brute-force-calculator/): Estima cuánto tarda una GPU offline en romper un PIN por fuerza bruta con PBKDF2; activa la vinculación al chip y mira cómo se vuelve inviable. - [Calculadora de Hashes CSP](https://jmrp.io/es/tools/hash-calculator/): Genera hashes SHA-256 para scripts inline. Obtén directivas CSP listas para usar en tu Content Security Policy. - [Calculadora de Subredes IP](https://jmrp.io/es/tools/subnet-calculator/): Calculadora de subredes IPv4 e IPv6 con notación CIDR, planificador VLSM, conversor de rangos a CIDR, DNS inverso y visualización de bits. - [Codificador / Decodificador Base64](https://jmrp.io/es/tools/base64-encoder/): Codifica y decodifica Base64, Base64URL, URL encoding, hex y entidades HTML. Soporte de archivos para imágenes y documentos. Todo en el navegador. - [Constructor de Expresiones Cron](https://jmrp.io/es/tools/cron-builder/): Constructor visual de expresiones cron con selectores interactivos, presets comunes, vista previa de ejecuciones y línea crontab lista para usar. - [Constructor de Políticas CSP](https://jmrp.io/es/tools/csp-builder/): Construye cabeceras Content Security Policy de forma interactiva. Activa directivas, genera la política en tiempo real y evalúa su seguridad. - [Constructor de Tramas Modbus](https://jmrp.io/es/tools/modbus-frame-builder/): Construye y decodifica tramas Modbus RTU/TCP/ASCII con cálculo de CRC-16/LRC, interpretación de registros y visualización de bytes. - [Conversor de Timestamps](https://jmrp.io/es/tools/timestamp-converter/): Convierte timestamps Unix a fechas legibles y viceversa. Soporta segundos, milisegundos, ISO 8601, RFC 2822 y comparación de zonas horarias. - [Empaquetador de String Pool](https://jmrp.io/es/tools/string-pool-packer/): Compara una tabla de punteros con un pool de cadenas empaquetado y tail-merged con offsets uint16. Pega cadenas y observa el dedup y el ahorro. - [Generador de Configuración Nginx](https://jmrp.io/es/tools/nginx-config-generator/): Genera bloques de servidor Nginx con upstream, QUIC/HTTP3, rate limiting, tarpit, OCSP stapling, Brotli y buenas prácticas TLS modernas. - [Generador de Configuración WireGuard](https://jmrp.io/es/tools/wireguard-config-generator/): Genera configuraciones completas de VPN WireGuard para MikroTik RouterOS con dual-stack IPv4/IPv6, reglas de firewall, NAT, peers y archivos de cliente. - [Generador de Contraseñas](https://jmrp.io/es/tools/password-generator/): Genera contraseñas y frases de contraseña seguras con la Web Crypto API. Estima entropía, tiempo de descifrado y personaliza conjuntos de caracteres. - [Inspector de Certificados](https://jmrp.io/es/tools/cert-inspector/): Decodifica certificados SSL/TLS en formato PEM o descárgalos desde una URL en el navegador. Inspecciona sujeto, emisor, validez, SANs y seguridad. - [Probador de Regex](https://jmrp.io/es/tools/regex-tester/): Prueba expresiones regulares con resaltado en tiempo real, capture groups, modo de reemplazo y presets de patrones comunes. Se ejecuta en tu navegador. - [Verificador de Contraste de Color](https://jmrp.io/es/tools/color-contrast-checker/): Comprueba ratios de contraste de color para WCAG 2.2 AA y AAA con soporte APCA, simulación de daltonismo y sugerencias automáticas. - [Visualizador del sobre Encrypt-then-MAC](https://jmrp.io/es/tools/etm-envelope-visualizer/): Sella un secreto en un sobre encrypt-then-MAC, altera un byte y observa cómo la lectura verifica el tag antes de descifrar y se bloquea ante el fallo. ## Contact - [GitHub](https://github.com/jmrplens) - [LinkedIn](https://www.linkedin.com/in/jmrplens) - [Google Scholar](https://scholar.google.com/citations?user=9b0kPaUAAAAJ) - [ORCID](https://orcid.org/0000-0003-1250-6212) - [Mastodon](https://mstdn.jmrp.io/@jmrplens) - [Email](mailto:mail@jmrp.io) ## Technical Details - Built with Astro 7 (Static Site Generation) - Bilingual: English (default) and Spanish — all content available in both languages under the /es/ prefix - Zero client-side JavaScript (except progressive enhancement islands) - WCAG 2.2 AA/AAA accessibility compliant - Content Security Policy with SRI hashes - RSS feeds: https://jmrp.io/rss.xml (EN) and https://jmrp.io/es/rss.xml (ES) ## Optional - [Person entity (JSON-LD)](https://jmrp.io/identity/person.jsonld): Machine-readable identity node for the author - [Full context](https://jmrp.io/llms-full.txt): Every post and tool expanded, both languages in one document (~1.2 MB) - [Full context, English only](https://jmrp.io/llms-full-en.txt): The same document scoped to the English corpus, for pipelines that cap document size - [Full context, Spanish only](https://jmrp.io/llms-full-es.txt): The same document scoped to the Spanish corpus - [RSS feed (EN)](https://jmrp.io/rss.xml): English blog feed - [RSS feed (ES)](https://jmrp.io/es/rss.xml): Spanish blog feed