Ingeniero de software · sistemas de producto · interacción

Hago que los sistemas complejos sean legibles, táctiles y dignos de explorar.

Me muevo entre diseño de producto e ingeniería porque el trabajo más interesante rara vez pertenece a una sola disciplina. Me gusta empezar con una pregunta, un boceto, un prototipo o un comportamiento extraño que merezca entenderse, y después dar a lo prometedor suficiente estructura —modelos explícitos, pruebas, accesibilidad, presupuestos de rendimiento y experimentos repetibles— para que sobreviva al contacto con un producto real.

Proyectos seleccionados

Proyectos que muestran tanto la idea como el método.

Estos casos de estudio hablan menos de una lista de frameworks que de cómo un producto fue tomando forma: qué valía la pena investigar, qué se probó, qué evidencia cambió la dirección y qué descubrimientos se convirtieron en reglas duraderas de diseño o ingeniería.

Mapa del portafolioSistemas insignia

Slipmat · FireOne · Lemonade

Productos técnicos distintivos

Signal Broker · Defend · QMK / Vial

Sistemas de producto operativos

Booking · Inventory · Timeline

Servicio público y conocimiento

Kullaberg · Investigation Workbench · Workstation

01 / Sistemas multimedia

Slipmat

Un cliente multimedia centrado en la reproducción de contenido propio y autoalojado. Slipmat trata la reproducción como un sistema explícito: una línea temporal autoritativa, identidad de fuente y generación inspeccionable, un Playback Rail persistente, procesamiento de audio nativo, visualización rica y análisis musical profundo para Jellyfin y medios locales.

React 19Rust 2024Tauri v2JellyfinWASM analysis
Privado · desarrollo activo de producto Leer caso de estudio
02 / Simulación determinista

FireOne

Un juego de táctica submarina sobre incertidumbre, geometría y compromiso. La simulación autoritativa en Rust separa la verdad del mundo de lo que el jugador y la IA pueden conocer, con comportamiento ECS determinista, información incompleta basada en sonar y clientes de presentación sustituibles.

RustBevy ECSRatatuiDeterminismSimulation AI
Privado · versión preliminar jugable Leer caso de estudio
03 / Telemetría vehicular

Signal Broker

Trabajo sobre una plataforma de desarrollo para redes vehiculares que expone CAN, LIN y buses relacionados mediante gRPC, sin atar las herramientas a un lenguaje o transporte concreto. Su cliente web añade acceso por gRPC-Web y WebSocket para seleccionar, inspeccionar y graficar de forma interactiva tramas y señales decodificadas en tiempo real.

ElixirgRPCgRPC-WebCAN / LINVue
Leer caso de estudio
04 / Entorno de desarrollo

Sistema de estación de trabajo

Mis dotfiles forman una estación de trabajo reproducible y multiplataforma, no una carpeta de configuraciones copiadas: perfiles conscientes de la máquina, paquetes declarativos, límites con GNU Stow, simulaciones previas, copias de seguridad rotativas, hooks de ciclo de vida, validación CI y un instalador interactivo en Rust para macOS, Linux y Termux.

Rust TUIGNU StowmacOS + LinuxTermuxGitHub Actions
Privado · infraestructura de uso diario Leer caso de estudio
05 / Sistemas procedurales

Defend

Un proyecto 3D multiplataforma de defensa de torres que combina comportamiento procedural, física, IA, proyectiles y sonido generado en el navegador. Es un laboratorio continuo de simulación, rendimiento y sistemas que deben seguir siendo comprensibles a medida que se vuelven más dinámicos.

Babylon.jsTypeScriptPhysicsAIProcedural audio
Leer caso de estudio
06 / Entrada humana

Entorno QMK

Firmware personalizado para teclado dividido en el que las capas, los encoders, el comportamiento de repetición alternativa y la entrada programable se tratan como contratos deterministas de interacción, no como asignaciones de teclas improvisadas.

CQMKFirmwareErgonomics
Leer caso de estudio
07 / Configuración de firmware

Vial / Halcyon Control Center

Un sistema coordinado de firmware, protocolo HID y configuración web para exponer ajustes de pantalla TFT, telemetría, perfiles RGB y semántica de entrada del Halcyon Ferris sin debilitar la compatibilidad estándar de Vial.

VialQMKRaw HIDWeb tooling
Público · desarrollo activo Leer caso de estudio
08 / Simulación económica

Lemonade

Una reconstrucción moderna del clásico Lemonade Stand alrededor de un pequeño conjunto de decisiones con consecuencias: precio, inventario y publicidad bajo condiciones cambiantes de clima y mercado, mientras la simulación revela gradualmente una estructura económica más amplia.

TypeScript 6Vite 8Three.jsWeb Audio
Público · reconstrucción activa Leer caso de estudio
09 / Plataformas configurables

Booking

Una plataforma de reservas configurable que modela citas, reservas de capacidad y estancias como contratos de planificación distintos, con auditabilidad y evidencia de cadena de suministro integradas en el espacio de trabajo.

TypeScriptDomain modelingCodeQLCycloneDX
Público · desarrollo activo Leer caso de estudio
10 / Operaciones local-first

Inventory

Una PWA de inventario local-first reforzada para préstamos, responsabilidad sobre artículos atrasados, trabajo offline, copia/exportación y un historial claro de entidades sin depender de un servidor para seguir siendo útil.

PWALocal-firstOfflineBackup
Público · desarrollo activo Leer caso de estudio
11 / Modelado de información

Timeline

Un espacio responsivo para eventos, intervalos, categorías e historias, diseñado para convertir la cronología en narrativas estructuradas en lugar de una lista plana de fechas.

EventsRangesCategoriesStories
Público · desarrollo activo Leer caso de estudio

Sistemas adicionales

Más aplicaciones, experimentos y trabajo anterior en GitHub

Trayectoria profesional

La profundidad de diseño se convirtió en profundidad de ingeniería sin sustituir el instinto de diseño.

Mi recorrido pasa por diseño gráfico, producción multimedia y docencia hasta software de servicio público, grandes interfaces de planificación e ingeniería de sistemas. Sigo tratando el código como material de diseño: algo capaz de aclarar una idea, mostrar sus límites y hacer que una interacción parezca inevitable en lugar de simplemente funcional.

Material público histórico documenta trabajo en aplicaciones frontend para Länsstyrelsen Skåne y una etapa anterior de liderazgo en diseño, multimedia y docencia universitaria. Material público de LinkedIn también documenta colaboración estrecha en la reconstrucción de IKEA Kitchen Planner y las herramientas IKEA Planner con React, TypeScript y una ingeniería frontend centrada en accesibilidad.

La progresión me importa más que una cronología de frameworks. Cada etapa añadió otra forma de poner a prueba una idea: composición visual, interacción, observación de usuarios, modelado de estado, rendimiento, simulación determinista y verificación automatizada. El objetivo no es sustituir la intuición por proceso, sino darle mejores instrumentos.

Leer la trayectoria profesional

Perfil

Me interesan los sistemas que pueden sorprenderme sin volverse arbitrarios.

El trabajo se vuelve interesante cuando una pequeña decisión cambia un modelo físico, un estado oculto se vuelve visible, una simulación enseña algo inesperado o una herramienta da a alguien un poco más de agencia que antes.

Me muevo con comodidad entre pensamiento de producto, diseño visual e interacción e implementación. Me gustan las superficies mínimas con gran capacidad, los prototipos lúdicos que revelan una dirección mejor y los sistemas cuyo comportamiento acaba pudiendo explicarse con precisión.

El medio cambia —reproducción multimedia, juegos, telemetría de vehículos, software de servicio público, entornos de desarrollo, grafos de conocimiento o entrada programable— pero el patrón se mantiene: la curiosidad abre el espacio, el modelado disciplinado mantiene la coherencia y la automatización protege suficiente tiempo para seguir experimentando.

Principios de trabajo

Un proceso disciplinado debería crear más espacio para el asombro, no menos.

01

Empieza por la pregunta interesante.

Dibújala, prototípala, simúlala, llévala a hardware real o empújala deliberadamente demasiado lejos. El trabajo temprano debe hacer el descubrimiento lo bastante barato como para que un resultado sorprendente pueda cambiar el plan.

02

Convierte los experimentos en evidencia.

Instrumenta el comportamiento. Usa semillas deterministas, laboratorios visuales, comprobaciones de accesibilidad, trazas de rendimiento y modelos de dominio explícitos para poder comparar decisiones en vez de defenderlas de memoria.

03

Automatiza lo que ya se ha ganado la permanencia.

Cuando una idea demuestra su valor, codifica la invariante en tipos, pruebas, CI y documentación. La maquinaria está para evitar regresiones y revisión repetitiva, dejando más atención humana para el siguiente problema creativo.