Introducción a los sistemas interactivos ubicuos
Cuando la computación deja de ser un lugar al que se va y se vuelve un aire que se respira.
Hay una pregunta que conviene hacerse antes de empezar este curso, y conviene hacérsela en voz baja, casi como quien se confiesa algo incómodo: ¿cuándo fue la última vez que ustedes interactuaron con una computadora? Si la respuesta fue "esta mañana, cuando abrí el laptop", están pensando en computación con la mente del siglo veinte. Si la respuesta honesta es "no sé, quizás hace cinco segundos, cuando mi reloj me vibró, o hace treinta, cuando el termostato del Uber ajustó la temperatura, o hace una hora, cuando el portón del edificio me reconoció", entonces ya están viviendo en el territorio de esta cápsula. La computación dejó de habitar el escritorio. Se mudó al ambiente. Y nosotros, sin darnos del todo cuenta, nos mudamos con ella.
Esta primera cápsula es la puerta de entrada al curso. No vamos a programar nada todavía, no vamos a diseñar prototipos, no vamos a evaluar usabilidad. Vamos a hacer algo más fundamental: vamos a ponerle nombre a lo que estamos rodeados, vamos a trazar el linaje histórico que nos trajo hasta acá, y vamos a entender por qué un investigador llamado Mark Weiser, a fines de los 80 en Xerox PARC, propuso una visión que sigue siendo —treinta y cinco años después— el norte teórico de buena parte de lo que hoy llamamos Sistemas Interactivos Ubicuos.
Figura. La distancia conceptual entre la computación de escritorio —una persona frente a una máquina— y la computación ubicua —una persona rodeada por muchas máquinas que la atienden sin pedir su atención.
¿Qué es —y qué no es— un sistema interactivo ubicuo?
Empecemos por la definición y, sobre todo, por sus bordes. Un sistema interactivo ubicuo es, en términos amplios, un sistema informático que cumple cuatro condiciones simultáneamente:
- Trasciende el ordenador de sobremesa. No se limita al monitor-teclado-mouse encerrados en una oficina. La computación se reparte en dispositivos personales, objetos cotidianos, sensores ambientales, redes de muchos nodos pequeños en lugar de uno grande.
- Se integra en el tejido de las actividades y los entornos. Vive en el hogar, en el transporte, en la calle, en el trabajo, en el cuerpo. No es algo a lo que uno "va": es algo que ya está cuando uno llega.
- Permite interacciones más naturales. Voz, gesto, tacto, presencia, contexto, mirada, ritmo cardíaco, posición en el espacio. La interfaz se reparte en modalidades que se alinean con las capacidades humanas, en lugar de obligar al humano a doblarse hacia el teclado.
- Tiende a la invisibilidad. Y este es el punto que más cuesta entender al principio, porque es contraintuitivo: el ideal de un sistema ubicuo no es exhibirse, sino desaparecer. Que el usuario piense en su tarea —cocinar, dormir, conducir, conversar, estudiar— y no en la herramienta computacional que está mediando esa tarea.
Qué no es
Conviene también demarcar lo que no es UbiComp, porque la palabra "ubicuo" se ha popularizado tanto que a veces se le pega a cualquier cosa con un chip adentro. Un televisor "smart" que requiere abrir un menú con un control remoto para cada acción no es particularmente ubicuo: es una PC con pantalla grande. Una app de fitness que demanda atención constante para registrar manualmente cada paso tampoco lo es: no se ha vuelto invisible. Un sistema domótico que sirve para impresionar visitas pero exige tres minutos de configuración para encender una luz —ese ejemplo es clásico— está en las antípodas del ideal. Lo ubicuo no se mide por la cantidad de tecnología presente, sino por la retracción de la tecnología desde el foco de atención.
Más adelante en el curso (en la cápsula sobre Calm Technology aplicada y en la de evaluación) volveremos sobre esto con métricas más rigurosas. Por ahora basta con la intuición: si una tecnología les exige atención que la tarea misma no exigiría, todavía no es ubicua.
Tres olas: cómo llegamos hasta acá
Mark Weiser, en uno de los pasajes más citados de su artículo de 1991 The Computer for the 21st Century, propuso leer la historia de la computación como una sucesión de tres grandes olas, cada una definida por la proporción entre personas y máquinas.
Primera ola — el mainframe (años 40 a 80)
Una máquina enorme, una sala entera dedicada a contenerla, aire acondicionado industrial, un sacerdocio de operadores en bata blanca. Muchas personas comparten una sola computadora. La interacción no era interactiva en el sentido moderno: era diferida —tarjetas perforadas, lotes, terminales de texto— y reservada a especialistas. La computadora era un recurso escaso, centralizado, casi mítico. Los usuarios no la veían: veían a la persona que la veía.
Segunda ola — la computadora personal (años 80 a 2000s)
Llega la PC. La interfaz gráfica WIMP (Windows, Icons, Menus, Pointer) cambia las reglas: la computación se vuelve directa, visual, accesible. La proporción se invierte: una persona, una computadora. Cada profesional tiene su máquina en el escritorio, cada hogar de clase media termina con un PC en el comedor. La computación se descentraliza y se masifica, pero sigue siendo un lugar: hay que ir a sentarse delante de ella. La metáfora del escritorio —archivos, carpetas, papelera— no es casual: el computador es un escritorio más, otro mueble.
Tercera ola — la computación ubicua (2000s al presente)
Tres fuerzas confluyen: miniaturización (chips más chicos, baratos, eficientes), conectividad inalámbrica (Wi-Fi, Bluetooth, LTE, redes mesh) y proliferación de sensores (acelerómetros, GPS, micrófonos, cámaras, biométricos) baratos como cualquier commodity. La proporción se vuelve a invertir: muchas computadoras sirven a cada persona. Un smartphone es ya una decena de computadoras (CPU, GPU, NPU, radios, controladores); a su alrededor orbitan smartwatches, auriculares, parlantes, sensores del auto, lectores de huella del portón, cámaras del campus, semáforos coordinados de la avenida. La computación se vuelve invisible no porque se esconda, sino porque se distribuye. Está por todos lados, y precisamente por eso deja de ser un lugar al que ir.
Weiser describió esa tercera ola antes de que existiera: la imaginó en Xerox PARC mientras la segunda ola apenas se consolidaba. Esa anticipación es parte de por qué su nombre sigue apareciendo en los syllabi de magíster treinta y cinco años después.
El paradigma UbiComp de Mark Weiser
Cuando Weiser acuñó el término ubiquitous computing a fines de los 80, su intuición no era simplemente cuantitativa —más computadoras, en más lugares— sino fenomenológica: cambiar la relación entre la persona y la máquina al punto de que la máquina se borre del centro de la conciencia.
En su artículo The Computer for the 21st Century (1991), abre con una frase que vale la pena memorizar:
"The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it."
Las tecnologías más profundas son las que desaparecen. Se tejen en la trama de la vida cotidiana hasta volverse indistinguibles de ella. Weiser ponía como ejemplo el motor eléctrico: a comienzos del siglo veinte, un motor eléctrico era una pieza visible, ruidosa, exhibida en cada electrodoméstico nuevo como sello de modernidad. Hoy hay docenas de motores eléctricos en cualquier cocina —en el refrigerador, en el microondas, en el extractor, en el lavavajillas— y no pensamos en ellos. No los nombramos. No los "usamos": están. La meta de Weiser era que la computación llegara al mismo estado de transparencia.
Figura. Los tres dispositivos del experimento original de Xerox PARC: las Tabs (computación de bolsillo, tamaño post-it), las Pads (tamaño cuaderno) y las Boards (pizarras del tamaño de un muro). Tres escalas de computación pensadas para coexistir en una misma sala.
Calm Technology — la tecnología serena
En 1996, junto a John Seely Brown, Weiser publica Designing Calm Technology, un texto breve pero filoso que aterriza la visión ubicua en un criterio de diseño: la tecnología debe operar en la periferia de la atención, no en el centro. La idea proviene de la psicología cognitiva: los humanos tenemos un foco atencional estrecho —podemos seguir una conversación, leer un párrafo, escribir un mail— pero también una atención periférica enorme, casi inconsciente, que registra el clima del aula, la postura de la persona al lado, el zumbido del refrigerador, la luz que cambia al atardecer. Una calm technology aprovecha esa periferia: informa sin interrumpir, está disponible sin demandar, y vuelve al foco solo cuando hace falta.
El ejemplo canónico de Weiser es la lámpara que cambia sutilmente de color según la cotización de un índice bursátil: uno no la mira, pero la nota; está al borde del campo visual, y cuando algo cambia bruscamente, el ojo se mueve solo. Compárese con una notificación push que vibra, suena y aparece en el centro de la pantalla: esa notificación es lo opuesto de calm. Es ruido en el foco.
Figura. Dos ejes que organizan la zona habitable del diseño ubicuo: invisibilidad (cuánto la tecnología se retrae del foco atencional) y adaptación (cuánto el sistema percibe y responde al contexto). El cuadrante superior derecho es el territorio de Weiser.
Los principios fundamentales
Si destilamos la visión de Weiser y la tradición posterior, el paradigma UbiComp se sostiene sobre cinco principios entrelazados:
- Invisibilidad. La tecnología se integra de forma transparente en el entorno y los objetos. El usuario interactúa con la tarea, no con la máquina.
- Context-awareness (conciencia del contexto). El sistema percibe ubicación, identidad del usuario, hora, actividad, estado físico y social, y reacciona a eso. Es la diferencia entre un timer fijo y un termostato que aprende cuándo uno llega a la casa.
- Inteligencia. No solo reaccionar, sino aprender, adaptarse, anticipar. La línea con la Ambient Intelligence —entornos digitales sensibles, responsivos, adaptativos, ubicuos e inteligentes— es porosa.
- Naturalidad en la interacción. Voz, gesto, tacto, mirada, proximidad. La máquina se dobla hacia las capacidades humanas, en lugar de exigir que el humano se doble hacia ella.
- Escalabilidad. El paradigma funciona desde lo más íntimo (un sensor en la muñeca) hasta lo más amplio (un edificio inteligente, una ciudad sensorizada).
Notarán que estos principios no son independientes: la invisibilidad sin contexto degenera en automatismo ciego; el contexto sin naturalidad de interacción produce sistemas que perciben mucho pero responden mal; la inteligencia sin escalabilidad funciona en el laboratorio y muere en la calle.
Voces que dialogan con Weiser
La visión ubicua no nace en el vacío ni se queda quieta. Conviene mencionar algunos interlocutores que aparecerán a lo largo del curso.
Donald Norman, padre del diseño centrado en el usuario, publica en 1998 The Invisible Computer, donde argumenta que el éxito de una tecnología se mide por su capacidad de volverse appliance: un artefacto especializado, simple, dedicado a una tarea concreta. Norman llega a la invisibilidad por otra puerta —la del diseño industrial y la usabilidad— pero converge con Weiser en la idea de que la PC general-purpose, abierta, configurable hasta el infinito, es un modelo agotado. Lo veremos en detalle en la cápsula sobre usabilidad y los Golfos de Ejecución y Evaluación.
Hiroshi Ishii, en el MIT Media Lab, propone en 1997 (junto a Brygg Ullmer) las Tangible Bits: interfaces que dan cuerpo físico a la información digital. Su famosa frase —"bridge the gap between cyberspace and the physical environment"— es una rama paralela del árbol ubicuo. Donde Weiser quería desaparecer la computación, Ishii quería encarnarla. Las dos rutas no son contradictorias: ambas atacan la tiranía del rectángulo iluminado en la cara. Volveremos sobre tangibles en la cápsula 04, sobre paradigmas de interacción.
Yvonne Rogers, una de las voces más influyentes del HCI contemporáneo, critica con respeto la visión de Weiser. Su objeción es elegante: la invisibilidad total infantiliza al usuario, lo deja sin agencia, lo convierte en pasajero de un sistema que decide por él. Rogers propone una alternativa que llama engaging UbiComp: tecnología que en lugar de retraerse, provoca nuevas formas de pensamiento, juego, creatividad, colaboración. Ambas escuelas seguirán dialogando hasta el final del curso: la una privilegia la calma, la otra el compromiso. No hay que elegir bando todavía.
Visión, futuro, tensiones
Treinta y cinco años después del paper de Weiser, parte de su visión se cumplió y parte se torció. Vale la pena mirar ambas caras antes de cerrar.
Lo que se cumplió
El Internet de las Cosas, hoy, conecta miles de millones de dispositivos: termostatos que aprenden, sensores industriales, cámaras públicas, parquímetros, contadores de luz, pulseras de actividad, balanzas que reportan al ginecólogo. La Inteligencia Ambiental inspira casas que se adaptan a la presencia, oficinas que ajustan iluminación según la ocupación, hospitales que monitorean signos vitales sin cables. Los smartphones operan como hubs personales —un centro de control que viaja con nosotros— y han convertido cada bolsillo en un nodo de la red ubicua. La realidad aumentada empieza a despegar, las gafas inteligentes vuelven a intentarlo, los asistentes de voz se instalan en cocinas y autos. El futuro de Weiser —al menos en infraestructura— está acá.
Lo que se torció
Pero la realización es ambigua. Muchos sistemas que se autodenominan "ubicuos" hoy fallan exactamente en lo que Weiser pedía: son ruidosos (notificaciones, vibraciones, parpadeos), opacos (uno no sabe qué dato envían, a quién, para qué), demandantes (configurar tres apps para que el termostato hable con el reloj). La calma se perdió en algún lado del camino. Buena parte de este curso será un intento de recuperarla.
Las tensiones abiertas son cinco, y vamos a volver sobre cada una en alguna cápsula posterior:
- Privacidad y seguridad. La recolección masiva de datos contextuales —dónde estoy, con quién, qué dije, qué compré, cuánto dormí— plantea preguntas que la ingeniería sola no responde. La cápsula 14 (Ética y seguridad) le dedicará un espacio entero.
- Complejidad y gestión. Un ecosistema de cincuenta dispositivos en una casa típica es difícil de mantener. La tecnología ubicua no debería sentirse como administrar una pequeña empresa.
- Interoperabilidad. Dispositivos de distintos fabricantes a menudo no se hablan. El sueño de Weiser presuponía estándares; la realidad nos da silos.
- Diseño de interacción. Crear interfaces verdaderamente calmas para esta complejidad sigue siendo difícil. Es el problema central de este curso.
- Brecha digital. Los beneficios de la ubicuidad no llegan a todos. La accesibilidad —que veremos en la cápsula 03, sobre diseño centrado y universal— es parte del problema, pero no la única.
Diseñar sistemas interactivos ubicuos hoy es, entonces, una práctica multidisciplinaria —informática, diseño, psicología cognitiva, ergonomía, ciencias sociales, ética— y un acto político: cada decisión técnica configura el grado de libertad, atención y privacidad que la gente tendrá en los próximos años. No es poca cosa.
Aprendizaje activo
Cerramos esta cápsula introductoria con una invitación a observar. La Actividad 1 del curso, Radar de Ubicuidad, les va a pedir trabajar en grupo —tres integrantes por equipo— para identificar tres dispositivos o sistemas cotidianos que ustedes consideren ejemplos de computación ubicua y posicionarlos en un radar de dos ejes: invisibilidad (cuánto la tecnología se retrae del foco atencional) en el eje horizontal, adaptación (cuánto el sistema percibe y responde al contexto) en el eje vertical. El ejercicio toma alrededor de 35 minutos: cinco para repasar §1.1 y §1.3 de esta cápsula, diez para elegir los ejemplos, diez para construir el radar dentro de Google Drawings, y diez para justificar en una tabla por qué cada dispositivo cae donde lo pusieron.
No les voy a adelantar respuestas porque la gracia del ejercicio es discutirlas en grupo —los desacuerdos que surgen al posicionar un smartphone, un AirPod, un detector de humo o un Apple Watch revelan más sobre los criterios de UbiComp que cualquier definición de manual. Lleguen con tres dispositivos en mente, eso sí, así no se les va el tiempo en la búsqueda. Y vengan dispuestos a defender su posición: los cuadrantes del radar son menos importantes que la justificación que sostiene cada decisión.
Usabilidad y feedback multimodal
Diseñar lo que no se ve: cuando la interfaz se disuelve, la usabilidad se vuelve atmósfera.
De la pantalla al ambiente
Hubo una época —no tan lejana, en realidad— en que diseñar una interfaz quería decir diseñar una pantalla. Botones, menús, ventanas, cursores. La usabilidad era un asunto de píxeles bien puestos: que el botón "Aceptar" estuviera donde uno lo espera, que el ícono comunicara su función, que el flujo no tuviera trampas. La HCI clásica —Human-Computer Interaction— se construyó sobre la convicción de que un buen diseño era, sobre todo, un buen diseño visual de una superficie rectangular y luminosa.
Esa convicción sigue siendo cierta cuando hay pantalla. Pero la computación ubicua, como vimos en la cápsula anterior, propone otra cosa: que la tecnología se vuelva ambiente, que la interfaz se disuelva en el espacio. Y entonces aparece una pregunta fértil: ¿qué pasa con la usabilidad cuando no hay pantalla que diseñar?
Esta cápsula intenta responder. No con una teoría nueva —no hace falta inventar tanto— sino releyendo los principios clásicos de la HCI a la luz del entorno inteligente. Vamos a tomar las herramientas conocidas (las heurísticas de Nielsen, los golfos de Norman, la noción de feedback) y torcerlas un poco para que sigan siendo útiles cuando el sistema vive en el aire, en los objetos, en los gestos, en las luces del techo.
Usabilidad y UX: definiciones que envejecen bien
Antes de torcer nada, vale la pena fijar las definiciones clásicas. La Usabilidad, según la tradición HCI, es la facilidad con que las personas pueden usar una interfaz para alcanzar sus objetivos. Es un atributo de calidad medible. Jakob Nielsen, en Usability Engineering (1994), la descompone en cinco métricas concretas:
- Facilidad de aprendizaje: qué tan rápido aprende un usuario nuevo a hacer las tareas básicas.
- Eficiencia: qué tan rápido las hace cuando ya es experto.
- Memorabilidad: si las recuerda después de un tiempo sin usar el sistema.
- Errores: cuántos comete, qué tan graves son, y qué tan fácil es recuperarse.
- Satisfacción: cuán placentero es el uso.
La Experiencia de Usuario (UX) es un concepto más ancho. La usabilidad es una de sus piezas, pero la UX incluye también lo subjetivo y emocional: cómo se siente el usuario antes, durante y después de interactuar. Confianza, valor percibido, estética, sentido. Rogers, Sharp y Preece, en Interaction Design: Beyond Human-Computer Interaction (5ª ed., 2019), insisten en que la UX no se reduce al cumplimiento de objetivos: incluye el ánimo con el que se llega y con el que se sale.
Hasta acá, terreno conocido. La pregunta es qué le pasa a estos conceptos cuando los soltamos en un living lleno de sensores, parlantes que escuchan, lámparas que entienden, relojes que vibran.
Hacia la Tecnología Serena
La respuesta corta es que se transforman. La usabilidad deja de ser la facilidad de uso de una app y pasa a ser la fluidez de un ecosistema completo: un parlante inteligente, un termostato, un timbre con cámara, un reloj, una rutina automática que enciende luces a cierta hora. Eficiencia ya no significa "que el usuario haga las cosas rápido", sino que el sistema haga cosas por el usuario sin que tenga que pedirlo. La facilidad de aprendizaje, en el límite, tiende a cero: la interacción ideal es implícita, no se aprende, simplemente ocurre. Y la gestión de errores se vuelve crítica de otra manera, porque un error ya no es una ventana mal cerrada: es una puerta que no se desbloquea cuando uno llega cargado de bolsas, o un riego que se gatilla en pleno aguacero.
La UX, por su lado, deja de ser experiencia de uso de un producto y se vuelve experiencia de habitar un entorno. El objetivo no es solo que el momento puntual sea placentero: es que el ambiente entero —la suma de objetos invisibles trabajando coordinados— se sienta acogedor, tranquilo, confiable. Mark Weiser y John Seely Brown (1996) le pusieron nombre: Calm Technology, tecnología serena.
Tecnología que asiste sin interrumpir, que potencia sin oprimir, que está disponible sin imponerse. — la idea de Calm Technology (Weiser & Brown, 1996)
Diseñar para la serenidad es harto más difícil que diseñar para la atención. Captar atención lo hacen los pop-ups y los íconos rojos parpadeantes. Soltar atención, devolvérsela al usuario, es una disciplina mucho más sutil. De eso, en el fondo, va el resto de esta cápsula.
Las 10 heurísticas de Nielsen, releídas en ambiente
En 1994, Jakob Nielsen publicó en Usability Engineering una de las listas más citadas de la HCI: las diez heurísticas de usabilidad. No son leyes, son principios guía —reglas de pulgar que un equipo experimentado puede usar para auditar una interfaz sin estudio con usuarios. Su poder está en su economía: con diez ítems uno ilumina la mayoría de los problemas de una pantalla.
Pero las diez heurísticas nacieron para interfaces gráficas. Lo interesante es que no se vuelven obsoletas en UbiComp: se vuelven más exigentes. Cada una sobrevive el viaje al entorno inteligente, pero reinventa sus formas.
1. Visibilidad del estado del sistema
Clásica: el sistema informa al usuario, en todo momento, qué está pasando (barras de progreso, mensajes de confirmación, indicadores).
En UbiComp: el desafío es mostrar el estado sin pantalla. El feedback se vuelve ambiental y multimodal. Un anillo de luz en un parlante que pulsa cuando está escuchando. Una vibración corta en el reloj que confirma un pago. Un tono breve cuando un comando se procesó. El estado existe, pero se distribuye en el ambiente.
2. Relación entre el sistema y el mundo real
Clásica: el sistema habla el idioma del usuario, usando conceptos familiares (la papelera para eliminar, el escritorio para organizar).
En UbiComp: este principio deja de ser una metáfora y se vuelve literal. El sistema no imita el mundo real: se integra en él. La interacción se basa en acciones físicas (girar, tocar, mover), en lenguaje natural (pedir, conversar) y en contexto ambiental (hora, presencia, temperatura).
3. Control y libertad del usuario
Clásica: el usuario debe poder deshacer, cancelar, salir.
En UbiComp: el problema se complica. ¿Cómo se "deshace" una acción automática que el sistema tomó por su cuenta? Hace falta un escape ubicuo: un interruptor físico que prevalezca sobre los sensores, un "detente" claro por voz, una manera obvia de decirle al ambiente muchas gracias, ahora paro yo. La automatización sin freno es opresión.
4. Consistencia y estándares
Clásica: elementos similares se ven y se comportan igual a lo largo de la interfaz.
En UbiComp: la consistencia se exige a través de todo un ecosistema. Un comando de voz tiene que funcionar igual en la cocina y en el auto. La app del celular y la pantalla del refrigerador tienen que compartir lógica. Cuando el ecosistema lo construyen tres fabricantes distintos, esto se vuelve una pesadilla —y un problema de diseño abierto.
5. Prevención de errores
Clásica: mejor un diseño que no permite errores que un excelente mensaje de error.
En UbiComp: la prevención se vuelve proactiva y contextual. El sistema usa sus sensores para evitar acciones inapropiadas. No riega si acaba de llover. No sube la temperatura si hay una ventana abierta. No activa el modo "fuera de casa" si detecta movimiento adentro.
6. Reconocimiento antes que recuerdo
Clásica: hacer visibles las opciones para no obligar al usuario a memorizarlas.
En UbiComp: sin menús, el reconocimiento se basa en affordances físicas y ambientales. Un objeto que se ilumina al acercarse sugiere que es interactivo. Un dial físico que rota propone que se gira. El propio entorno debe sugerir qué es posible hacer.
7. Flexibilidad y eficiencia de uso
Clásica: atajos para expertos, simplicidad para principiantes.
En UbiComp: la eficiencia experta se traduce en rutinas y automatizaciones personalizadas. Un comando "Buenos días" que enciende luces, prende la cafetera y sube las persianas. El sistema aprende del usuario y le ofrece atajos compuestos.
8. Diseño estético y minimalista
Clásica: las interfaces no deben contener información irrelevante.
En UbiComp: el minimalismo se desplaza del look al comportamiento. Es lo que podríamos llamar minimalismo de la interrupción: la estética no está en cuánta belleza tiene la pantalla, sino en con qué elegancia el sistema opera en segundo plano sin molestar.
9. Ayudar a reconocer, diagnosticar y recuperar de errores
Clásica: mensajes de error claros, precisos, con una solución.
En UbiComp: los mensajes ya no pueden ser pop-ups. Deben comunicarse de forma contextual: una voz que dice "no te entendí, ¿puedes repetir?", una notificación específica en el celular cuando algo sale mal, una luz que cambia de color.
10. Ayuda y documentación
Clásica: si es necesario, ofrecer ayuda fácil de consultar.
En UbiComp: la documentación se transforma en onboarding y descubrimiento progresivo. El sistema enseña sugiriendo, no explicando. Propone automatizar una acción que el usuario hace tres veces seguidas. El manual se vuelve invisible: vive en las sugerencias del sistema.
Metáforas que se vuelven mundo
Hay una herramienta más, antiquísima en HCI, que conviene revisar aquí: las metáforas. La HCI clásica las usó masivamente para tender puentes entre lo digital y lo conocido. El "escritorio", las "carpetas", el "carrito de compras", la "papelera". Cada metáfora aprovecha la familiaridad del mundo físico para reducir la curva de aprendizaje de algo nuevo.
En UbiComp, las metáforas no se eliminan: se invierten. Ya no se trata de meter el mundo dentro de la pantalla, sino de que el propio mundo se vuelva interfaz. Agitar la mano para cerrar una llamada. Girar un dial físico para regular un termostato digital. Pasar la mano por encima de una lámpara para encenderla. La familiaridad ya no viene de íconos sino de gestos y acciones naturales que ya sabemos hacer en el mundo físico desde antes de que existiera computación de ninguna clase.
Esto conecta con un modelo mental profundo. Cada usuario llega a un sistema con una representación mental de cómo cree que funciona. Cuando esa representación coincide con cómo realmente funciona, el sistema "se entiende". Cuando no coinciden, aparecen los famosos golfos.
Los golfos de Norman, amplificados
Donald Norman, en User Centered System Design (1986) y de manera definitiva en The Design of Everyday Things (1988, reeditado en 2013 con un nuevo prefacio), describió dos brechas que dificultan toda interacción:
- Golfo de Ejecución: la distancia entre lo que el usuario quiere hacer y cómo saber qué acción realizar para conseguirlo. No sé cómo hacer lo que quiero hacer.
- Golfo de Evaluación: la distancia entre la acción ejecutada y la posibilidad de saber si funcionó y cuál es ahora el estado del sistema. Hice algo, pero no sé qué pasó.
En la HCI clásica, un golfo de ejecución se da cuando el usuario no sabe qué botón apretar. Un golfo de evaluación, cuando aprieta el botón y no aparece ningún feedback que confirme la acción. Norman pasó décadas argumentando que la mayoría de las frustraciones cotidianas con la tecnología no son culpa del usuario sino consecuencia de diseños que dejan abiertos estos dos golfos.
En UbiComp, ambos golfos se amplifican. Conviene entender por qué, porque ahí está buena parte de la dificultad de diseñar bien para el ambiente.
El golfo de ejecución se amplifica porque las affordances desaparecen. En una pantalla, un botón al menos parece un botón. En el aire, ¿cómo le pido al sistema que suba un grado el termostato? ¿Por voz? ¿Con una app? ¿Hay un gesto? ¿Hay que tocar la pared? La incertidumbre sobre cómo actuar es el golfo, y el ambiente sin pantalla casi no da pistas.
El golfo de evaluación se amplifica porque el feedback es más difícil de comunicar. El usuario dijo "sube un grado", pero ¿cómo sabe si el sistema la recibió, la procesó, la ejecutó? Si la temperatura va a tardar diez minutos en subir, ¿cómo sabe ahora mismo que algo está pasando? La ausencia de pantalla obliga a inventar otras formas de devolver una señal clara y oportuna.
Cerrar estos dos golfos es, literalmente, el trabajo del diseñador ubicuo.
Feedback multimodal: el puente sobre el golfo
Y acá es donde entra el feedback. El feedback es, dicho simple, lo que el sistema le devuelve al usuario para confirmar que algo está pasando. En la HCI clásica, el feedback es predominantemente visual: un texto que aparece, una animación de botón presionado, un campo que se resalta, una barra que se llena.
En UbiComp, el feedback debe ser multimodal: tiene que usar varios canales sensoriales, de manera apropiada y no invasiva. Hay tres canales centrales:
-
Feedback visual ambiental: cambios sutiles en luces del entorno. La habitación que se tiñe de un color tenue cuando alguien llama por interno. La lámpara del living que pulsa suavemente cuando el sistema está escuchando. Es información visual, pero distribuida en el ambiente, no concentrada en una pantalla.
-
Feedback háptico: vibraciones discretas en dispositivos vestibles. El reloj que vibra una vez para confirmar un pago. El brazalete que pulsa cuando es momento de moverse. Información dirigida al usuario que la lleva puesta, sin molestar a nadie más en el espacio.
-
Feedback auditivo: tonos breves e informativos. Un chime cuando el comando se procesó. Un sonido distinto cuando hay error. Una respuesta de voz cuando el sistema necesita confirmar algo. El audio tiene la ventaja de no requerir mirada: funciona aunque el usuario esté ocupado en otra cosa.
Un buen feedback ubicuo es contextual y sereno: aparece cuando hace falta, en el canal que menos interrumpe, con la intensidad mínima necesaria. Si el usuario está hablando por teléfono, el sistema no chilla un anuncio: vibra el reloj. Si la casa está en penumbras, el sistema no enciende una luz brillante: hace un cambio ínfimo en la luz que ya está. Si hay varias personas, el sistema sabe que el aviso es para una sola y no lo grita en el living.
Los wearables son aliados naturales del feedback ubicuo: el reloj inteligente, los anteojos con audio óseo, los anillos con háptica son canales privados dentro de un ambiente público. Esa privacidad permite que la información llegue sin interrumpir al resto.
La ecología del silencio
Hay una última idea que vale la pena instalar antes de cerrar. Diseñar feedback en UbiComp no es solo decidir qué se comunica: es decidir qué no se comunica. Cada notificación es una interrupción potencial. Si todos los dispositivos del ambiente emiten señales todo el tiempo, el resultado no es información: es ruido.
La Tecnología Serena de Weiser y Brown se construye sobre una ecología del silencio: la mayor parte del tiempo, el sistema no dice nada. Trabaja sin pedir atención. Solo cuando hace falta —un error, una confirmación necesaria, un evento importante— el sistema se manifiesta, y lo hace por el canal mínimo, con la intensidad mínima.
Diseñar para el silencio es, paradójicamente, una de las cosas más activas que puede hacer un diseñador. Implica decidir todo el tiempo qué señales suprimir, qué agrupar, qué postergar. Y exige empatía atenta: el sistema bien diseñado conoce el contexto del usuario y respeta sus prioridades. Sabe cuándo callarse.
Aprendizaje activo
En la próxima sesión vamos a poner estos principios a trabajar en la Actividad 2 — Urgencias Heurísticas. En grupo, eligen un sistema ubicuo real (un parlante inteligente, un termostato, un auto conectado, un electrodoméstico —no una app móvil ni una web) y hacen una auditoría heurística propia. Van a imaginar o actuar —bodystorming— una interacción problemática e identificar al menos tres violaciones a las heurísticas de Nielsen adaptadas al entorno inteligente.
Para cada violación van a producir un boceto del problema: un dibujo simple que muestre al usuario, al dispositivo y la acción fallida, con la heurística violada explícitamente anotada. Y van a explicar qué golfo se abre —el de ejecución, el de evaluación, o los dos— y por qué la ausencia de pantalla amplifica el problema.
Después viene la parte fértil: el rediseño. Por cada problema, un boceto de la versión sana de la interacción. La consigna explícita es justificar qué tipo de feedback multimodal —visual ambiental, háptico, auditivo, o combinaciones— usaron para cerrar el golfo y devolverle al sistema su carácter sereno. La actividad cierra con una exposición relámpago: un minuto por grupo, su violación más crítica y su rediseño.
No damos las soluciones acá. La gracia de la auditoría es que cada grupo descubra los golfos específicos del sistema que eligió. Lleven los ojos atentos al living y al auto: las violaciones heurísticas están en todas partes, y verlas es ya media solución.
Diseño centrado en personas
Diseñar para humanos reales —los que tropiezan, olvidan, cargan bolsas y entran a la oscuridad— y no para el usuario promedio, que es un fantasma estadístico que nadie ha visto jamás.
El usuario promedio no existe
Hay una tentación silenciosa cuando uno diseña: pensar en alguien parecido a uno mismo. Manos sanas, vista veinte-veinte, atención plena, contexto despejado, batería al 80%. Ese usuario imaginario es cómodo porque no se queja, no improvisa, no llega con las manos llenas. No existe.
Lo que existe son personas. Una madre que entra a su casa de noche con bolsas en ambas manos y un niño dormido al hombro. Un señor de setenta y dos años con artritis y la audición venida a menos. Una estudiante que cocina escuchando un podcast mientras revisa el celular con la otra mano. Un conductor que no puede mirar la pantalla porque está cambiando de pista. Cuatro cuerpos, cuatro relaciones con el mismo entorno —y un sistema ubicuo que, si fue diseñado pensando en el usuario promedio, va a fallar para todos ellos en grados distintos.
Las dos herramientas que vamos a recorrer —el ciclo de Diseño Centrado en el Usuario (DCU) y los siete principios del Diseño Universal— no son procedimientos burocráticos. Son hábitos mentales para mantener cuerpo y contexto presentes al decidir.
El ciclo DCU, esa rueda que no se detiene
El DCU no es una técnica. Es un compromiso de proceso: poner a las personas y a su contexto en el centro de cada fase del diseño, desde el primer boceto hasta la décima iteración. Rogers, Sharp y Preece (2019) lo formalizan como un ciclo iterativo de cuatro fases que se retroalimentan. No se atraviesa una vez; se atraviesa muchas, cada vuelta más informada que la anterior.
Las cuatro fases
Comprender el contexto. No basta con saber qué tarea quiere hacer la persona. Hay que saber dónde la hace, con qué cuerpo, con qué interrupciones, con qué herramientas a la mano, con qué luz, con qué ruido de fondo, con quién más en la pieza. Para un sistema ubicuo, esta fase es desproporcionadamente importante porque el contexto deja de ser un marco y se convierte en parte del input del sistema. La proximidad GPS, la hora del día, las manos ocupadas, el estado emocional inferido: todo eso es contexto operativo.
Especificar requisitos. Una vez comprendido el contexto, traducirlo a requisitos concretos: qué tiene que hacer el sistema, qué tiene que evitar, qué umbrales de proactividad son aceptables, qué errores son tolerables y cuáles son catastróficos. En UbiComp esta fase incluye decisiones sobre cuándo el sistema debe iniciativa y cuándo debe esperar al usuario.
Diseñar soluciones. Generar alternativas. Múltiples. Resistir la primera idea. Bocetar entornos, no pantallas. Storyboards de interacción en el tiempo y el espacio físico. Lo veremos en detalle en §3.4.
Evaluar con usuarios reales en su contexto. No en un laboratorio aséptico, no con prototipos brillantes en una sala universitaria. En la cocina real, con las bolsas reales, con el niño real al hombro. O lo más cerca de eso que las restricciones del proyecto permitan.
Lo que cambia en UbiComp
Suchman (1987), en Plans and Situated Actions, mostró que la interacción humana con máquinas nunca sigue el plan que el diseñador imaginó. La gente improvisa, retrocede, abandona, retoma. En sistemas de escritorio podías ignorar parcialmente esa lección porque la interfaz era explícita y el usuario miraba la pantalla. En sistemas ubicuos no podés: la interfaz está dispersa en el entorno, la atención está dividida, y la acción se sitúa en un espacio físico cambiante.
Por eso el DCU, llevado al territorio ubicuo, no se centra en el usuario frente a una pantalla sino en la interacción simbiótica entre las personas y sus entornos computacionalmente enriquecidos. La comprensión del contexto deja de ser actividad estática para convertirse en pilar dinámico del diseño.
Generar alternativas: no enamorarse de la primera idea
Una fase del DCU merece párrafo aparte: la ideación. La razón es psicológica. Cuando uno encuentra una solución que funciona —aunque sea a medias—, el cerebro la marca como "resuelto" y deja de buscar. Esa fijación es enemiga del buen diseño, y en sistemas ubicuos es especialmente peligrosa porque el espacio de soluciones incluye dimensiones que muchos diseñadores no exploran instintivamente: voz, gestos, presencia, ambient feedback, automatización proactiva, objetos cotidianos aumentados.
Técnicas y su giro ubicuo
La lluvia de ideas clásica se traslada del nivel de "características de una app" al nivel de "comportamientos de un entorno". La pregunta deja de ser qué funciones tendría esta app y se convierte en cómo podría este espacio ayudar a estas personas. El bocetado ya no dibuja pantallas: dibuja mapas de pieza, flujos de movimiento, ubicaciones de sensores. Los storyboards narran una secuencia de interacción a lo largo del tiempo y del espacio físico, como una tira cómica donde el entorno es uno de los personajes.
Hay una técnica que vale destacar porque parece tonta y no lo es: el bodystorming. En lugar de imaginar el escenario, el equipo lo actúa. Se camina por el espacio simulando la interacción, con prototipos de papel o sin nada, encarnando físicamente al usuario y al sistema. Aparecen cosas que en el papel quedan invisibles: que la persona pasa por la puerta cargando algo y la mano izquierda queda libre solo dos segundos, que el sensor ubicado a 1.80 metros no detecta a quien va sentado, que el comando de voz se pierde por el ruido del extractor. El cuerpo recuerda lo que el plano olvida.
Escenarios y casos de uso: narrativas para entornos
Una vez generadas las ideas, hay que volverlas concretas. Los escenarios de uso son narrativas: historias detalladas que describen cómo una persona específica realiza una tarea en un contexto particular. Sirven para tres cosas a la vez —comprender el flujo, identificar problemas, comunicar el diseño al equipo y al cliente.
Del escenario clásico al escenario ubicuo
Un escenario clásico de HCI dice algo así: "Ana, una estudiante, llega tarde a clase. Saca su tablet, abre la app de notas, crea una nueva nota y comienza a escribir." La acción transcurre frente a una pantalla, con la atención del usuario plenamente entregada a la interfaz.
El escenario ubicuo es distinto porque el sistema deja de ser herramienta y se convierte en un actor más de la narrativa. "Ana, una residente, llega en su auto. El sistema, al detectar su proximidad por GPS, abre la puerta del garaje. Los sensores del auto informan que el maletero está lleno. Al entrar a la casa con bolsas en las manos, el sistema proactivamente enciende un camino de luces hasta la cocina. Ana dice 'Ok casa, pon mi lista de cocina', y el sistema responde por los altavoces de la cocina." Misma persona, otra historia. Aquí aparecen el contexto ambiental (GPS, manos ocupadas), la proactividad (luces antes de pedirlas) y la multimodalidad (voz, audio, luz).
Casos de uso: estructura sobre la narrativa
El caso de uso es la formalización de uno o varios escenarios: flujo principal, flujos alternativos, flujos de error. La diferencia con el caso de uso clásico es que en UbiComp el "actor" puede no ser humano. Puede ser un sensor de movimiento, un evento temporal ("a las 22:00"), una condición ambiental ("luminosidad < 50 lux"). Los disparadores contextuales son ciudadanos de primera clase.
Modelar esto obliga a tomar decisiones que de otra manera quedarían implícitas: ¿el sistema actúa solo cuando lo pides o también cuando él decide?, ¿qué condiciones disparan qué?, ¿qué hace si dos condiciones se contradicen? Sin un modelo formal, estas preguntas terminan respondidas por defecto, normalmente mal.
Diseño Universal: los siete principios de Ronald Mace
En 1985, el arquitecto y diseñador industrial Ronald Mace —él mismo usuario de silla de ruedas desde los nueve años, después de tener polio— acuñó la expresión Universal Design para nombrar una idea sencilla pero radical: en lugar de diseñar para "el usuario estándar" y luego adaptar para personas con discapacidad, diseñar desde el principio para la mayor cantidad posible de personas, sin necesidad de adaptación posterior. La diversidad humana no es la excepción: es la norma.
Mace y un grupo de colaboradores formalizaron en 1997 los siete principios que se siguen usando hoy. Cada principio fue pensado para arquitectura y productos físicos, pero —y este es el punto interesante para nosotros— gana profundidad cuando se aplica a entornos ubicuos, porque un entorno proactivo y multimodal tiene más herramientas para encarnarlos que un producto pasivo.
Uso equitativo
El diseño es útil para personas con diversas capacidades, proveyendo los mismos medios de uso (o equivalentes) y evitando la segregación. El ejemplo clásico: puertas automáticas, que benefician a la persona con silla de ruedas y, de paso, a quien lleva las manos llenas. En UbiComp esto se traduce en ofrecer múltiples modos de interacción equivalentes. Un sistema de climatización puede controlarse por voz, por app, por panel físico y de forma automática. Ningún modo es "el modo accesible". Todos son legítimos.
Flexibilidad en el uso
El diseño se acomoda a un amplio rango de preferencias y habilidades. Los subtítulos son el ejemplo clásico: útiles para personas sordas y también para quien mira video en un café ruidoso. En UbiComp el sistema se adapta dinámicamente al contexto. Un auto inteligente prioriza la voz y deshabilita la entrada táctil cuando el vehículo está en movimiento, no porque "el conductor tenga discapacidad" sino porque el contexto lo exige.
Uso simple e intuitivo
El diseño es fácil de entender, independientemente de la experiencia o conocimiento del usuario. En UbiComp la versión radical es que la mejor interfaz es la invisible. Entrar a una pieza oscura y que la luz se encienda es la cumbre del uso intuitivo: no hay nada que aprender porque no hay nada que hacer. El sistema actúa, la persona habita.
Información perceptible
El diseño comunica eficazmente, independientemente de las capacidades sensoriales del usuario, usando redundancia. El semáforo con señal sonora es el ejemplo clásico. En UbiComp el principio se vuelve retroalimentación multimodal: un horno que terminó la cocción avisa con notificación visual al móvil, sonido en el ambiente, vibración en el reloj. Ninguna modalidad sola es suficiente —el celular puede estar silenciado, el ambiente ruidoso, el reloj fuera del brazo— pero las tres juntas son robustas.
Tolerancia al error
El diseño minimiza los peligros y las consecuencias adversas de acciones accidentales. La función "deshacer" es el ejemplo clásico de software. En UbiComp es uno de los principios más difíciles, porque muchas acciones del entorno no son deshacibles —si abriste la puerta principal por un falso positivo, ya la abriste. La salvaguarda exige overrides físicos, confirmaciones explícitas para acciones irreversibles y un interruptor de emergencia que desactive toda la automatización.
Bajo esfuerzo físico
El diseño puede usarse con mínima fatiga. Las manillas tipo palanca en vez de pomos redondos son el ejemplo de oficio. En UbiComp la automatización proactiva es la máxima expresión del principio: eliminar el esfuerzo físico en tareas rutinarias. La luz que se enciende al entrar, la climatización que se ajusta cuando llegás del trabajo, la lavadora que avisa cuando termina.
Tamaño y espacio para el acceso y uso
Se proporciona tamaño y espacio apropiados para el acercamiento, alcance y uso, independientemente del tamaño corporal o la movilidad. Pasillos anchos, baños accesibles. En UbiComp aterriza en algo que muchos diseñadores olvidan: los sensores y actuadores tienen que estar ubicados pensando en cuerpos diversos. Cámaras a la altura adecuada para detectar a quien va sentado en silla y a quien va parado de 1.90. Micrófonos que capturen voces a distintos volúmenes. La ergonomía espacial no es opcional.
Discapacidades: del modelo médico al modelo social
El Diseño Universal está intrínsecamente ligado a una consideración activa de las personas en situación de discapacidad. Pero hay una distinción conceptual previa que conviene hacer explícita: hay un modelo médico y un modelo social de la discapacidad, y el segundo es el que sustenta el diseño inclusivo.
El modelo médico entiende la discapacidad como un atributo individual: la persona "tiene" una discapacidad, que es un problema suyo. El modelo social la entiende como un desajuste entre el cuerpo de la persona y las barreras del entorno. Una persona en silla de ruedas no es "discapacitada" en abstracto: es alguien para quien una escalera es una barrera, una rampa no lo es.
La discapacidad no está en el cuerpo: está en la fricción entre el cuerpo y el mundo construido.
El diseño inclusivo consiste, entonces, en remover barreras, no en compensar déficits.
Tipos de limitación y cómo los entornos ubicuos los abordan
Auditiva. Pérdida total o parcial de la audición. Se aborda con redundancia visual y háptica: un timbre que además de sonar parpadea las luces y vibra el reloj. Subtítulos en cualquier salida sonora. Notificaciones que nunca dependan únicamente del canal auditivo.
Visual. Desde baja visión y daltonismo hasta ceguera total. Contraste adecuado en displays, texto ajustable, lectores de pantalla. En UbiComp los entornos pueden ser consultados por voz y el feedback puede ser háptico y sonoro direccional —sonidos espacializados que indican de dónde viene la información.
Mental (psíquica e intelectual). Trastornos de ansiedad, depresión, limitaciones intelectuales, condiciones del espectro autista. El diseño debe favorecer lenguaje simple, estructura consistente, predictibilidad. Un sistema que detecta señales de estrés y reduce proactivamente los estímulos —baja el volumen, atenúa las luces, posterga notificaciones no críticas— es una expresión directa de este principio.
Física (motriz / orgánica). Limitaciones de movilidad y/o función de partes del cuerpo. Aquí el potencial de UbiComp es enorme: control total del entorno por voz, por seguimiento ocular, por switches especializados. Encender luces, abrir puertas, ajustar temperatura, llamar ayuda —todo sin requerir movilidad fina. No es un detalle de comodidad: es un cambio en la relación de la persona con su propia vida.
Limitaciones permanentes, temporales y situacionales
Una de las ideas más útiles del diseño inclusivo —Microsoft la popularizó en su Inclusive Design Toolkit— es que las limitaciones no son solo permanentes. Son también temporales (un brazo enyesado, una afonía, una conmoción) y situacionales (manos ocupadas con bolsas, ojos puestos en la ruta, oídos invadidos por ruido ambiente). Una persona sin discapacidad permanente atraviesa decenas de limitaciones situacionales al día. Diseñar para limitaciones es diseñar para todos, en algún momento de su vida.
Esta es la justificación pragmática del Diseño Universal: no es caridad ni cumplimiento normativo. Es eficacia. Un entorno que funciona bien para alguien con baja visión funcionará mejor para todos en condiciones de poca luz. Un sistema que escucha bien a alguien con dificultades del habla escuchará mejor a todos cuando hay ruido. La accesibilidad sube el piso para todos los habitantes del entorno.
Marco normativo en Chile
Dos referencias prácticas. La Ley 21.015 de Inclusión Laboral (Chile, 2017) establece la obligación de empresas e instituciones de incorporar personas con discapacidad. Las Web Content Accessibility Guidelines (WCAG) del W3C son el estándar internacional para accesibilidad digital; sus principios (perceivable, operable, understandable, robust) se traducen sin dificultad al diseño de sistemas ubicuos.
En la computación ubicua, el diseño inclusivo no es opcional. La tecnología que se incrusta en el entorno o une a los habitantes del espacio o los divide; no hay tercera opción.
Aprendizaje activo
En la Actividad 3 — Sprint de Diseño Ubi-Empático, cada grupo elegirá un escenario ubicuo concreto (casa inteligente para una persona mayor, smart workplace, retail inteligente, campus conectado, auto conectado) y aplicará en 45 minutos el ciclo del DCU comprimido en cinco fases.
Primero crearán una Persona —no un usuario promedio, sino alguien con limitaciones claras, permanentes, temporales o situacionales. Después mapearán su Journey Map contextual: cinco pasos que ilustren no clics sino el cuerpo moviéndose por el entorno, identificando para cada paso qué hace, qué espera del sistema, qué recibe, y dónde está el punto de dolor. Con esos puntos armarán una matriz de impacto-esfuerzo que les obligue a priorizar. Y cerrarán con un MVP de máximo 140 caracteres —un Producto Mínimo Viable descrito con la disciplina de un tuit, explicando cómo la mejora aprovecha capacidades ubicuas (proactividad, multimodalidad, sensores) para subir el piso de accesibilidad.
La restricción de 140 caracteres no es estética: es pedagógica. Obliga a destilar la esencia de la solución, a defender una sola decisión arquitectónica clara.
Paradigmas más allá del escritorio
Cuando la computación deja la caja, el mouse y el teclado dejan de ser el único contrato. La mano vuelve a tocar, el cuerpo vuelve a gesticular, el aire vuelve a importar.
El escritorio era una excepción, no una regla
Por más de cuarenta años, interactuar con un computador significó la misma escena: una silla, una pantalla rectangular, un teclado y un dispositivo de apuntamiento. El paradigma WIMP (Windows, Icons, Menus, Pointer), nacido en Xerox PARC y popularizado por Apple y Microsoft, fue tan dominante que muchos olvidaron que era una convención, no una ley natural. La metáfora del escritorio funcionó porque ordenó un problema concreto: cómo mostrar varias tareas a la vez en una sola pantalla, manipulables por una persona sentada frente a ella.
Pero la computación ubicua cambió las premisas. Ya no hay una pantalla; hay decenas, esparcidas por el edificio. Ya no hay una persona sentada; hay personas caminando, hablando, cocinando, manejando, durmiendo. Ya no hay una tarea bien definida; hay flujos de actividad que se entrelazan con el entorno físico. En ese mundo, el mouse y el teclado son herramientas estupendas para escribir un correo, pero ridículas para apagar la luz del living, controlar la música en la cocina o mover una pieza en una mesa de juego compartida.
Esta cápsula recorre los paradigmas de interacción que han emergido para llenar ese vacío. No son sustitutos del WIMP: son complementos que se activan cuando el contexto lo pide. Cada uno tiene su lógica, sus afordancias, sus límites. Conocerlos no es un ejercicio enciclopédico; es ampliar el repertorio de soluciones cuando uno se sienta a diseñar un sistema ubicuo.
Interacción tangible: cuando los datos se vuelven cosa
En 1997, en la conferencia CHI, Hiroshi Ishii y Brygg Ullmer del MIT Media Lab presentaron un trabajo que se volvió canónico: Tangible Bits: Towards Seamless Interfaces between People, Bits and Atoms. La tesis era simple y radical. Las interfaces gráficas (GUI) habían encerrado la información en píxeles detrás de un vidrio. ¿Y si en vez de manipular representaciones de los datos con un cursor, manipuláramos los datos directamente con las manos, dándoles forma física, peso, textura?

Así nació la Interacción Tangible y, con ella, el campo de las Tangible User Interfaces (TUIs). El Tangible Media Group del MIT, fundado por Ishii, lleva casi tres décadas explorando esta idea. Su lema lo resume mejor que cualquier definición: las TUIs buscan traer la computación al mundo real, en contraposición a la realidad virtual que nos saca del mundo real.
Principios fundacionales
El diseño tangible se apoya en cuatro dimensiones que no existen en el diseño visual puro:
Materialidad. La forma, el peso, la textura, la temperatura del objeto no son decoración: son parte del lenguaje. Un cubo de madera lijada comunica algo distinto a un cubo de plástico brillante, aunque encarnen el mismo dato.
Encarnación física de los datos (physical embodiment). El objeto físico es la información, no una etiqueta puesta encima. Su posición, orientación, estado físico corresponde uno-a-uno a un estado digital. Cambia uno, cambia el otro.
Interacción corporal. Las manos —y a veces el cuerpo entero— manipulan los objetos. Esto activa habilidades motoras que llevamos desarrollando desde la cuna: agarrar, rotar, apilar, encajar.
Embeddedness. La interacción ocurre en el mundo físico del usuario, en su mesa, en su pieza, en su taller, no aislada en un rectángulo de vidrio.
Ejemplos para fijar la idea
El reacTable del grupo de Sergi Jordà en Barcelona (2006) es el caso de estudio clásico: una mesa circular donde colocar bloques físicos —osciladores, filtros, secuenciadores— genera música electrónica en vivo. Mover un bloque cambia un parámetro; rotarlo cambia otro; ponerlos cerca los conecta. Funciona porque la mesa es a la vez partitura, sintetizador e instrumento.
Los bloques de programación tangible para niños (desde los AlgoBlocks de los noventa hasta KIBO hoy) reemplazan las líneas de código por piezas físicas que se ensamblan: encajar dos bloques significa secuenciar; añadir un bloque verde significa repetir. El niño piensa con las manos.
Las maquetas urbanas interactivas —como el Urp del propio MIT— permiten a planificadores mover edificios de cartón sobre una mesa y ver en tiempo real cómo cambia la sombra que proyectan, el flujo del viento o la silueta nocturna. La maqueta deja de ser un objeto pasivo y se vuelve simulador.
La ventaja profunda de las TUIs es expresiva y colaborativa. Varias personas pueden manipular el mismo sistema al mismo tiempo —imposible con un mouse compartido— y cada quien retiene una sensación de control físico que la pantalla no entrega. Hornecker y Buur (2006), en su trabajo sobre el marco conceptual de la interacción tangible, insisten precisamente en esta dimensión social: tocar juntos es interactuar juntos.
Interacción sin contacto: cuando ni siquiera hace falta tocar
Si la interacción tangible insiste en poner las manos sobre el objeto, la Interacción Sin Contacto (Touchless) va al otro extremo: controlar un sistema sin tocarlo en absoluto. Sensores —cámaras, infrarrojos, profundidad, radar, micrófonos— detectan la presencia, la postura, el gesto o la mirada del usuario a distancia, y traducen eso en comandos.

El catalizador comercial del paradigma fue el Microsoft Kinect, lanzado en 2010 para la consola Xbox 360. Por primera vez una cámara de profundidad asequible llegaba al hogar, y de pronto cualquier sala de estar se convertía en un detector de cuerpos en tiempo real. El Kinect demostró que el cuerpo entero podía ser controlador, y aunque su éxito comercial fue mixto, abrió una década de investigación en HCI sobre interacciones gestuales mid-air.
Cuándo no tocar es una ventaja
Hay escenarios donde el touchless no es una novedad sino una necesidad:
Higiene. Un cirujano en pabellón no puede tocar una pantalla para girar una resonancia: rompería la esterilidad. Un quiosco interactivo en un aeropuerto durante una pandemia se vuelve foco de contagio si todos lo tocan. El touchless resuelve ambos problemas sin sacrificar control.
Distancia. Hay objetos —pantallas grandes en una sala de control, vitrinas de museo, paneles en altura— a los que físicamente uno no llega. La interacción sin contacto permite manipularlos desde donde uno está parado.
Accesibilidad. Para personas con discapacidad motriz que no pueden operar un mouse, sensores que detectan movimientos de cabeza, mirada o respiración abren accesos imposibles con dispositivos convencionales.
Técnicas que vale la pena conocer
Algunos trabajos recientes muestran la riqueza del campo:
MatchPoint y TraceMatch (Clarke, Bellino, Esteves & Gellersen, 2017) utilizan una simple webcam para sincronizar el movimiento corporal del usuario con widgets que orbitan en pantalla. El sistema no necesita reconocer el cuerpo: basta con detectar que algo se mueve en fase con el widget. Es elegante porque elimina la calibración explícita.
Orbits (Esteves et al., 2015) y Pursuits (Vidal, Bulling & Gellersen, 2013) aplican la misma idea al eye-tracking: el usuario mira un objeto en movimiento, el sistema detecta la persecución suave de la mirada (smooth pursuit), selecciona. Funciona en smartwatches, displays públicos, vitrinas. No requiere calibración previa. Estos enfoques comparten una intuición valiosa: en vez de pedirle al sistema que reconozca qué hace el usuario (lo que es difícil), le piden que reconozca correlaciones temporales entre lo que el sistema muestra y lo que el usuario hace (lo que es fácil).
Interacción gestual: el cuerpo como vocabulario
Estrechamente ligada al touchless, pero también presente en superficies táctiles, la Interacción Basada en Gestos convierte movimientos del cuerpo —principalmente manos y dedos, a veces cabeza, brazos o cuerpo entero— en comandos discretos o continuos.
Conviene distinguir tres familias:
Gestos en el aire (mid-air). Detectados por cámaras o sensores de movimiento como Kinect o Leap Motion. Permiten controlar a distancia. Su gran limitación es la fatiga: sostener un brazo levantado durante minutos produce el famoso gorilla arm syndrome, ese cansancio que vuelve insoportable cualquier interacción mid-air prolongada.
Gestos táctiles (touch). Realizados sobre superficies sensibles al contacto. Son omnipresentes: deslizar, pellizcar para zoom, doble tap, mantener pulsado. La generación que creció con smartphones los tiene tan automatizados que pellizcar para hacer zoom se siente innato, aunque sea pura convención cultural.
Gestos con el dispositivo. Movimientos realizados sosteniendo un artefacto: inclinar el smartphone para girar la cámara, agitarlo para deshacer, voltearlo para silenciar. Aprovechan los acelerómetros y giroscopios que llevan los móviles.
Diseñar un vocabulario gestual
El verdadero desafío no es técnico sino lingüístico. Un buen conjunto de gestos debe ser intuitivo (mapeo natural acción-efecto), memorable (uno no debería tener que consultar un manual cada vez), eficiente (rápido de ejecutar), distinguible (el sistema no debe confundir uno con otro) y libre de fatiga.
Trabajos como CycloStar o The Fat Thumb (Boring et al., 2012) muestran cómo se puede enriquecer el vocabulario táctil aprovechando dimensiones que la gente normalmente no piensa: el tamaño del contacto del pulgar, por ejemplo, puede diferenciar entre paneo y zoom sin que el usuario cambie de modo explícitamente.
Thumb + Pen Interaction on Tablets (Pfeuffer, Hinckley, Pahud & Buxton, 2017) explora cómo combinar el tacto del pulgar con un lápiz óptico, asignando roles distintos a cada uno: el pulgar configura el modo, el lápiz ejecuta la acción. Es interacción bimanual asimétrica que sigue rindiendo frutos en tablets profesionales.
Puntero y táctil reinventados
Aunque exploramos paradigmas "más allá del escritorio", el puntero y el tacto no desaparecieron: se adaptaron.
El puntero, originalmente un cursor controlado por mouse, en sistemas ubicuos puede ser la mirada (eye-tracking), un punto del cuerpo (la mano en MatchPoint), la punta de un objeto tangible o un dispositivo apuntador como un control de Wii. La esencia se mantiene: mapear un punto en el espacio físico o corporal a un punto en la interfaz digital.
El tacto, por su parte, se ha vuelto omnipresente gracias a la tecnología capacitiva proyectada que llevan todas las pantallas multitáctiles modernas. Pero la investigación sigue empujando. Electrick (Zhang, Laput & Harrison, 2017) es un ejemplo precioso: usando tomografía de campo eléctrico, convierte cualquier superficie conductora de forma arbitraria —un volante, una pared pintada con tinta especial, un juguete— en una interfaz táctil. La pantalla deja de ser rectangular y se vuelve cualquier cosa. Diseñar para tacto en pantallas grandes o pequeñas exige consideraciones específicas: tamaño del objetivo (la regla de Fitts vuelve a aparecer), espacio para errores (los dedos no son punteros precisos), ergonomía de los gestos prolongados (sostener un brazo para tocar un display vertical cansa).
Inteligencia ambiental: cuando el entorno entero responde
Llegamos al paradigma más ambicioso. La Inteligencia Ambiental (Ambient Intelligence, AmI) no es una técnica de interacción puntual: es una visión integradora, formulada en los años 2000 por Emile Aarts y Stefano Marzano en el libro The New Everyday: Views on Ambient Intelligence (2003), y desarrollada en compilaciones como la de Weber, Rabaey & Aarts (2005) y los trabajos posteriores de Augusto y McCullagh (2007).
La idea: en vez de que el usuario interactúe con dispositivos discretos, el entorno entero —la casa, la oficina, el hospital, la ciudad— se vuelve sensible, adaptable y responsivo. La tecnología se disuelve en el espacio y aparece sólo cuando se la necesita.
Esta visión no es ajena a lo que ya vimos en la primera cápsula con Mark Weiser: la AmI es, en muchos sentidos, la materialización europea (con fuerte impulso de Philips y la UE) de la calm computing que Weiser imaginó en California. Mike Kuniavsky, en Smart Things (2010), la extendió al mundo de productos comerciales: objetos cotidianos que ganan sensibilidad sin perder su esencia de objeto.
Las seis características del entorno inteligente
Un entorno verdaderamente AmI debería exhibir:
Sensibilidad: percibir el contexto —identidad de las personas, ubicación, actividad, estado emocional— mediante sensores variados.
Responsividad: reaccionar a esa percepción de forma oportuna.
Adaptabilidad: ajustar su comportamiento según necesidades cambiantes. Aprender.
Transparencia: operar en segundo plano, sin demandar atención constante.
Ubicuidad: la inteligencia distribuida por todo el espacio, no concentrada en un dispositivo.
Inteligencia: capacidad de inferir intenciones, tomar decisiones, actuar autónomamente cuando corresponde, a menudo apoyándose en machine learning.
Escenarios canónicos
Hogar inteligente: luces que se ajustan a la hora y a la actividad, calefacción que aprende preferencias, sistemas de seguridad que distinguen a los habitantes de extraños, asistentes que recuerdan tareas en el momento oportuno (no a la hora que uno los programó, sino cuando el contexto lo indica).
Oficina inteligente: salas de reunión que reconfiguran iluminación y proyección al detectar quiénes entran, sistemas de booking que aprenden patrones, espacios que negocian recursos compartidos.
Salud inteligente: monitorización no invasiva de adultos mayores en su casa, detección temprana de caídas o cambios de patrón, entornos que asisten sin estigmatizar. Este es probablemente el campo donde la AmI tiene mayor potencial humanitario.
El precio de la ambición
La AmI lleva décadas de promesa y todavía no llega completamente. Los desafíos son enormes:
Sensing robusto: los sensores reales fallan, los entornos cambian, las personas no se comportan como en el laboratorio.
Inferencia contextual: deducir intención a partir de señales es uno de los problemas abiertos más difíciles de la IA aplicada.
Interoperabilidad: los ecosistemas comerciales (Apple, Google, Amazon, Samsung) siguen siendo islas que no se hablan bien.
Privacidad y control: un entorno que todo lo ve y todo lo decide es exactamente el escenario distópico que las personas temen, con razón. La AmI sin un marco ético sólido es vigilancia con buena estética. A estos temas le dedicamos una cápsula completa más adelante.
Comparando los paradigmas: cuándo elegir qué
Ningún paradigma es universalmente mejor. La pregunta correcta no es ¿cuál uso? sino ¿qué quiero hacer, dónde, con quién? Algunas heurísticas:
Si la tarea es manipulación compleja de objetos con varias personas a la vez —diseño urbano, composición musical, educación infantil—, lo tangible suele ganar.
Si la tarea es control a distancia o en condiciones de higiene crítica —cirugía, displays públicos, accesibilidad motriz—, el touchless o el gestual mid-air son los candidatos.
Si la tarea es navegación rápida y precisa sobre una interfaz rica —edición de texto, hojas de cálculo, trabajo de oficina—, el puntero y el tacto siguen siendo reyes.
Si lo que se quiere es disolver la interfaz por completo y que el entorno actúe en segundo plano —hogar, salud, oficina—, la AmI es el horizonte, aunque exija integración de todos los anteriores.
Una buena pista del oficio: los sistemas ubicuos reales rara vez usan un solo paradigma. Combinan. Un smart home tiene táctil (interruptores), touchless (asistente de voz), gestual (algunos controles), tangible (objetos físicos que actúan como triggers) y ambient (luces que cambian con la hora). La pregunta del diseñador es qué paradigma asignar a cada función según contexto, urgencia, formalidad y carga cognitiva.
Aprendizaje activo
Esto cierra con manos sobre la mesa. En la Actividad 4 — Storyboard de Paradigmas, ustedes van a:
- Elegir, en grupo, uno de los paradigmas estudiados (Tangible, Sin Contacto, Gestual o Ambient Intelligence).
- Diseñar un caso de uso cotidiano —distinto al de su proyecto del semestre— donde ese paradigma resuelva un problema concreto mejor que un teclado y un mouse.
- Producir un storyboard de 3 a 6 viñetas (dibujadas a mano y fotografiadas, o hechas en Google Drawings) que muestren la interacción paso a paso.
- Bajo cada viñeta, argumentar las ventajas del paradigma elegido frente a la alternativa tradicional.
El ejercicio es deliberadamente breve (40 minutos) y deliberadamente visual: contar una interacción en imágenes obliga a hacerse cargo de detalles que la prosa esconde —dónde está parado el usuario, qué tiene a mano, qué ve, qué oye, qué siente—. Esas son las preguntas que importan al diseñar ubicomp.
Protobject Framework: fundamentos
Páginas web como dispositivos: el primer prototipo en 30 líneas de JavaScript
Cada teléfono que ya llevamos en el bolsillo es un nodo esperando que lo invitemos a la fiesta.
La filosofía: no comprar lo que ya tenemos
Antes de instalar nada, conviene preguntarnos qué hardware nos rodea. Un curso de magíster típico tiene veinte estudiantes; veinte estudiantes tienen como mínimo veinte smartphones, una decena de notebooks, varias tablets, dos o tres relojes inteligentes y, si miramos el techo del aula, un proyector. Cada uno de esos dispositivos posee cámara, micrófono, acelerómetro, GPS, vibrador, parlante, pantalla táctil y conectividad. Todo eso, sumado, supera con creces a cualquier kit Arduino del mercado. Y, sin embargo, durante décadas la cultura del prototipado IoT nos empujó a comprar microcontroladores, sensores discretos, displays OLED minúsculos y a soldar.
Protobject Framework parte de la idea contraria: si lo que ya tenemos en el bolsillo es lo suficientemente poderoso, usémoslo. La unidad básica no será una placa, sino una página HTML. Cada página corre en un dispositivo distinto y juntas componen un sistema distribuido. La comunicación entre páginas es web, la lógica es JavaScript, el estilo es CSS, y el hosting es Glitch, Netlify, GitHub Pages o el servicio gratuito que ustedes prefieran. Cero instalación, cero compilación, cero drivers — al menos hasta que decidamos meterle un Arduino, pero esa es una historia para T4.
Hay además una segunda apuesta filosófica, más sutil pero igual de importante: el prototipo se debe poder rehacer en treinta minutos. Si el ciclo de iteración es lento, perdemos el espíritu de "prototipo desechable" que vuelve a esta disciplina interesante. Por eso el framework no introduce un lenguaje propio, no exige un build step, no impone una jerarquía rígida de componentes. Todo lo que sabemos de la web sigue valiendo. Si necesitas Plotly.js para una visualización, lo agregas con un <script> y listo. Si quieres reusar una clase de Tailwind, la usas. El framework se mete sólo cuando le pides una cámara, un acelerómetro o un canal de mensajes entre páginas.
Arquitectura: páginas como dispositivos
Una aplicación Protobject es, en esencia, una carpeta con varias páginas HTML y un archivo de configuración. Cada página representa un dispositivo o, mejor dicho, un rol dentro del sistema. La página lamp.html puede correr en una tablet apoyada en el escritorio y comportarse como una lámpara virtual; button.html puede abrirse en un smartphone y comportarse como un botón remoto. Si quisiéramos cambiar la división, basta con redistribuir las páginas entre los dispositivos disponibles — no hay nada en el código que ate físicamente un rol a un aparato concreto.
Una sola página tiene un estatus especial: la página main. Es la que aloja el sistema, la que muestra el código QR para que las demás se conecten, y la que (por defecto) cumple el rol de hub para el debug centralizado. En un sistema con cinco páginas, hay una main y cuatro secundarias. La elección de cuál hacer main es de diseño: suele ser la página que corre en el dispositivo más visible y estable (la tablet del escritorio, el proyector del aula), pero no hay regla técnica que lo imponga.
La configuración vive en un único archivo, config.js, que se incluye en todas las páginas y que enumera la totalidad del sistema:
Protobject.setProduction(false);
Protobject.initialize([
{
name: "Lámpara",
page: "lamp.html",
main: true,
debug: "master",
},
{
name: "Botón",
page: "button.html",
debug: "remote",
},
]);
Tres cosas pasan ahí. Primero, Protobject.setProduction(false) declara que estamos en modo desarrollo: una sola instancia, sin identificadores únicos, ideal para iterar rápido en local. Segundo, Protobject.initialize([...]) recibe la lista de páginas; cada entrada lleva un name legible (lo que verá el profesor en el panel de debug), el archivo HTML correspondiente y, opcionalmente, las banderas main y debug. Tercero, la propiedad debug decide qué hace cada página con sus mensajes de consola — lo veremos en detalle más abajo.
El mismo config.js se incluye en todas las páginas. Esto es importante: el framework no genera una "página servidor" y "páginas cliente", no hay backend escondido. Cada página, al cargar, lee la lista completa, identifica cuál de las entradas le corresponde (comparando la URL actual con la propiedad page) y se comporta en consecuencia. Es un diseño deliberadamente plano y simétrico.
El modelo de conexión: un más y un QR
Cuando abres la página main en un navegador, aparece un botón con un signo "+" flotando en la esquina (el ProtobjectPlusButton, que se puede customizar con CSS). Al hacer clic se despliega un código QR y un enlace. Cualquier dispositivo que escanee el QR o abra el link entra a la sesión, recibe automáticamente el config.js, y se vuelve un nodo activo del sistema.
Esto resuelve elegantemente el problema más fastidioso del prototipado distribuido: la fase de pairing. No hay que configurar Bluetooth, ni emparejar IPs, ni abrir puertos en el router. Funciona en cualquier red wifi compartida — y, si las páginas están alojadas en internet, funciona también entre dispositivos que están en redes distintas porque el framework apoya la comunicación en un servicio relay (app.protobject.com).
Para los estudiantes acostumbrados a luchar con drivers seriales o con sesiones MQTT que se caen sin razón, esta facilidad es liberadora. Conectar tres dispositivos toma quince segundos: abro la main en la tablet, escaneo el QR con el celular, lo escaneo otra vez con el del compañero. Listo, sistema distribuido.
La Core API: enviar y recibir mensajes
Una vez conectadas las páginas, necesitan hablar entre sí. La Core API del framework expone dos primitivas. Para enviar un mensaje a otra página:
Protobject.Core.send(payload).to("destino.html");
El payload puede ser cualquier valor serializable: un booleano (como en el ejemplo de la lámpara), un número, un objeto con varios campos, un arreglo. El framework lo serializa por debajo en JSON y lo entrega a la página de destino. El .to("destino.html") referencia el nombre del archivo HTML tal como aparece en config.js.
Para recibir mensajes, la página de destino registra un listener:
Protobject.Core.onReceived(function (message) {
// hacer algo con message
});
El callback se dispara una vez por cada mensaje entrante, sin filtrar por origen — es responsabilidad del receptor decidir qué hacer con cada mensaje recibido. Si más adelante el sistema crece y se necesita distinguir entre varios emisores, la convención es incluir un campo type o from en el objeto enviado.
Esto es todo lo que hay. No hay tópicos, no hay routing avanzado, no hay garantías de entrega exactly-once. Es un canal pub/sub minimalista, pensado para prototipos de baja fidelidad donde el costo de complejidad superaría al beneficio. Si tu proyecto necesita comunicación más robusta (acknowledgments, reintentos, persistencia), Protobject no es la herramienta adecuada — pero entonces probablemente ya saliste del territorio de los prototipos rápidos.
Primer prototipo end-to-end: Lamp + Button
Pongamos todo junto. Vamos a construir el "hello world" del framework: una página botón controla remotamente una página lámpara. Sólo dos archivos HTML y el config.js que ya escribimos arriba.
La página de la lámpara (lamp.html) es la main:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lámpara</title>
</head>
<body>
<script src="https://app.protobject.com/framework/p.js"></script>
<script src="config.js"></script>
<script>
const lamp = new Protobject.Lamp({
width: "calc(100% - 160px)",
height: "calc(100% - 160px)",
top: "80px",
left: "80px",
borderRadius: "20px",
});
Protobject.Core.onReceived(function (message) {
if (message) {
lamp.setColor({ r: 0, g: 255, b: 0 });
} else {
lamp.setColor({ r: 0, g: 0, b: 0 });
}
});
</script>
</body>
</html>
Notar que la página se compone de tres bloques esenciales: el <script> del framework (servido desde app.protobject.com), el <script> del config.js local, y el <script> inline con la lógica concreta. La instancia de Protobject.Lamp se posiciona con propiedades CSS-like; la llamada a Protobject.Core.onReceived registra el listener que cambia el color de la lámpara según el booleano entrante. Cuando se reciba true, la lámpara se pone verde; cuando se reciba false, se apaga.
La página del botón (button.html) es aún más corta. Crea un Protobject.Button, registra los handlers de onPressed y onRelease, y desde cada uno envía un mensaje a la lámpara:
const button = new Protobject.Button({
text: "Pulsa",
style: {
backgroundColor: "blue",
color: "white",
padding: "10px 20px",
borderRadius: "20px",
},
});
button.onPressed(() => {
Protobject.Core.send(true).to("lamp.html");
});
button.onRelease(() => {
Protobject.Core.send(false).to("lamp.html");
});
Eso es todo. Subimos los tres archivos a Glitch, abrimos lamp.html en el navegador del PC, hacemos clic en el "+", escaneamos el QR con el smartphone, y al apretar el botón en el celular la lámpara del PC se enciende en verde. Cinco minutos de trabajo, un sistema distribuido funcionando. La pedagogía detrás de este ejemplo es precisamente esa: derrumbar la idea de que la comunicación entre dispositivos requiere ceremonias.
Modo desarrollo vs. modo producción
Hemos visto Protobject.setProduction(false) al inicio del config.js. La diferencia entre los dos modos parece anodina pero es importante cuando el prototipo deja el escritorio del autor. En modo desarrollo (false), todas las instancias del proyecto comparten el mismo identificador interno: si dos personas abren la misma URL al mismo tiempo, sus mensajes se mezclan. Esto es deseable durante el desarrollo, porque permite testear desde dos pestañas del mismo navegador como si fueran dos dispositivos distintos.
En modo producción (true), Protobject inyecta un identificador aleatorio (?ptjuid={random}) en cada sesión nueva. Así, si dos parejas de estudiantes abren la misma demo en paralelo en sus respectivos teléfonos, cada pareja tendrá su propia "instancia" del sistema sin que los mensajes se crucen. Es el modo que conviene activar antes de presentar el prototipo en clase o de publicar la URL.
La regla práctica es simple: durante el desarrollo, false; antes de cualquier demo pública, true. No olvidarlo es una de esas pequeñas disciplinas que separan un prototipo amateur de uno presentable.
Debug distribuido: local, remote, master
El último concepto a fijar en T1 es la depuración. En un sistema con cinco páginas corriendo en cinco dispositivos distintos, abrir cinco DevTools simultáneamente para seguir los console.log es impráctico. Protobject ofrece tres modos de debug, configurables por página en config.js.
Con debug: "local", cada página muestra sus logs en su propia consola. Es lo que ya conocemos del desarrollo web tradicional, y es la opción por defecto. Funciona bien cuando estás iterando sobre una sola página y puedes tener el DevTools abierto en el mismo navegador.
Con debug: "remote", la página envía sus logs (y errores, y warnings) a otra página designada como master. Esto es invaluable cuando la página corre en un smartphone, donde acceder a la consola del navegador es engorroso. Los logs viajan por la misma infraestructura que los mensajes de aplicación y aparecen en el DevTools de la página master.
Con debug: "master", la página actúa como hub centralizado de logs. Recibe todo lo que las páginas remote le envían, lo muestra prefijado con el nombre del emisor, y al mismo tiempo muestra sus propios logs locales. Si no se especifica ninguna página como master, el rol recae automáticamente sobre la main. Una regla de higiene: nunca declarar más de una master, porque entonces los logs se duplican y el orden temporal se vuelve difícil de seguir.
En la práctica, una configuración típica para un prototipo de cuatro páginas tiene la main en modo master, una o dos secundarias visibles en local (porque corren en notebooks con DevTools cómodo de abrir), y las que corren en smartphones en remote. Eso da, en general, la mejor relación entre inmediatez y centralización.
Próximos pasos
Con los fundamentos en la mano, las próximas cápsulas técnicas se zambullen en los componentes concretos del framework. Primero veremos cómo cada smartphone se vuelve una sonda capaz de leer el entorno — cámara, micrófono, acelerómetro, GPS — y de transformar esos datos en mensajes accionables. Después exploraremos el lado activo de la interacción: lámparas que cambian de color, perillas virtuales, voz sintetizada, vibración háptica. Más adelante tenderemos un puente hacia el mundo físico clásico vía Arduino y WebUSB, integrando servos y mecanismos de Lego Technic. Y cerraremos con un recorrido por casos de estudio reales — los patrones de diseño que conviene tener en la cabeza cuando llegue el momento de prototipar el proyecto final del curso.
Sensores, actuadores y la nube
El smartphone que llevamos en el bolsillo es una sonda ubicua: nueve sentidos artificiales escuchando el mundo, esperando que alguien los conecte.
Cuando Mark Weiser imaginó la computación ubicua a comienzos de los noventa, no estaba describiendo un solo computador más potente. Estaba describiendo una red de dispositivos heterogéneos —tabs, pads, boards, en su vocabulario original— repartidos por el espacio físico, capaces de percibir, comunicarse y actuar sin reclamar atención. Esa visión solo se materializa si el silicio puede salir de la caja y tocar el mundo. Esta cápsula trata de las tecnologías habilitadoras que lo hacen posible: los sensores que escuchan, las placas que piensan, los actuadores que responden, y la conectividad que cose todo en un tejido.
Como dice Krumm en la introducción a Ubiquitous Computing Fundamentals (2009), ubicomp no es una tecnología puntual sino "una sopa de tecnologías" —sensores, redes, procesadores embebidos, modelos de contexto— cuya integración produce el efecto. Lo que sigue es el mapa básico de esa sopa.
El ciclo de interacción físico
En el corazón de cualquier sistema ubicuo hay un bucle que se repite a miles de hertz, sin descanso: percibir → procesar → actuar. El sensor lee una magnitud física —luz, aceleración, presión, sonido— y la convierte en una señal eléctrica. La placa de desarrollo interpreta esa señal, la combina con otras lecturas, consulta un modelo de contexto y decide. El actuador convierte esa decisión de vuelta en mundo físico: una vibración, un LED, una cortina que baja, una voz sintética que avisa que llegó la micro.
Cada eslabón tiene su propia gramática. Los sensores se clasifican primero según la naturaleza de la señal que entregan:
- Sensores analógicos: producen una señal continua proporcional a la magnitud medida. Un termistor, por ejemplo, varía su resistencia eléctrica de manera continua con la temperatura. Para que el microcontrolador lo entienda hay que digitalizar la lectura mediante un conversor analógico-digital (ADC).
- Sensores digitales: ya entregan un valor numérico discreto, muchas veces a través de un protocolo serial (I2C, SPI, UART). El sensor hace internamente el muestreo y la cuantización, y el procesador solo lee un número.
Los actuadores son la contraparte simétrica. Si los sensores permiten al sistema escuchar el mundo, los actuadores le permiten hablar y actuar sobre él. Y entre ambos vive el procesamiento: el cerebro embebido que cierra el lazo.
La idea de "ciclo" no es decorativa. Es lo que diferencia un sensor aislado —un termómetro que solo muestra un número— de un sistema interactivo —un termostato que regula la calefacción según el patrón de ocupación de la casa. El sistema interactivo cierra el bucle. El termómetro lo deja abierto.
Los sentidos del sistema
La variedad de sensores que un sistema ubicuo puede integrar es, hoy, vertiginosa. Conviene organizarlos en familias funcionales para no perderse.
Movimiento y orientación
Los acelerómetros miden la aceleración lineal en uno o más ejes. Detectan la inclinación (porque la gravedad es una aceleración constante hacia abajo), la sacudida, el paso. Cuando le das vuelta el celular y la pantalla rota, es el acelerómetro hablándole al sistema operativo. Los giroscopios miden la velocidad angular, es decir, qué tan rápido rota el dispositivo. Los magnetómetros detectan campos magnéticos —la brújula digital, en esencia. La combinación de los tres en una sola unidad se llama IMU (Inertial Measurement Unit) y permite un seguimiento robusto de orientación y movimiento en 3D. Toda la realidad virtual y aumentada moderna depende de IMUs miniaturizadas.
Localización
El GPS triangula la posición con satélites: funciona muy bien al aire libre, pésimo dentro de un edificio. Para suplir esa carencia, el posicionamiento indoor combina señales de Wi-Fi, balizas Bluetooth (beacons) o incluso luz visible (VLC, Visible Light Communication) para estimar dónde estás dentro de una sala.
Ambiente
Sensores de luz, temperatura, humedad, presión barométrica (que sirve para estimar altitud), calidad del aire (detectores de CO₂, COVs, partículas). Son los sensores que sostienen la Ambient Intelligence: una pieza que regula su climatización porque sabe cuánta gente hay adentro y cuán cargado está el aire.
Sonido
El micrófono es uno de los sensores más densos: cada segundo de audio contiene una cantidad enorme de información. Sirve para reconocimiento de voz, pero también para detectar eventos acústicos —una puerta que se cierra, un grifo abierto, un grito— como en el trabajo Whoosh (Reyes et al., 2016), que convierte soplidos en input para smartwatches.
Biometría y fisiología
Huella dactilar, reconocimiento facial, iris. Más adentro: el sensor PPG (fotopletismografía) que mide pulso cardíaco con luz infrarroja en los smartwatches, y el EDA (actividad electrodérmica) que detecta cambios sutiles en la conductancia de la piel asociados a la excitación emocional —un sensor querido por la computación afectiva y la investigación de UX.
Proximidad y presencia
Los PIR (Passive Infrared) detectan el calor de cuerpos en movimiento: son los responsables de que se enciendan las luces del pasillo cuando uno aparece. Los ultrasónicos miden distancias por eco. Los capacitivos detectan la cercanía de un objeto conductor sin tocarlo: así funcionan los botones sin contacto de los baños públicos.
Sensado avanzado y exótico
Acá empiezan los sensores que ya no son commodity. EM-Sense (Laput et al., 2015) usa el ruido electromagnético que emiten los dispositivos eléctricos para identificarlos al contacto: tocas un mouse y el sistema sabe que es un mouse, tocas un taladro y sabe que es un taladro. Electrick (Zhang, Laput & Harrison, 2017) convierte cualquier superficie pintada con tinta conductora en un panel táctil usando tomografía de campo eléctrico. Synthetic Sensors (Laput, Zhang & Harrison, 2017) propone virtualizar lecturas físicas en información de alto nivel: en vez de instalar veinte sensores en una cocina, un solo nodo multisensor aprende a inferir "el microondas está funcionando" o "alguien abrió la puerta de la nevera".
La gracia no está en un sensor individual sino en la fusión de sensores: combinar varias lecturas para inferir contexto. Un acelerómetro solo te dice que hay movimiento. Acelerómetro + GPS + micrófono te dicen que vas en una micro del Transantiago.
La voz y los músculos
Si los sensores son los sentidos, los actuadores son la salida del sistema. Suelen ser menos espectaculares en el catálogo pero igual de críticos: sin un actuador, el sistema percibe pero no responde, y el bucle queda abierto.
- Actuadores visuales: LEDs (indicadores, notificaciones, iluminación ambiental), displays (LCD, OLED, e-ink en lectores de libros y etiquetas de góndola), proyectores (que abren la posibilidad de proyectar interfaces sobre cualquier superficie física).
- Actuadores auditivos: zumbadores para tonos simples, parlantes para audio rico (voz, música, alarmas habladas).
- Actuadores de movimiento y hápticos: motores de vibración para el feedback en celulares y wearables, motores DC y servomotores para mover cortinas o brazos robóticos, solenoides para acciones de empujar-tirar como en una cerradura inteligente.
- Actuadores térmicos: celdas de Peltier para calentar o enfriar una superficie. Aparecen en interfaces avanzadas que quieren producir feedback térmico —imaginar un controlador de videojuego que se calienta cuando el personaje cruza una zona de fuego.
La elección del actuador es una decisión de diseño tan importante como la del sensor. Un sistema bien sensado pero mal actuado es como una persona con muy buen oído que solo sabe gritar.
El cerebro embebido: placas de desarrollo
Entre los sensores y los actuadores vive un microcontrolador, y entre el prototipo y el producto, una placa de desarrollo. Las dos plataformas dominantes en docencia y prototipado son:
- Arduino: hardware y software abierto, originalmente construido en torno al microcontrolador ATmega328P de Atmel —8 bits, 16 MHz, 32 KB de flash, 2 KB de RAM. Suena ridículo en la era de los terabytes, pero esos recursos sobran para leer sensores, controlar actuadores y empujar bytes por un puerto serial. Sirve para experimentar y para escribir el código que más tarde correrá en hardware más serio.
- Raspberry Pi: ya no es un microcontrolador sino un computador de placa única (SBC) corriendo Linux. Tiene GPIOs como Arduino pero además tiene CPU multinúcleo, RAM en gigabytes, Wi-Fi, conector HDMI. Es la opción cuando el procesamiento incluye visión por computador, web server o cualquier cosa que necesite un sistema operativo completo.
- ESP32 (Espressif): el caballo de batalla actual de IoT. Microcontrolador dual-core a 240 MHz con Wi-Fi y Bluetooth integrados, costos en torno a un par de dólares, y un ecosistema enorme. Cuando hoy se diseña un objeto conectado que tenga que mandar lecturas a la nube por Wi-Fi, lo más probable es que adentro lleve un ESP32.
- Plataformas históricas como Phidgets (Greenberg & Fitchett, 2001) y .NET Gadgeteer (Villar et al., 2012) introdujeron la idea de "widgets físicos": módulos enchufables que abstraen el cableado y permiten que un diseñador, no solo un ingeniero, arme prototipos.
La diferencia entre microcontrolador y SBC importa porque define qué se puede hacer en el borde y qué hay que delegar a la nube. Un ESP32 puede leer cinco sensores y publicar JSON cada segundo, pero no puede correr un modelo de visión por computador. Una Raspberry Pi puede correr el modelo, pero come más watts y es menos confiable como sistema embebido 24/7.
Cámaras y visión por computador
Las cámaras merecen un párrafo aparte porque son sensores densos: cada frame contiene una cantidad de información que excede por órdenes de magnitud lo que entrega cualquier otro sensor. La visión por computador —el campo de la IA dedicado a procesar y entender imágenes— habilita reconocimiento de gestos y poses, seguimiento corporal (Kinect, MatchPoint), reconocimiento facial, eye-tracking, reconocimiento de objetos, OCR (como en CameraKeyboard de Bellino & Herskovic, 2019), realidad aumentada, lectura de códigos QR, comprensión semántica del entorno (como en Zensors de Laput et al., 2015).
El costo de esa densidad es la privacidad. Una cámara captura cualquier cosa que pase delante de su lente, incluyendo rostros, pantallas, documentos. Diseñar con cámaras exige preguntarse, antes de capturar un solo frame, qué se va a hacer con él, dónde se procesa, cuánto vive almacenado, y qué se le comunica al usuario sobre todo eso.
El Internet de las Cosas
El término Internet of Things se le atribuye a Kevin Ashton (1999, popularizado en 2009): la idea de una red donde los objetos físicos, equipados con sensores, actuadores y conectividad, recopilan e intercambian datos —muchas veces máquina-a-máquina (M2M), sin intervención humana directa. Ashton lo planteó pensando en logística y RFID, pero el concepto se desbordó: hoy IoT es la infraestructura básica de los hogares inteligentes, las ciudades inteligentes, la industria 4.0, la agricultura de precisión, la salud conectada.
Para Weiser, IoT es el sustrato técnico que permite que su visión deje de ser laboratorio: una red de dispositivos heterogéneos, distribuidos, comunicándose entre sí sin pedirle al humano que abra una app para cada cosa. La promesa es seductora. Los riesgos —seguridad, interoperabilidad, gobernanza de datos, obsolescencia programada— son justamente lo que abordaremos en la cápsula 14 sobre ética y seguridad. Por ahora basta con instalar la idea: ningún dispositivo ubicuo opera solo. Pertenece a una red.
El sistema nervioso: conectividad inalámbrica
Para que la red exista, los dispositivos tienen que comunicarse. Las opciones inalámbricas más usadas en ubicomp ocupan un espacio de diseño con tres ejes: alcance, ancho de banda y consumo energético. No hay una tecnología que gane en los tres: cada una sacrifica algo.
- Wi-Fi (IEEE 802.11): la red local de la casa o la oficina. Alcance de decenas de metros, ancho de banda alto (suficiente para streaming de video), consumo moderado-alto. Requiere infraestructura (un router) y seguridad (WPA2 o WPA3). Es la opción por defecto cuando el dispositivo tiene enchufe.
- Bluetooth Classic y Bluetooth Low Energy (BLE): red personal de corto alcance (~10 m). El BLE en particular fue diseñado para consumir poquísima energía: una pulsera puede transmitir lecturas cardíacas durante semanas con una pila de botón. BLE se usa también para beacons —pequeños emisores que anuncian su identidad y permiten posicionamiento indoor o experiencias contextuales (un museo que entrega información sobre la pieza que tienes enfrente).
- NFC (Near Field Communication): alcance extremadamente corto (menos de 4 cm), basado en RFID. Lo que parece una limitación es en realidad un feature: el alcance mínimo fuerza la intencionalidad —no pagas con NFC por accidente, tienes que acercar el celular al lector. Comunicación rápida de establecer, modos activo y pasivo, consumo bajísimo. Usos: pagos sin contacto, tap-to-pair, etiquetas inteligentes.
- Zigbee y Z-Wave: protocolos de malla pensados para domótica. Bajo consumo, ancho de banda modesto, pero capaces de formar redes en malla donde cada dispositivo retransmite los mensajes de los demás, ampliando la cobertura sin necesidad de un único router potente.
- LoRa y LoRaWAN: cuando se necesita alcance grande (kilómetros) y consumo muy bajo, sacrificando ancho de banda. Sensores agrícolas, monitoreo ambiental, smart cities. Una pequeña baliza LoRa puede mandar un par de bytes cada media hora durante años con una pila.
- 5G y conectividad celular: cuando el dispositivo vive lejos de toda red local. Cara, energéticamente exigente, pero la única opción para flotas de vehículos o sensores en zonas remotas.
En la práctica, un sistema ubicuo suele combinar varias: BLE para hablarle al smartphone del usuario, Wi-Fi para subir datos a la nube, NFC para el emparejamiento inicial. La pregunta de diseño no es "qué red elijo" sino "qué red para qué eslabón".
Aprendizaje activo
La Actividad 5 — Hackea tu Smartphone convierte esta cápsula en práctica. El smartphone que andas trayendo es, probablemente, el dispositivo ubicuo más sofisticado que vas a tocar en todo el semestre: un nodo con nueve o diez sensores integrados, tres o cuatro radios inalámbricas, un procesador capaz, y una pantalla. Vamos a hacerle ingeniería inversa.
En grupos, en 45 minutos, harán tres cosas:
- Inventario sensorial. Instalen una app gratuita (tipo Sensor Box o equivalente) que les muestre los sensores disponibles. Identifiquen al menos cinco —acelerómetro, giroscopio, magnetómetro, sensor de luz ambiental, micrófono, GPS, barómetro, NFC, lo que aparezca— y armen una tabla con su función.
- Diseñen un micro-servicio IoT. Elijan dos sensores y una tecnología de red (BLE, Wi-Fi o NFC) que su smartphone soporte. Propongan un micro-servicio que resuelva un problema cotidiano combinándolos. No tiene que ser implementable hoy: tiene que ser coherente —que cada sensor aporte algo distinto, que la red elegida sea la apropiada para el patrón de comunicación.
- Dibujen el diagrama de flujo-evento. Eventos de entrada (los sensores), procesamiento en el dispositivo, comunicación por la red al servicio IoT, acción/feedback de salida. Formas estándar de diagrama de flujo: rectángulos para procesos, rombos para decisiones, óvalos para inicio/fin.
Cerrarán con un elevator pitch de 60 segundos. La parte difícil no es identificar sensores —ya saben qué hay adentro de un smartphone. La parte difícil es justificar la elección: por qué estos dos sensores y no otros, por qué esta red y no otra. Esa justificación es el verdadero entregable.
Protobject: sensores del entorno
Cámara, micrófono, movimiento, orientación, GPS — convertir el smartphone en sonda ubicua
Un smartphone apoyado sobre la mesa es una sonda dormida: cámara, micrófono, acelerómetro y GPS esperando que alguien les pregunte algo al mundo.
En la cápsula anterior (T1) vimos que Protobject reduce un dispositivo a una colección de objetos JavaScript que cualquier otro dispositivo puede leer o controlar. Esta cápsula se enfoca en una mitad muy concreta de ese catálogo: los componentes-sensor. Son los ojos, los oídos y el oído interno del sistema. Cuando los activas en un teléfono, ese teléfono deja de ser una pantalla y pasa a ser un instrumento de medición — exactamente la pieza que nos faltaba para empezar a hacer ubicomp sin comprar hardware.
El framework expone los sensores en cuatro familias, cada una basada en un tipo distinto de captura física: cámara, micrófono, inerciales (acelerómetro/giroscopio/magnetómetro) y GPS. El criterio para elegir un sensor casi nunca es técnico — es fenomenológico. ¿Qué señal del mundo necesitas? ¿Una persona pasa cerca? ¿La habitación está oscura? ¿El objeto se inclina? La respuesta determina la familia. Adentro de la familia, el resto son matices de granularidad.
Sensores basados en cámara
La cámara es el sensor más versátil del teléfono. Protobject la expone con siete componentes distintos, no porque haya siete cámaras, sino porque la misma imagen puede ser interpretada con siete preguntas diferentes. Todos comparten una misma estructura de uso: start(frecuencia, idCámara), onData(callback), showPreview({...}), hidePreview(), stop(). Lo que cambia es qué se extrae del frame.
PresenceSensor es el más simple: toma un fotograma como línea base y luego compara cada frame nuevo contra esa referencia. Si cambia "mucho" (umbral configurable), dispara un evento de presencia. Equivale a un sensor PIR sin infrarrojo. Es ideal para detectar que algo se mueve en el campo de visión sin importar qué — útil cuando tu interés es activar/desactivar, no clasificar.
LightSensor ignora la forma de la imagen y mide solo el promedio de brillo del frame. Es la respuesta más directa cuando lo que te interesa es "¿hay luz?", "¿se hizo de noche?", "¿alguien apagó la luz?". Un fragmento real:
// Detector de oscuridad con histéresis simple
Protobject.LightSensor.start(200, 0); // refresca cada 200 ms, cámara 0
let estado = "claro";
Protobject.LightSensor.onData((brightness) => {
if (estado === "claro" && brightness < 40) {
estado = "oscuro";
console.log("la habitación se oscureció");
} else if (estado === "oscuro" && brightness > 70) {
estado = "claro";
console.log("volvió la luz");
}
});
// Si la cámara está sobreexpuesta, ajusta:
Protobject.LightSensor.setExposure(50);
CameraMovement va un paso más lejos que PresenceSensor: en vez de "cambió o no cambió", calcula dirección y magnitud del movimiento óptico (optical flow). Te devuelve hacia dónde se desplaza el flujo de píxeles. Si pones el teléfono frente a una puerta, sabes si la persona entró o salió. Si lo apuntas hacia el cielo, mides el viento en las hojas. La diferencia con PresenceSensor es la riqueza del dato: aquí hay vector, no solo evento.
Protobject.CameraMovement.start(300, 0);
Protobject.CameraMovement.onData((data) => {
// data.direction está en grados (0-360)
// data.magnitude es la intensidad del flujo
if (data.magnitude > 5) {
const sentido = (data.direction > 90 && data.direction < 270)
? "izquierda" : "derecha";
console.log(`flujo hacia ${sentido}, intensidad ${data.magnitude.toFixed(1)}`);
}
});
ArUco detecta marcadores físicos (cuadrados blanco-y-negro impresos) y devuelve su posición y tamaño aparente. Es la forma más barata de obtener tracking de objetos físicos sin instrumentar nada — pegas un marcador en una taza, en un libro o en un brazo, y el teléfono lo sigue. Útil cuando necesitas identidad ("este es el marcador 7, no el 12") y geometría a la vez.
HandSensor, BodySensor y FaceSensor son los tres detectores de partes humanas. Internamente usan modelos de MediaPipe (Google) y devuelven landmarks: puntos clave con coordenadas normalizadas. HandSensor reconoce 21 landmarks por mano y gestos predefinidos (pulgar arriba, palma abierta, puño cerrado, etc.). BodySensor entrega esqueleto completo (hombros, codos, rodillas...). FaceSensor da malla facial densa y expresiones (cejas, párpados, comisura de la boca).
// HandSensor: detectar palma abierta para iniciar una acción
Protobject.HandSensor.start(200, 0);
Protobject.HandSensor.flip(true); // efecto espejo
Protobject.HandSensor.onData((data) => {
if (!data || data.length === 0) return;
const mano = data[0];
// El gesto detectado por MediaPipe llega con su nombre
if (mano.gesture === "Open_Palm") {
console.log("palma abierta — comando 'pausa'");
} else if (mano.gesture === "Closed_Fist") {
console.log("puño cerrado — comando 'play'");
}
});
// Si necesitas ver lo que la cámara está leyendo (debug):
Protobject.HandSensor.showPreview({ top: 50, left: 50, width: 640, height: 480 });
Un detalle de orientación que las tres comparten: están optimizados para landscape. Si fuerzas el teléfono en vertical, la imagen se estira y la detección pierde precisión. Es algo del modelo subyacente, no del framework.
QR cierra la familia: lee códigos QR y devuelve el string codificado. No mide nada — es un identificador. Útil para asociar un objeto físico a una URL, un ID de sesión o un parámetro de configuración.
¿Cuándo conviene cada uno? Si solo te interesa "alguien está ahí o no", PresenceSensor — es liviano y no requiere modelos cargados. Si quieres dirección de movimiento, CameraMovement. Si la pregunta es sobre iluminación, LightSensor. Si necesitas identificar partes del cuerpo (porque vas a hacer interacción gestual o postural), HandSensor / BodySensor / FaceSensor. Si quieres trackear objetos físicos específicos, ArUco o QR (ArUco cuando importa la posición/tamaño en cuadro, QR cuando importa solo la identidad).
Sensores basados en micrófono
La cámara captura imágenes; el micrófono captura presión sonora. Protobject expone tres niveles de procesamiento del audio, en orden creciente de inteligencia.
NoiseSensor es el equivalente acústico de LightSensor: te entrega un único número, la intensidad del audio (amplitud agregada en una ventana corta). No te dice qué se está escuchando, solo cuánto. Es el sensor perfecto para detectar "la sala se calló", "alguien gritó", "hay alguien hablando".
Protobject.NoiseSensor.start(300); // muestrea cada 300 ms
// Mini medidor de "silencio acumulado" para detectar concentración en una sala
let segundosCalladaConsecutivos = 0;
Protobject.NoiseSensor.onData((intensity) => {
if (intensity < 15) {
segundosCalladaConsecutivos += 0.3;
if (segundosCalladaConsecutivos > 30) {
console.log("30 s de silencio: bajar luces ambientales");
}
} else {
segundosCalladaConsecutivos = 0;
}
});
VoiceRecognition sube un escalón: convierte voz en texto. Es la entrada típica para comandos por voz ("apaga la luz", "siguiente página", "alarma a las 7"). El reconocimiento se hace sobre el motor de speech-to-text del navegador, así que la calidad y los idiomas dependen del browser. Está pensado para frases cortas y discretas, no para dictado continuo.
AudioClassifier es el más sofisticado: clasifica tipos de sonido usando un modelo de aprendizaje automático. Detecta y etiqueta sonidos comunes — palmadas, ladridos, llanto de bebé, golpes en una puerta, alarmas — y devuelve la etiqueta más probable junto con su confianza. Es la pieza que hace posible una interacción ambient honesta: el sistema responde al tipo de evento sonoro sin requerir que el usuario hable.
¿Cuándo cada uno? Si solo importa volumen, NoiseSensor. Si quieres comandos hablados, VoiceRecognition. Si quieres detectar eventos acústicos no verbales (palma, ladrido, golpe), AudioClassifier. NoiseSensor + AudioClassifier juntos son una buena combinación: el primero filtra ("está pasando algo"), el segundo califica ("¿qué está pasando?").
Sensores de movimiento y orientación
Estos sensores no miran el mundo, miran al propio dispositivo. Son los que permiten que el smartphone se entienda a sí mismo como objeto físico — cómo está orientado, si se está moviendo, si lo agitan, si se cayó. Hay tres componentes, cada uno con una semántica sutilmente distinta.
Acceleration entrega {x, y, z} en m/s², sin el componente gravitacional. Es decir: si el teléfono está perfectamente quieto sobre una mesa, los tres valores son cercanos a 0. Es la pieza correcta cuando lo que te interesa es el movimiento neto — un sacudón, un golpe, un paso, un viaje en auto.
Protobject.Acceleration.start(100); // 10 muestras por segundo
let umbralSacudida = 12; // m/s²
Protobject.Acceleration.onData((data) => {
const magnitud = Math.sqrt(data.x ** 2 + data.y ** 2 + data.z ** 2);
if (magnitud > umbralSacudida) {
console.log(`sacudida detectada (|a| = ${magnitud.toFixed(1)} m/s²)`);
}
});
Inclination entrega {x, y, z} incluyendo la gravedad. Cuando el teléfono está apoyado en horizontal, z ≈ 9.8 y x, y ≈ 0. Cuando lo pones vertical, la gravedad se reparte distinto. Esto lo convierte en el sensor correcto para preguntar cómo está orientado el objeto en reposo — si está plano, parado, inclinado a la izquierda, dado vuelta. Si tu interacción se basa en "poner el teléfono boca abajo silencia" o "inclinar para nivelar una burbuja virtual", este es el componente.
Protobject.Inclination.start(200);
Protobject.Inclination.onData((data) => {
// data.z cercano a -9.8 ≈ teléfono boca abajo
if (data.z < -8) {
console.log("boca abajo → modo silencio");
} else if (data.z > 8) {
console.log("boca arriba → modo normal");
}
});
Orientation va un paso más allá y entrega la orientación 3D fusionada del dispositivo, combinando acelerómetro + giroscopio + magnetómetro. Te da pitch, roll y yaw (o un cuaternión, según la implementación) en un marco de referencia global. Es lo que necesitas si quieres usar el teléfono como puntero en el espacio, como brújula corregida, o para alinear contenido aumentado con el mundo real.
La regla mental: Acceleration mide lo que estoy haciéndole al teléfono ahora, Inclination mide cómo lo dejé en reposo, Orientation mide hacia dónde está apuntando en el mundo.
GPS
GPS es geolocalización pura: latitud, longitud, velocidad, precisión y altitud. Llega como un único objeto data. La frecuencia de actualización depende del SO y del modo (en background suele ser mucho más lento).
Protobject.GPS.start();
Protobject.GPS.onData((data) => {
console.log(`lat ${data.latitude}, lon ${data.longitude}`);
console.log(`velocidad ${data.speed} m/s, precisión ±${data.accuracy} m`);
if (data.speed > 1.4) {
console.log("el usuario está caminando");
} else if (data.speed > 8) {
console.log("el usuario va en vehículo");
}
});
// Cuando ya no necesites tracking, libera el sensor:
// Protobject.GPS.stop();
Dos advertencias prácticas. Primero, en interiores la señal GPS es muy pobre — la precisión puede caer a decenas de metros o desaparecer. Si tu aplicación es indoor, GPS no es el sensor correcto: piensa en marcadores ArUco, NFC o BLE-beacons (estos últimos vía Arduino + Protobject). Segundo, el navegador siempre pedirá permiso explícito al usuario antes de entregar coordenadas. Diseña el flujo asumiendo que la primera lectura llega varios segundos después del start().
Decisión por contexto
Una guía corta para elegir rápido. Léelo como un árbol de decisión.
- Si necesitas detectar presencia humana sin saber quién → PresenceSensor (más liviano) o BodySensor (si después quieres distinguir postura).
- Si necesitas medir luz ambiental → LightSensor.
- Si necesitas dirección de movimiento (alguien que entra vs. alguien que sale) → CameraMovement.
- Si necesitas trackear un objeto físico → ArUco (posición + identidad) o QR (solo identidad).
- Si necesitas gestos de manos → HandSensor.
- Si necesitas postura corporal → BodySensor.
- Si necesitas expresión facial o atención visual → FaceSensor.
- Si necesitas saber si hay ruido / silencio → NoiseSensor.
- Si necesitas entender lo que alguien dice → VoiceRecognition.
- Si necesitas clasificar sonidos no-verbales (palmas, ladridos, golpes) → AudioClassifier.
- Si necesitas detectar un sacudón o un movimiento brusco → Acceleration.
- Si necesitas saber cómo está orientado el objeto en reposo → Inclination.
- Si necesitas pitch/roll/yaw para apuntar o aumentar el mundo → Orientation.
- Si necesitas ubicación geográfica en exteriores → GPS.
- Si necesitas ubicación en interiores → no GPS: ArUco, NFC, o Arduino + beacon.
Una última observación que vale para todos: cada start() consume batería y memoria. En un dispositivo móvil, activar tres sensores de cámara distintos en paralelo no es gratis — cada uno mantiene su pipeline de vídeo. Si dos componentes pueden compartir el mismo frame conceptualmente (por ejemplo HandSensor y FaceSensor), considera si realmente necesitas los dos al mismo tiempo o si puedes alternarlos con stop() / start() según el estado de la aplicación. La elegancia ubicua se nota más en lo que el dispositivo decide no hacer.
Técnicas de interacción avanzadas
Hay sensores que escuchan lo que el oído no oye y campos eléctricos que dibujan dedos sobre paredes. La interfaz, cuando madura, deja de ser pantalla y se vuelve física diminuta.
Las cápsulas anteriores trazaron el mapa: paradigmas (tangible, gestual, ambient), sensores, IoT. Esta cápsula entra al laboratorio. Acá conviven técnicas que cualquier estudiante de magíster en sistemas interactivos debería poder reconocer, explicar y, sobre todo, descomponer — porque cada una de ellas es un pequeño organismo con un sentido (señal), un órgano (sensor), un cerebro (procesado e inferencia) y una voz (feedback).
El catálogo es heterogéneo a propósito. Algunas técnicas explotan fisiología humana (la mirada, el ritmo, el habla). Otras explotan fenómenos físicos sutiles que pasaban inadvertidos hasta hace una década (ruido electromagnético ambiental, distribución de campo eléctrico en superficies conductoras). Y todas comparten una misma promesa ubicua: ampliar el ancho de banda entre persona y ambiente sin obligar al usuario a aprender una nueva gramática de gestos en cada dispositivo.
6.1 La mirada como entrada
La mirada es uno de los canales más informativos del cuerpo humano: indica atención, intención y curiosidad antes de que la mano se mueva. El seguimiento ocular (eye tracking) mide a dónde se está mirando usando, en su forma más común, cámaras infrarrojas que detectan el reflejo corneal y la pupila. La entrada por mirada (gaze input) usa esa señal como método de control — históricamente como apoyo a usuarios con discapacidad motora severa, hoy como modalidad complementaria en entornos manos libres.
Tres problemas clásicos han perseguido a la entrada por mirada desde sus inicios. Calibración: cada ojo es distinto, los modelos pierden precisión con cambios de iluminación o si el usuario mueve la cabeza, y recalibrar molesta. Toque de Midas: si mirar es activar, ¿cómo distingue el sistema entre observar y querer? El método tradicional ha sido el dwell time — fijar la vista durante 800 ms o más sobre un objetivo — pero esto es lento y propenso a falsos positivos. Precisión: el ojo nunca está quieto. Aun fijando, lo recorren sacádicos y microsacádicos involuntarios, por lo que apuntar a objetivos pequeños es físicamente imposible.
Smooth pursuit: la solución que vino del laboratorio
A mediados de la década de 2010, un grupo en Lancaster University propuso un giro elegante: en lugar de pedirle al ojo que fije, pedirle que persiga. Los movimientos oculares de persecución suave (smooth pursuit) son los que ejecutamos espontáneamente al seguir un objeto que se desplaza con velocidad predecible. Tienen una propiedad notable: no podemos generarlos voluntariamente sin un estímulo en movimiento que los induzca. Si una cámara detecta que el ojo se mueve con una trayectoria, esa trayectoria existe afuera.
Pursuits (Vidal, Bulling y Gellersen, 2013) fue la primera técnica en explotar esto. Coloca objetivos animados en pantalla; cada uno se mueve siguiendo una trayectoria distinta. El sistema correlaciona los movimientos oculares del usuario con cada trayectoria conocida. Cuando la correlación de una de ellas supera un umbral, esa es la seleccionada. Sin calibración, sin dwell, sin entrenamiento previo: el usuario simplemente mira al objetivo que quiere y, sin darse cuenta, su ojo lo sigue.
Orbits (Esteves, Velloso, Bulling y Gellersen, 2015) llevó la idea a smartwatches. En una pantalla de menos de 4 cm de diagonal, los botones convencionales son demasiado pequeños y la calibración ocular impracticable. Orbits asocia a cada control una pequeña órbita: un punto que gira a su alrededor con una fase, velocidad o sentido distintos. El usuario sigue con la mirada la órbita del control que quiere activar. La técnica es manos libres, robusta a imprecisión, y funciona en pantallas diminutas — siempre que el diseñador escoja con cuidado el número de objetivos y la variación entre órbitas para evitar correlaciones espurias.
AmbiGaze (Velloso et al., 2016) cierra el ciclo llevando smooth pursuit fuera de la pantalla. Aquí los objetivos animados no están en un display: están en los propios dispositivos del entorno. Las aspas de un ventilador giran, un punto láser orbita una lámpara, un altavoz hace pulsar un LED. El usuario mira al dispositivo que quiere controlar, su ojo persigue la animación, y el sistema infiere la intención. Es eye tracking sin pantalla — la conclusión natural de combinar gaze input con el paradigma ambient.
6.2 Reconocimiento y síntesis del habla
El habla es la modalidad de comunicación más natural entre humanos, y por décadas fue también la promesa incumplida de la interacción persona-máquina. Eso cambió. El reconocimiento del habla (Automatic Speech Recognition, ASR) convierte una señal de audio en texto. La arquitectura clásica combina un modelo acústico (qué fonemas componen la señal) con un modelo de lenguaje (qué secuencias de palabras son probables en este idioma y contexto); la transcripción más verosímil gana. Los sistemas modernos sustituyen ambos modelos por redes neuronales end-to-end, pero la estructura conceptual sobrevive.
La síntesis del habla (Text-to-Speech, TTS) hace el viaje inverso: parte de texto y produce audio. Analiza léxico y sintaxis del texto, traduce a fonemas, agrega prosodia (entonación, ritmo, énfasis) y sintetiza la onda. Las generaciones recientes de TTS neuronales han borrado casi por completo la frontera de la "voz robótica" — una voz sintética bien entrenada hoy resulta indistinguible de una grabación humana corta.
Combinar ASR y TTS produce sistemas de diálogo hablado: Siri, Alexa, el Asistente de Google. Su diseño abre preguntas que las heurísticas de Nielsen no responden directamente: ¿cómo señalar visibilidad de estado en una interfaz sin pantalla? ¿Cómo recuperarse de errores cuando el usuario no sabe qué frases acepta el sistema? Las respuestas — earcons de confirmación, repetición explícita ("escuché 'apagar la luz del living', ¿correcto?"), políticas de timeout — siguen siendo terreno activo de diseño.
6.3 Comprender el lenguaje: NLP
ASR convierte audio en texto, pero el texto bruto no es comprensión. El procesamiento del lenguaje natural (NLP) es el área que estudia cómo hacer que una máquina entienda y produzca lenguaje humano de manera significativa. Sus capas tradicionales — analizadas durante décadas por Manaris (1998) y otros — son léxica (¿qué palabras hay?), sintáctica (¿cómo se relacionan gramaticalmente?), semántica (¿qué significan en este contexto?) y pragmática (¿qué quiso decir el hablante?).
Para sistemas interactivos ubicuos, NLP es la diferencia entre un comando rígido y una conversación. Un altavoz inteligente que solo reconoce "OK Google, enciende la luz" pertenece al pasado; uno que comprende "está demasiado oscuro" y deduce la acción pertenece al presente. Las aplicaciones desbordan los altavoces: chatbots de atención al cliente, asistentes de escritura como WriteBetter (Bellino y Bascuñán, 2020), traducción automática, análisis de sentimientos sobre reseñas, resúmenes automáticos. En todos los casos, el reto del diseñador no es entrenar el modelo de lenguaje — eso lo hacen pocas empresas con muchísimos datos — sino integrarlo en una experiencia donde el usuario sepa qué puede pedir, reciba retroalimentación clara y pueda corregir el rumbo cuando la máquina se equivoca.
6.4 EM-Sense: escuchar el ruido invisible
Hasta aquí, las técnicas observadas usaban señales que el usuario produce intencionalmente: mirar, hablar. La siguiente clase de técnicas, en cambio, escucha el ambiente. Y de ahí se ha vuelto una especialidad de un grupo en particular: el Future Interfaces Group del CMU (Carnegie Mellon), dirigido por Chris Harrison, con figuras como Gierad Laput y Yang Zhang aportando algunas de las ideas más originales de la última década.
EM-Sense (Laput, Yang, Xiao, Sample y Harrison, 2015, UIST) parte de un hecho que parece anecdótico pero es enorme: la mayoría de los aparatos eléctricos del mundo emiten ruido electromagnético característico cuando funcionan. El motor de un cepillo de dientes, la fuente conmutada de un router, la pantalla de un microondas, el ventilador interno de un notebook — cada uno tiene una "firma" EM distinta, modulada por su electrónica interna.
Cuando una persona toca uno de estos objetos, su cuerpo — que es un conductor razonable — se acopla al circuito y propaga esa señal. EM-Sense pone un sensor capaz de captar el espectro EM en la muñeca del usuario (un smartwatch modificado con una radio definida por software, SDR). El watch capta el ruido propagado a través del cuerpo, le aplica una transformada de Fourier para extraer un espectro característico, y un clasificador entrenado por machine learning decide qué objeto fue tocado.
El resultado, con el hardware de 2015, ya distinguía decenas de objetos con precisión cercana al 96%. Lo más bonito es lo que no requiere: ningún objeto del entorno necesita ser instrumentado. No hay etiquetas RFID, ni cámaras, ni dispositivos extra.
La infraestructura de sensores es el propio mundo eléctrico que ya nos rodea.
EM-Sense es, en este sentido, un ejemplo perfecto de la calm technology de Weiser — la información se obtiene de fenómenos que ya estaban ahí pero que nadie escuchaba.
Las aplicaciones imaginadas por los autores recorren un espectro amplio. Lanzar una app de temporizador cuando el usuario toma el cepillo de dientes eléctrico. Inferir actividades cotidianas a partir de la secuencia de objetos manipulados. Reconocer si un electrodoméstico está prendido o apagado por su firma EM. Usar el toque a un objeto personal (la manija de la puerta de la oficina) como factor de autenticación implícita. Diferenciar quién toca qué en un entorno compartido.
6.5 Electrick: tomografía táctil de bajo costo
Si EM-Sense escucha el mundo, Electrick (Zhang, Laput y Harrison, 2017, CHI) lo toca. Y resuelve un problema que parecía resuelto pero no lo estaba: convertir cualquier superficie de cualquier forma en una pantalla táctil sin gastar miles de dólares en un sensor capacitivo a medida.
La técnica se basa en tomografía de campo eléctrico (Electric Field Tomography, EFT). Cualquier objeto o superficie hecho de un material electrónicamente conductor pero con cierta resistividad — plásticos conductores como el ABS con carbono, Velostat, pinturas conductoras, hidrogeles tan domésticos como Jell-O o Play-Doh — sirve como sustrato. Se le pegan o instalan electrodos en el perímetro. Una pequeña corriente se inyecta entre pares de electrodos adyacentes, generando un campo eléctrico a través del material; el sistema mide el voltaje entre todos los demás pares.
Cuando un dedo humano toca la superficie, el cuerpo del usuario actúa como una vía a tierra y deriva parte del campo. Las medidas de voltaje se alteran de forma característica. Comparando los voltajes con un mapa de referencia, el sistema triangula el punto de contacto. Con suficientes electrodos y un modelo de inversión adecuado, la precisión es del orden de un centímetro o mejor — más que suficiente para botones, sliders, gestos amplios.
Lo que hace a Electrick excepcional no es la precisión sino la versatilidad de fabricación. Una mesa pintada con pintura conductora se vuelve táctil. Una pared con plancha de Velostat detrás del yeso se vuelve táctil. Un objeto impreso en 3D con filamento de ABS conductor se vuelve táctil. Un peluche relleno con material conductor se vuelve táctil. El componente electrónico que cierra el sistema es modesto: un microcontrolador con multiplexor analógico, conectores hacia los electrodos del perímetro y un puerto serial. Material: decenas de dólares. La técnica democratiza la fabricación de interfaces táctiles más allá de la pantalla rectangular.
6.6 Móviles y wearables: jugar con el factor de forma
Las técnicas anteriores funcionan en hardware exótico. Pero la plataforma ubicua más extendida es la que ya está en el bolsillo. Smartphones y smartwatches concentran sensores (cámara, micrófono, acelerómetro, giroscopio, GPS, magnetómetro), conectividad permanente y pantallas con resolución pero limitadas en tamaño. Diseñar para ellos exige reconocer las restricciones — uso con una mano, pulgar como dedo dominante, pantalla mínima en el reloj — y volverlas oportunidades.
Gestos optimizados para una mano
Cuando se sostiene un teléfono con una mano, el pulgar opera prácticamente todo, y su trayectoria útil dibuja un arco — no llega cómodamente a la esquina opuesta. The Fat Thumb (Boring et al., 2012) propuso usar el tamaño del área de contacto del pulgar como una modalidad extra, similar a presión: el pulgar plano sobre la pantalla activa un modo distinto al pulgar de punta, lo que permite alternar entre paneo y zoom sin levantar el dedo. Thumb + Pen Interaction on Tablets (Pfeuffer, Hinckley, Pahud y Buxton, 2017) explora la división del trabajo entre el pulgar de la mano que sostiene la tableta y un lápiz óptico en la otra: una bimanual asimétrica que aprovecha lo mejor de cada modalidad.
Entrada acústica no vocal
Whoosh (Reyes et al., 2016) usa el micrófono del smartwatch para reconocer soplos del usuario — cortos, largos, direccionales — como comandos. Combinado con una carcasa impresa en 3D que modifica la acústica (Flutecase), la técnica permite navegar un menú soplando, sin tocar la pantalla, sin hablar. Es manos libres y voz libre — útil para contextos donde hablar molesta (una reunión) y donde tocar es incómodo (con guantes, con las manos sucias).
Ritmo y movimiento corporal
Una familia menos conocida pero conceptualmente rica es la de las técnicas basadas en ritmo. La idea: en lugar de identificar al usuario por su huella o reconocer un gesto puntual, identificar una secuencia temporal que el usuario produce y que el sistema relaciona con una opción visible. SEQUENCE (Bellino, 2018) lleva esta idea a un control remoto: cada elemento seleccionable en pantalla parpadea o se mueve con un ritmo distinto, y el usuario lo selecciona haciendo un movimiento corporal sincronizado con ese ritmo, capturado por la cámara frontal del smartphone. La técnica hereda del smooth pursuit la lógica de correlación, pero la traslada al cuerpo entero: el dedo, la cabeza, el torso pueden ser el "puntero". TraceMatch (Clarke et al., 2016) extendió la idea a controles que orbitan en pantalla, detectando coincidencias entre el movimiento del usuario y la trayectoria del objetivo a través de visión por computador.
Multi-dispositivo y continuidad
Las pantallas grandes están en todas partes — paredes de visualización, TVs, monitores compartidos — y casi nunca son táctiles. Una vertiente de la investigación de los últimos años ha usado el smartphone como controlador para pantallas grandes. Touch&Screen ofrece una colección de widgets para pantallas murales operadas desde el teléfono. SleeD (Von Zadow et al., 2014) va más allá: monta una pequeña pantalla táctil en la muñeca, que el usuario lleva como manga, y que sirve simultáneamente para detectar dónde toca la pared y para mostrar información detallada que la pared grande no muestra. La interacción se reparte entre lo que ve la pared (resumen, contexto) y lo que ve la muñeca (detalle, control).
Cámara como sensor de texto
CameraKeyboard (Bellino y Herskovic, 2019) usa la cámara del smartphone como soporte adicional para la entrada de texto, ampliando el ancho de banda del teclado virtual con información visual del entorno. Es un recordatorio de que sensores que ya están encendidos pueden hacer mucho más de lo que su uso "canónico" sugiere — un principio que recorre toda esta cápsula.
El patrón común: señal, sensor, procesado, inferencia, feedback
Mirando el catálogo, emerge una arquitectura compartida que conviene hacer explícita:
- Señal: el fenómeno físico que aporta información (movimiento ocular, onda sonora, ruido electromagnético, deriva de campo eléctrico, gesto corporal).
- Sensor: el hardware que transduce esa señal a datos digitales (cámara infrarroja, micrófono, radio SDR, electrodos perimetrales, cámara RGB).
- Procesado: la limpieza y reducción del dato bruto (filtrado, transformada de Fourier, suavizado, segmentación).
- Inferencia o algoritmo: el modelo que extrae intención del dato procesado (correlación de trayectorias, clasificador ML, triangulación geométrica, modelo acústico + modelo de lenguaje).
- Feedback o salida: la respuesta del sistema, idealmente inmediata y legible (selección de objeto, comando ejecutado, identificación de objeto tocado, transcripción de habla).
Una técnica avanzada se entiende cuando se puede recorrer esa pipeline sin saltarse pasos. Y se evalúa de forma crítica cuando se identifican sus puntos de falla: ¿qué pasa si la iluminación cambia (calibración del eye tracker)? ¿Qué pasa con ruido EM ambiental (EM-Sense en una oficina llena de equipos)? ¿Qué pasa si la superficie de Electrick se humedece o el material envejece? ¿Qué pasa si el usuario tiene un tic involuntario y arruina la sincronía rítmica?
Aprendizaje activo
En la próxima sesión te toca a vos diseccionar una técnica. Actividad 6 — Caja Negra de la Técnica te pide elegir, en grupo, una de las técnicas vistas (EM-Sense, Electrick, Orbits, Whoosh, SEQUENCE, AmbiGaze, Pursuits, Fat Thumb, lo que sea), y abrirle la caja negra mediante un diagrama de bloques que respete los cinco pasos: señal → sensor → procesado → inferencia → feedback.
Después vienen las dos partes difíciles: listar al menos tres limitaciones reales — no genéricas ("no es perfecta"), sino específicas y técnicamente argumentables ("EM-Sense falla cuando hay dos electrodomésticos del mismo modelo en el ambiente porque su firma EM es indistinguible") — y proponer una mejora o sensor auxiliar que mitigue una limitación. La mejora puede ser un sensor extra que aporte información complementaria, un cambio en el algoritmo, una modificación en el diseño físico de la interfaz, o una combinación. Lo que importa es que la propuesta sea concreta, factible y conectada a la limitación que dice atacar.
Cada grupo presenta 2-3 minutos: técnica, diagrama, limitaciones, propuesta. Recuerda que la caja negra deja de serlo cuando alguien la dibuja en cinco bloques con flechas claras.
Protobject: componentes UI y salidas multimodales
Lámparas, perillas, voz sintetizada, vibración — el lado activo de la interacción
El sistema que habla, brilla y vibra: cuando los componentes dejan de leer al mundo y empiezan a contestarle.
En T2 nos paramos del lado del sensor: el smartphone como una membrana que escucha al entorno, lo digitaliza y lo entrega como número, callback o evento. Esta cápsula da vuelta el flujo. Ahora es el sistema el que actúa sobre la persona: enciende una luz, dice una palabra, vibra el bolsillo, muestra un valor en pantalla, pregunta y espera respuesta. Es el lado expresivo de Protobject, el lado que cierra el lazo de la interacción ubicua.
Y como toda interfaz ubicua trabaja en varios canales a la vez (visual, auditivo, táctil, textual), la cápsula está organizada por canal de salida más que por orden alfabético. Vamos a recorrer primero los componentes UI interactivos —Lamp, Switch, Button, Knob, Text—, después las salidas auditivas —SoundPlayer, NotePlayer, TextToSpeech—, y por último la salida háptica —el Haptic con sus patrones de vibración. Cerramos con un patrón de integración: cómo combinar entrada y salida cuando viven en dispositivos distintos, que es donde Protobject realmente se distingue.
Componentes UI: pintar la interfaz con primitivas físicas
Una de las decisiones más interesantes de Protobject es que sus componentes de interfaz no son widgets HTML genéricos (un <input type="range">, un <button>, un <div> con color). Son metáforas de objetos físicos: una lámpara, un interruptor de pared, un botón pulsador, una perilla, una pantalla LCD. La diferencia parece cosmética pero no lo es: cuando le decimos a alguien "tu celular va a ser una lámpara", la cabeza piensa en iluminación de un espacio, no en pintar un rectángulo. Esa transferencia de modelo mental es exactamente lo que un curso de UbiComp quiere provocar.
Lamp — el píxel encendido
Lamp es el componente más simple del set y, en la práctica, el más usado para feedback visual ambiente. Crea un rectángulo (o círculo, si se lo da borderRadius: '50%') que ocupa el espacio que se le indique y al que se le puede cambiar el color en cualquier momento. Es la versión Protobject de un LED gigante.
const lamp = new Protobject.Lamp({
width: '200px',
height: '200px',
top: '50px',
left: '50px',
});
// Cambiar el color por string CSS
lamp.setColor('crimson');
// O bien por RGB explícito (útil para mapear sensores a color)
lamp.setColor({ r: 255, g: 120, b: 0 });
// Estilo extra: convertirla en una esfera con halo
lamp.setStyle({
borderRadius: '50%',
boxShadow: '0 0 40px rgba(255, 120, 0, 0.6)'
});
Casos típicos: una pantalla puesta cerca de la puerta que se pone roja si hay alguien en la sala (sensor de presencia → Lamp), una tablet en la mesa de la guagua que cambia de color suavemente con el ruido ambiente, un celular usado como semáforo de turnos en una atención al público. La instrucción setColor acepta tanto strings CSS como objetos {r, g, b}, lo que la hace cómoda para mapeos lineales del tipo setColor({ r: nivel*2.55, g: 0, b: (100-nivel)*2.55 }).
Cuando ya no se necesita, lamp.remove() la quita del DOM. Detalle no trivial: en una sesión Protobject las páginas pueden tener varias instancias de Lamp activas a la vez —imaginen una grilla de cuatro lámparas que representan cuatro estados— y cada una se gestiona por separado.
Switch — el estado binario explícito
Switch materializa una idea muy concreta: el usuario tiene que declarar un estado on/off, y el sistema tiene que reaccionar al cambio. No es una caja de check ni un toggle de iOS por casualidad estética: es la metáfora del interruptor de pared, con su affordance visceral de "lo doy vuelta y la luz se prende".
const luzCocina = new Protobject.Switch({
onText: 'PRENDIDA',
offText: 'APAGADA',
width: 120,
height: 220,
top: 80,
left: 60,
fontSize: 18,
styleOff: { backgroundColor: '#2A2A3C' },
styleOn: { backgroundColor: '#0044FF' },
onTurnedOn: () => Protobject.Core.send('luz', true),
onTurnedOff: () => Protobject.Core.send('luz', false),
});
El switch tiene dos vidas distintas. Una es local: el callback onTurnedOn / onTurnedOff reacciona a la acción del usuario directamente en el mismo dispositivo. Otra es distribuida: en el callback se hace Protobject.Core.send(...) y otra página suscrita recibe el cambio. El segundo modo es el que da pie a los prototipos ubicuos —el celular del usuario A controla algo que pasa en la tablet del usuario B—, y lo desarrollaremos al final.
setOnOffText, setStyleContainer, setStyleKnob y setStyleTextElement permiten ajustar la apariencia sin tocar CSS externo. Es deliberadamente verboso para que el prototipo sea autocontenido.
Button — la acción puntual
Button es el primo del Switch sin estado: una pulsación es un evento momentáneo, no un cambio de modo. Tiene dos callbacks separados, onPressed y onRelease, lo cual es importante: muchas interacciones de UbiComp dependen de la duración de la pulsación (mantener apretado para grabar, soltar para reproducir, dejar el dedo encima durante medio segundo para confirmar).
const grabar = new Protobject.Button({
text: 'MANTÉN PARA GRABAR',
style: {
backgroundColor: '#0044FF',
color: 'white',
padding: '20px 40px',
fontSize: '18px',
borderRadius: '12px'
}
});
let timestampInicio = null;
grabar.onPressed(() => {
timestampInicio = Date.now();
grabar.setText('GRABANDO…');
});
grabar.onRelease(() => {
const duracion = Date.now() - timestampInicio;
grabar.setText(`GRABADO ${duracion} ms`);
});
Detalle: el Button respeta tanto eventos touch como mouse, así que el mismo código corre en celular, tablet o computador. Eso suena obvio pero no lo es —si lo hubiéramos hecho a mano con addEventListener('click') ya habríamos perdido el long-press— y es una de las razones por las que Protobject existe: ahorrarse el plomero del input.
Knob — el valor continuo
Si Button es la acción discreta y Switch es la transición binaria, Knob es el valor continuo: un número entre min y max, ajustable arrastrando, con un callback que dispara cada cambio. Es el potenciómetro analógico.
const volumen = new Protobject.Knob({
min: 0,
max: 100,
size: 180,
initialValue: 30,
knobColor: '#2A2A3C',
valueColor: '#F4F4F6',
style: {
position: 'absolute',
top: '120px',
left: '60px'
}
});
volumen.onChange((value) => {
console.log(`Volumen ajustado a ${value}`);
// Mapear el valor del knob a una propiedad del sistema:
// volumen → brillo de una Lamp en otra página
Protobject.Core.send('brillo', value);
});
Notar que onChange se dispara con altísima frecuencia (cada movimiento del dedo), así que cuando se usa para enviar valores a otro dispositivo vía Protobject.Core.send, hay que tener cuidado con la red. En prototipos chicos no es problema; en escenarios con varios participantes simultáneos conviene "thrombear" (un setTimeout con reset) o agrupar envíos cada 50–100 ms. Es uno de los pocos lugares donde Protobject deja la decisión al desarrollador.
El Knob se presta para mucho más que volumen: rango de un parámetro de simulación, intensidad de un olor en un difusor controlado, tiempo de cocción en un horno didáctico, intensidad de luz en una Lamp remota. La metáfora del dial es lo bastante genérica.
Text — la pantalla escribible o sólo de lectura
Text cumple dos roles según se lo configure. Con editable: true es un campo de entrada (los estudiantes acostumbrados a HTML pensarán en un <input> o <textarea>). Con editable: false es una pantalla LCD: un sitio donde el sistema escribe y el usuario lee. El mismo componente, dos interpretaciones radicalmente distintas.
// Modo lectura: el sistema le habla al usuario por texto
const display = new Protobject.Text({
defaultText: 'Esperando datos…',
editable: false,
style: {
backgroundColor: '#08080B',
color: '#0044FF',
fontFamily: 'JetBrains Mono, monospace',
fontSize: '28px',
padding: '20px',
borderRadius: '8px'
}
});
// Después, conforme el sensor entrega lecturas, las mostramos:
function actualizarDisplay(temp) {
display.setText(`Temperatura: ${temp.toFixed(1)} °C`);
}
// Modo escritura: el usuario contesta una pregunta
const respuesta = new Protobject.Text({
placeholder: '¿Cómo te sientes hoy?',
editable: true,
onInput: (texto) => {
if (texto.length > 5) {
Protobject.TextToSpeech.play('es-ES', `Anotado: ${texto}`);
}
}
});
Lo elegante es que el componente unifica entrada y salida textual bajo la misma API. En un prototipo donde la conversación entre el sistema y el usuario es importante —piensen en un chequeo de bienestar en una sala de espera médica— se puede tener dos Text, uno read-only para las preguntas del sistema y uno editable para las respuestas, y conectarlos con la misma lógica de eventos.
Salidas auditivas: el sistema que se hace oír
Si los componentes UI piden la mirada, las salidas auditivas piden la atención sin pedir la mirada. Y eso es exactamente lo que Mark Weiser describió en Calm Technology (1996): un sistema ubicuo bien diseñado no se interpone, comunica en la periferia. El sonido es una herramienta privilegiada para esta periferia.
Protobject ofrece tres componentes con grados crecientes de sofisticación: SoundPlayer para audio pregrabado, NotePlayer para notas musicales sintetizadas y TextToSpeech para voz hablada.
SoundPlayer — el reproductor pragmático
SoundPlayer es el reproductor de archivos .mp3 por URL. Sirve para todo lo que ya existe como audio: efectos sonoros, jingles, paisajes ambientales, clips grabados a propósito para el prototipo.
const ambiente = new Protobject.SoundPlayer();
// Loop ambiental que arranca cuando entra alguien a la sala
sensorPresencia.onSomeoneInside(() => {
ambiente.play('https://midominio.cl/sonidos/cafeteria.mp3', true);
ambiente.setVolume(35);
});
sensorPresencia.onNoneInside(() => {
ambiente.pause();
});
El segundo argumento de play es el flag de loop, también accesible como setLoop(true|false). El volumen va de 0 a 100 (no de 0 a 1 como el HTMLAudioElement nativo: deliberadamente más legible para alguien que recién está aprendiendo). El componente no maneja por sí solo el "desbloqueo" de audio que algunos navegadores móviles exigen tras un gesto del usuario; ese aspecto se delega a la lógica general del prototipo —típicamente, alcanza con que la primera acción de audio se dispare dentro del callback de un Button o Switch.
NotePlayer — sintetizar tonos sin saber Tone.js
NotePlayer carga un kit de muestras (por defecto el piano Casio del repositorio de Tone.js) y permite tocar notas individuales. Es la salida ideal para feedback sonoro simbólico: cada acción del usuario tiene su nota, cada estado del sistema tiene su acorde, sin necesidad de grabar archivos.
const piano = new Protobject.NotePlayer({
A1: 'https://tonejs.github.io/audio/casio/A1.mp3',
C2: 'https://tonejs.github.io/audio/casio/C2.mp3',
E2: 'https://tonejs.github.io/audio/casio/E2.mp3',
G2: 'https://tonejs.github.io/audio/casio/G2.mp3'
});
piano.onInstrumentLoaded(() => {
console.log('Instrumento listo');
// Patrón de confirmación: tres notas ascendentes
piano.play('C2');
setTimeout(() => piano.play('E2'), 200);
setTimeout(() => piano.play('G2'), 400);
});
Cuando se le pasa un map de notas, Protobject las interpola para cubrir el rango cromático completo, así que también se puede tocar por frecuencia: piano.play(440) para el la central. Esto abre experimentos sonoros más libres —mapear directamente un valor de sensor a frecuencia, por ejemplo, hace de un Knob un theremin de bolsillo.
TextToSpeech — la voz como interfaz
TextToSpeech es el componente más "social" del set. Usa la voz sintética del sistema operativo (Web Speech API por debajo), recibe un código de idioma y el texto. Es estático: no se instancia, se llama directo sobre Protobject.TextToSpeech.
// Anunciar el cambio de turno en una sala de espera
Protobject.TextToSpeech.play('es-ES', 'Turno A045, por favor acérquese al box 3.');
// Reaccionar al fin de la locución
Protobject.TextToSpeech.onTTSEnd(() => {
console.log('Anuncio terminado');
luzAviso.setColor('#0044FF');
});
// Detener si llega un evento prioritario
Protobject.TextToSpeech.stop();
El idioma se especifica con código BCP-47 ('es-ES', 'es-CL', 'en-US', 'pt-BR'). La calidad de la voz depende del sistema operativo del dispositivo —Android e iOS tienen voces sintéticas decentes en español, y los navegadores recientes son razonables—. Para una clase de UbiComp el detalle de la calidad no importa: lo que importa es que el sistema le habla al usuario sin que el usuario tenga que mirar pantalla, lo cual cambia drásticamente la naturaleza de la interacción.
Salida háptica: el sistema que se siente
El último canal —y el menos explorado en prototipos universitarios— es el táctil. El smartphone tiene un motor de vibración que prácticamente todos hemos sentido como aviso de llamada, pero que rara vez se usa con la riqueza expresiva que permite. Protobject lo expone vía Haptic.
// Primero hay que pedir consentimiento del usuario (gesto requerido)
Protobject.Haptic.start();
// Después, vibrar con patrones arbitrarios:
// array de números en milisegundos, alternando ON / OFF / ON / OFF
Protobject.Haptic.vibrate([200, 100, 200]);
// → vibra 200ms, pausa 100ms, vibra 200ms
// Patrón "morse" para una notificación discreta
Protobject.Haptic.vibrate([80, 60, 80, 60, 300, 60, 80]);
// Patrón "latido" para presencia ambiente
Protobject.Haptic.vibrate([60, 100, 100, 500, 60, 100, 100]);
El requisito de start() antes del primer vibrate es una restricción del navegador (las APIs hápticas necesitan un gesto explícito del usuario para evitar abuso de páginas que vibran sin permiso). En la práctica conviene ofrecer un Button visible al comienzo del prototipo —"Activar feedback táctil"— que llame a Haptic.start(). Después, todos los vibrate siguen funcionando libremente.
Donde el haptic se vuelve interesante es en el diseño de vocabularios vibratorios: un patrón corto para "ok", uno largo para "atención", uno irregular para "error". Los estudios de háptica industrial muestran que las personas reconocen entre cinco y siete patrones distintos sin entrenamiento, suficientes para vehicular un lenguaje básico de estados sin mirar el dispositivo. En contextos donde la mirada está ocupada —conducir, atender un paciente, manipular un objeto— este canal pasa a ser el principal.
Combinando entrada y salida
Hasta acá hemos visto cada componente en su propia página y en su propia función de demo. Pero la promesa real de Protobject —y el motivo por el que la usamos en este curso— es la capacidad de distribuir entrada y salida entre dispositivos. Una página con sensores en el celular del estudiante manda eventos a una página con actuadores en el computador del profesor (o al revés, o entre dos celulares, o entre cinco). El mecanismo se llama Protobject.Core.send(canal, valor) en el emisor y Protobject.Core.receive(canal, callback) en el receptor. Lo vimos brevemente en T1; acá lo ponemos a trabajar.
El patrón canónico para combinar T3 con T2 es una página de control y una página de manifestación. Veámoslo concreto: un Knob en el celular del estudiante controla en tiempo real una Lamp grande en la tablet montada en la pared de la sala.
Página control.html (corre en el celular):
// El estudiante manipula un knob, los valores viajan
const dial = new Protobject.Knob({
min: 0,
max: 360, // grados de hue
size: 220,
initialValue: 180,
knobColor: '#08080B',
valueColor: '#F4F4F6'
});
const eco = new Protobject.Text({
editable: false,
defaultText: 'Hue: 180°',
style: {
color: '#0044FF',
fontSize: '22px',
fontFamily: 'JetBrains Mono, monospace'
}
});
dial.onChange((hue) => {
eco.setText(`Hue: ${hue}°`);
Protobject.Core.send('lampHue', hue);
});
// Botón de "ping" háptico para confirmar conexión
const ping = new Protobject.Button({ text: 'PING' });
Protobject.Haptic.start();
ping.onPressed(() => {
Protobject.Core.send('ping', Date.now());
Protobject.Haptic.vibrate([50, 30, 50]);
});
Página manifest.html (corre en la tablet de pared):
const muro = new Protobject.Lamp({
width: '100vw',
height: '100vh',
top: '0',
left: '0'
});
const aviso = new Protobject.Text({
editable: false,
defaultText: 'Esperando control…',
style: {
color: 'white',
fontSize: '36px',
fontFamily: 'Space Grotesk, sans-serif',
textAlign: 'center',
width: '100%',
top: '40vh'
}
});
// Reaccionar al hue que mande el celular
Protobject.Core.receive('lampHue', (hue) => {
muro.setStyle({ backgroundColor: `hsl(${hue}, 80%, 55%)` });
aviso.setText(`Hue ${hue}°`);
});
// Reaccionar al ping con un anuncio vocal + flash
Protobject.Core.receive('ping', (ts) => {
Protobject.TextToSpeech.play('es-ES', 'Conexión confirmada');
const original = muro.element.style.backgroundColor;
muro.setColor('white');
setTimeout(() => muro.setStyle({ backgroundColor: original }), 200);
});
Lo que tenemos acá es un prototipo ubicuo completo en menos de cien líneas: dos páginas, dos dispositivos, cuatro canales de salida (visual de Lamp, textual de Text, vocal de TextToSpeech, háptica del Haptic), un canal de entrada continuo (Knob) y uno discreto (Button). En el aula esto se evalúa rápido —cada estudiante con su celular y un par de tablets compartidas— y deja experimentar con sutilezas: ¿qué se siente que el sistema responda con voz versus con luz?, ¿qué se siente que la vibración confirme un envío versus no confirmarlo?, ¿qué pasa si el onChange del Knob se dispara 30 veces por segundo y la red satura?
Esa última pregunta es la que conecta con T4 y T5: las decisiones de diseño sobre dónde vive el cómputo, cuánta latencia se tolera y cuántos canales conviven antes de saturar al usuario. Por ahora, con T3 ya en la maleta, tienen el repertorio expresivo para diseñar respuestas. La conversación —entre el sistema y la persona, entre la habitación y quien la habita— ya puede empezar.
Prototipado físico-digital
Una caja de cartón con un smartphone adentro puede ser, durante quince minutos, el sistema más inteligente que vas a diseñar este año.
Hay una vieja tentación en el diseño de sistemas interactivos: empezar por el final. Especificar todo, modelar todo, comprar la placa correcta, imprimir la carcasa en 3D, soldar los cables, y solo entonces — exhausto, comprometido, sin presupuesto — mostrarlo a alguien. Para entonces el sistema ya existe, y descubrir que la interacción no funciona se vuelve un problema político antes que un problema de diseño. El prototipado existe precisamente para evitar esa trampa. Prototipar es comprimir el ciclo: pensar una idea, materializarla mal pero rápido, ponerla frente a un usuario, escuchar lo que rompe, y repetir. No se prototipa para producir un objeto: se prototipa para producir aprendizaje.
En esta cápsula vamos a desarmar el concepto con cuidado. Qué es un prototipo y qué no lo es. Qué dimensiones lo definen — fidelidad, alcance, interactividad. Qué técnicas conviene usar en cada fase del proceso de diseño. Y, sobre todo, cómo construir prototipos físico-digitales para sistemas ubicuos sin necesidad de un laboratorio de electrónica, combinando cartón con el dispositivo más cargado de sensores que ya llevamos en el bolsillo.
1. Qué es (y qué no es) un prototipo
Un prototipo es una representación tangible y experimental de una idea de diseño, creada para responder preguntas específicas y validar hipótesis. La definición parece inocua hasta que se subraya la palabra específicas. Un prototipo no responde a la pregunta universal "¿cómo sería el producto?", sino a preguntas locales: ¿el usuario entiende que debe girar la perilla? ¿el sensor detecta la presencia desde el otro lado de la sala? ¿la pantalla puede transmitir urgencia sin chillar? Cada prototipo tiene un foco, y ese foco es lo que justifica las decisiones de qué simular y qué dejar afuera.
Houde y Hill, en su clásico What do prototypes prototype? (1997), proponen leer cualquier prototipo a lo largo de tres ejes: el rol que el sistema cumple en la vida del usuario, la apariencia y sensación que produce al ser tocado o mirado, y la implementación técnica que lo hace posible. Un prototipo nunca cubre los tres ejes con la misma profundidad. Una maqueta en cartón cubre apariencia, un storyboard cubre rol, un fragmento de código de visión por computador cubre implementación. La pregunta inteligente no es ¿es realista?, sino ¿qué eje estoy explorando hoy?.
Cuando un equipo se atasca discutiendo si el prototipo "se ve mal" mientras la pregunta era sobre el rol del sistema, lo que falla no es el prototipo: es la conversación sobre el prototipo.
Bill Buxton, en Sketching User Experiences (2007), insiste en una distinción todavía más cortante: existe el boceto y existe el prototipo. El boceto es divergente — su trabajo es generar muchas opciones para descartar la mayoría. El prototipo es convergente — su trabajo es refinar una opción que ya creemos válida. Confundirlos cuesta caro. Tratar un boceto como prototipo paraliza la generación de ideas (porque cada opción cuesta demasiado de producir). Tratar un prototipo como boceto disuelve el foco (porque nadie se compromete a ninguna decisión). En la práctica del curso, los primeros días son de bocetos baratos, los siguientes de prototipos cada vez más comprometidos.
2. Las cinco preguntas a las que sirve un prototipo
Beaudouin-Lafon y Mackay, en su capítulo Prototyping tools and techniques del HCI Handbook (2012), sintetizan los cinco propósitos fundamentales de prototipar. Los repasamos porque cada propósito sugiere una técnica distinta:
- Exploración de ideas: probar y comparar conceptos antes de comprometerse con uno. Aquí mandan los prototipos baratos y desechables. Si la primera opción cuesta un día, no va a haber segunda opción.
- Comunicación: materializar la idea para que el equipo, los stakeholders y los usuarios la puedan discutir sin malentendidos. Una maqueta en cartón comunica una decisión arquitectónica mejor que diez páginas de documento.
- Obtención de feedback: poner el prototipo en manos de un usuario real y observar dónde se traba. Esta es la prueba de fuego del DCU: si no hay usuario, no hay feedback, y el prototipo se convierte en un objeto decorativo.
- Refinamiento de requisitos: validar que los requisitos declarados al inicio sobreviven al contacto con la realidad. Cuando el usuario interactúa con la maqueta, casi siempre aparecen requisitos ocultos que nadie había verbalizado.
- Reducción de riesgos: identificar problemas técnicos o de usabilidad antes de que el costo de corregirlos sea prohibitivo. Un problema descubierto con cartón cuesta cinco minutos; el mismo problema descubierto con la electrónica ya montada cuesta dos semanas.
Esto importa: si no sabes qué pregunta estás respondiendo, cualquier nivel de fidelidad te va a parecer insuficiente. Prototipar empieza por escribir la pregunta.
3. Las dimensiones del prototipo: fidelidad, alcance, reconfigurabilidad
Todo prototipo se ubica en un espacio multidimensional. No hay un eje único que decida si un prototipo es "bueno": la decisión es siempre sobre qué ejes maximizar dado el momento del proceso.
La fidelidad mide qué tan parecido es el prototipo al producto final en apariencia, interacción y contenido. Un boceto en papel está en un extremo (baja fidelidad o lo-fi); un build casi funcional con la electrónica definitiva está en el otro (alta fidelidad o hi-fi). La tentación del estudiante es saltar a alta fidelidad demasiado pronto — un prototipo bonito convence más, dice el instinto. El error está en que un prototipo demasiado bonito también recibe menos crítica: el usuario lo trata como producto, no como hipótesis, y se calla las dudas que sí habría verbalizado frente a un pedazo de cartón. La baja fidelidad invita a la crítica porque no parece terminada.
El alcance distingue prototipos horizontales (cubren muchas funciones, todas superficialmente) de prototipos verticales (cubren una sola función, en gran profundidad). Un sistema ubicuo típico de este curso combina los dos: un horizontal para mostrar el flujo completo del escenario y uno o dos verticales para resolver las interacciones más delicadas, como el momento en que el sensor decide disparar una alerta.
La reconfigurabilidad es la dimensión que más rápidamente se infravalora. ¿Puedo modificar este prototipo para probar otra cosa, o cualquier cambio implica reconstruir desde cero? Un boceto en papel es infinitamente reconfigurable. Una placa con todo el firmware grabado no lo es. La reconfigurabilidad alta protege la iteración; la baja la castiga. En las primeras semanas, prioriza reconfigurabilidad sobre todo lo demás.
Finalmente, el nivel de habilidad requerido para producir el prototipo afecta a quién puede participar de su construcción. Si solo una persona del equipo sabe soldar, el cuello de botella es esa persona. Si la construcción es accesible — tijeras, cartón, cinta — todos pueden iterar en paralelo. Esto es directamente político: la accesibilidad del método determina quién opina sobre el diseño.
4. Cinco técnicas que conviene tener en el cinturón
Hay un catálogo grande de técnicas; aquí cinco que cubren bien las etapas del curso.
Bocetado y paper prototyping. Lápiz, papel, post-its. Sirve para explorar interfaces gráficas y flujos de pantalla. Su gran virtud no es económica sino psicológica: nadie se enamora de un boceto, por lo que nadie se ofende cuando se tira. En la práctica, dibujar diez opciones de una interfaz toma menos tiempo del que toma armar una sola en Figma.
Maquetas digitales y wireframes (Figma, Sketch, Adobe XD). Suben un peldaño en fidelidad y permiten simular flujos clicables. Útiles cuando necesitas probar la navegación de una app o de un panel de control con un usuario que no estará al lado tuyo para narrarte el flujo. Cuidado con la trampa estética: Figma facilita el pixel-perfect, y un mock-up pixel-perfect inhibe la crítica conceptual.
Mago de Oz (Wizard of Oz, o WoZ). Un humano oculto simula al sistema. Sirve cuando la implementación técnica es cara o riesgosa — reconocimiento de voz, IA, fusión de sensores — pero la pregunta es de interacción: ¿el usuario hablaría con esto?, ¿esperaría que entendiera ironías?, ¿se frustra si tarda dos segundos en responder? El mago simula la respuesta, el sistema todavía no existe, pero el feedback es real.
Prototipado en video. Un cortometraje que muestra el sistema funcionando en su contexto de uso. No requiere que el sistema exista todavía: lo que importa es comunicar el rol que pretende cumplir. Es la herramienta canónica para vender una visión a un cliente o a un profesor que pide claridad sin haber escuchado todavía el detalle técnico.
Prototipado físico. Construcción de modelos con cartón, espuma, piezas impresas en 3D, o combinaciones. Va desde maquetas no funcionales — para probar forma, escala y ergonomía — hasta prototipos funcionales con electrónica básica. Para sistemas ubicuos, esta técnica es central: el sistema vive en el mundo físico, y discutirlo en pantalla es discutirlo a medias.
5. Sensores y actuadores: el ABC del prototipo que reacciona
Un prototipo físico cobra vida cuando empieza a percibir y a actuar. La intuición de la cápsula 6 vuelve aquí en clave práctica: un sensor es la entrada (cómo el sistema se entera del mundo) y un actuador es la salida (cómo el sistema interviene en el mundo).
La distinción útil para prototipar rápido es entre componentes específicos y componentes multipropósito. Un sensor de temperatura es específico: solo mide temperatura. Una cámara, en cambio, es multipropósito — con software adecuado puede detectar presencia, contar personas, leer marcadores ARUCO, reconocer caras, seguir manos, identificar gestos. Lo mismo con el micrófono (nivel de ruido, reconocimiento de habla, clasificación de eventos sonoros) y con los sensores inerciales (acelerómetro y giroscopio combinados detectan movimiento, inclinación, orientación tridimensional).
En el lado de los actuadores, los altavoces y las pantallas son los campeones multipropósito. Una pantalla puede simular casi cualquier display físico — un termómetro, una lámpara, un reloj, una alarma — si la programación visual es lo bastante convincente. Para una primera ronda de prototipado, una pantalla simulando una lámpara cuesta cero y comunica lo mismo que la lámpara real.
El corolario importante es éste: hoy, el dispositivo que combina más sensores y actuadores multipropósito en una sola pieza ya lo tenemos todos en el bolsillo. El smartphone es, para fines de prototipado, un laboratorio portátil. Saber explotar esa intuición es la diferencia entre necesitar dos semanas para mostrar una idea y necesitar dos horas.
6. La sinergia cartón + smartphone
Aquí entra la jugada que el curso recomienda para los primeros prototipos físico-digitales: combinar el cartón (el cuerpo) con el smartphone (los sentidos y el cerebro).
El cartón es el material ideal del prototipado lo-fi por razones que trascienden lo económico. Es barato, sí, pero también es versátil (se corta y se pega en minutos), moldeable (acepta curvas, solapas, compartimentos), y sobre todo es inacabado. Esa cualidad es la más subestimada: el cartón anuncia visualmente que el objeto no es final, que está abierto a ser modificado, que pedir un cambio no es una imposición. Cuando un usuario interactúa con un prototipo de cartón, no se inhibe; lo agarra, lo gira, lo critica.
El smartphone, por su lado, aporta lo que el cartón no puede: la capacidad de sentir y de responder. Embebido dentro de la maqueta, un teléfono puede medir movimiento, escuchar sonido, ver con su cámara, hablar por su altavoz, vibrar. Con la programación adecuada, simula un dispositivo "inteligente" sin que sea necesario soldar ni un solo cable.
La herramienta que el curso usa para articular esta combinación es el Protobject Framework — un framework de prototipado físico-digital desarrollado en el contexto del propio curso. Protobject convierte cada smartphone, tablet o computador en un nodo de una aplicación distribuida; cada nodo ejecuta una página HTML con componentes programados en JavaScript. La idea es que el prototipo no vive en un solo dispositivo: vive entre varios, conectados por mensajes, igual que un sistema ubicuo real.
Las cápsulas técnicas T1 a T5 desarrollan Protobject en profundidad — arquitectura, sensores, componentes de interfaz, integración con Arduino, patrones aplicados. Aquí solo importa quedarse con la idea: el framework existe para que la barrera de entrada al prototipado físico-digital sea baja, accesible desde el primer día de clase, y sin requerir hardware especializado para mostrar resultados.
7. Cuándo subir de fidelidad: Arduino, Raspberry Pi, ESP32
Llega un momento en que el smartphone no alcanza. La precisión de un sensor de temperatura comercial supera a la del teléfono; un servomotor necesita ser controlado con señales que el navegador no maneja directamente; un wearable no puede pesar trescientos gramos. Para esos casos, el espectro de prototipado se prolonga hacia el hardware dedicado.
Arduino es la plataforma canónica de hardware abierto. De bajo costo, con una comunidad enorme y documentación exhaustiva, sirve para leer sensores específicos y controlar actuadores (motores, LEDs, relés) en escenarios donde el smartphone no llega. Protobject Framework se integra con Arduino vía WebUSB, así que la transición no exige cambiar de paradigma de programación.
Raspberry Pi sube otro escalón: es un computador completo en una placa pequeña, capaz de correr Linux. Sirve cuando el prototipo requiere procesamiento más pesado — visión por computador local, servidor web embebido, modelos de machine learning corriendo en el dispositivo.
ESP32 / ESP8266 son microcontroladores baratos con Wi-Fi y Bluetooth integrados, especialmente cómodos para proyectos IoT donde muchos nodos pequeños tienen que conectarse a la red.
Phidgets — sensores y actuadores con conexión USB pensados para software developers sin experiencia en electrónica — son el último peldaño antes del hardware industrial.
El punto importante no es el catálogo: es que el espectro existe. Prototipas en cartón mientras la pregunta sea sobre el concepto de la interacción, y subes hacia Arduino o Raspberry Pi solo cuando la pregunta empieza a ser sobre la precisión o la escala. Saltar demasiado pronto al hardware dedicado es el error más común y el más costoso.
8. Una nota sobre la honestidad del prototipo
Hay una tentación final que conviene nombrar: el prototipo demasiado convincente. Cuando una maqueta queda demasiado pulida, los usuarios dejan de criticarla — la tratan como producto, no como hipótesis — y los stakeholders dejan de cuestionarla porque parece inversión consumada. Buxton lo dice claro: el prototipo debe ser honesto sobre qué es. Si está hecho de cartón, que se vea de cartón. Si simula un sensor con un mago, que el equipo sepa que es un mago. Esa transparencia es lo que mantiene viva la conversación de diseño.
Un prototipo honesto también admite sus límites de fidelidad. No intentes que un prototipo de baja fidelidad responda preguntas de alta fidelidad, ni viceversa. La pregunta correcta para una maqueta de cartón es "¿la forma comunica el rol?", no "¿el tiempo de respuesta es aceptable?". Confundir los niveles de pregunta es la fuente de la mitad de las discusiones inútiles en cualquier proyecto.
Aprendizaje activo
En la Actividad 7 — Prototype-Jam vamos a comprimir todo lo anterior en una sesión de dos horas: cartón, tijeras, cinta, y un celular por grupo. La consigna es simple — avanzar lo más posible en la materialización física del proyecto de curso de cada equipo — pero el método es exigente: brainstorming corto (diez minutos), ciclos rápidos de prototipado (cien minutos, alternando construir y documentar), consolidación de la bitácora (diez minutos). Cada funcionalidad construida debe quedar registrada con una o dos fotos y una descripción breve. No se busca perfección: se busca avance, cantidad, claridad. La sesión se entrega al final del día como una bitácora en PDF.
Protobject: integración física con Arduino y Lego
Cuando el píxel no basta — controlar servos, motores y luces desde el navegador
Cuando el píxel ya no basta, el átomo entra en escena: un servo gira, una puerta se abre, una casita tiembla y el prototipo deja de ser página para volverse mundo.
Cuándo necesitas Arduino
Hasta acá, todo el framework Protobject ha vivido dentro del navegador. Le sacamos partido a la cámara, al micrófono, al acelerómetro, al GPS y al altavoz; cada smartphone se convirtió en un nodo distribuido, cada pantalla en una superficie de salida. Y eso, para la mayoría de los prototipos de magíster, alcanza y sobra. Pero hay un momento concreto en el que el píxel deja de bastar y la materia exige hacer acto de presencia. Reconocer ese momento es la mitad del trabajo de esta cápsula.
La regla de bolsillo es esta: si lo que querés mostrar puede animarse con CSS, simularse con un sonido o renderizarse en un canvas, no metas Arduino. Cada componente físico que sumes es un cable más que se desconecta, una pila que se descarga, un servo que se traba, un driver que Chrome decide actualizar la noche antes de la presentación. El framework está pensado para bajar la fricción del prototipado, y la fricción sube de forma no-lineal apenas hay tornillos y voltajes en juego.
Ahora bien, hay cuatro situaciones donde el smartphone no llega y conviene escalar al hardware. La primera es el movimiento físico real: cuando lo que querés evaluar es cómo se siente que una cerradura efectivamente se abra, que una persiana suba, que una maqueta de casa tiemble bajo los pies del usuario. Una animación en pantalla no transmite la latencia, el ruido del servo, el peso del mecanismo; y son justamente esas tres cosas las que el usuario va a juzgar. La segunda es la lectura de sensores no estándar: un FSR de presión bajo una alfombra, un encoder rotatorio en un pomo, un par de fotodiodos midiendo una franja específica del espectro. El navegador te da cámara y micrófono; el resto, no. La tercera es la salida de actuadores específicos: un relé que enciende una ampolleta de verdad, un motor DC que mueve algo pesado, una válvula solenoide. Y la cuarta, más sutil, es cuando necesitás que el sistema funcione sin un teléfono ocupado en cada nodo: un Arduino con su sketch sigue trabajando aunque cierres la pestaña, aunque pase a segundo plano, aunque se acabe la batería del celular.
Si ninguno de esos cuatro criterios aplica, volvé un paso atrás y revisá si una Protobject.Haptic con un buen sonido no resuelve el mismo problema con menos cables.
El componente Protobject.Arduino
Asumiendo que el caso de uso lo justifica, el componente que une el navegador con el hardware es Protobject.Arduino. La pieza clave que lo hace posible se llama WebUSB: una API web relativamente reciente que permite que una página HTML hable directamente con un dispositivo USB, sin drivers, sin instalador, sin servidor intermediario. Para los efectos prácticos, esto significa que enchufás un Arduino Leonardo al notebook (o al smartphone Android, si tenés un adaptador OTG), abrís Chrome, le decís a la página "sí, este Arduino me lo presta" y listo: tu JavaScript puede mandarle comandos y leer sus pines.
El flujo de uso, en el lado JavaScript, es de tres líneas:
Protobject.Arduino.start();
Protobject.Arduino.onData((data) => {
console.log("Datos del Arduino:", data);
// data trae a0, a1, a2 (analógicos) y d7, d8, d9 (digitales)
});
const luzBoton = new Protobject.Button({ text: "Encender" });
luzBoton.onPressed(() => Protobject.Arduino.digitalWrite({ pin: 13, value: 1 }));
luzBoton.onRelease(() => Protobject.Arduino.digitalWrite({ pin: 13, value: 0 }));
Protobject.Arduino.start() abre el diálogo de WebUSB y le pide al usuario que elija el dispositivo. Es importante saber que ese diálogo solo puede aparecer en respuesta a un gesto del usuario: un click, un tap, un evento explícito. Es una restricción de seguridad del navegador, y es la razón por la que en los demos vas a ver a Protobject.Arduino.start() colgado de la página principal en lugar de ejecutarse en el onload. Una vez aceptado, el navegador recuerda el permiso y la próxima vez que abras la página la conexión se restablece sola.
El callback de onData recibe lecturas periódicas de los pines configurados como entrada: tres analógicos (a0, a1, a2) que llegan como enteros entre 0 y 1023, y tres digitales (d7, d8, d9) que llegan como 0 o 1. Eso es todo lo que el Leonardo lee. Si necesitás más pines, vas a tener que tocar el sketch (lo vemos en la sección siguiente).
Programar el Arduino Leonardo (una sola vez)
La parte que asusta a los estudiantes el primer día es exactamente la que más fácil resulta en la práctica: el Arduino se programa una vez en la vida y después se olvida. Después de subir el sketch base, el Leonardo queda escuchando el puerto serial USB esperando comandos JSON; nunca más tenés que abrir el Arduino IDE, ni recompilar, ni preocuparte por la versión de la toolchain. Toda la lógica de tu prototipo vive en JavaScript en el navegador.
El sketch que el Leonardo necesita es el que viene en la documentación oficial del framework. La versión mínima útil es la siguiente; lo importante no es memorizarlo, sino entender qué hace cada bloque:
#include <Servo.h>
#include <WebUSB.h>
#include <ArduinoJson.h>
WebUSB WebUSBSerial(1 /* https:// */, "");
#define Serial WebUSBSerial
Servo rservo;
Servo lservo;
int defaultL = 1500;
int defaultR = 1500;
DynamicJsonDocument dynamicJSONDocument(128);
void setup() {
while (!Serial) { ; }
Serial.begin(9600);
Serial.write("Sketch begins.
> ");
Serial.flush();
lservo.attach(5);
rservo.attach(6);
pinMode(7, INPUT); pinMode(8, INPUT); pinMode(9, INPUT);
pinMode(3, OUTPUT); pinMode(11, OUTPUT); pinMode(13, OUTPUT);
rservo.writeMicroseconds(defaultR);
lservo.writeMicroseconds(defaultL);
}
void loop() {
const auto err = deserializeJson(dynamicJSONDocument, Serial);
if (err) return;
JsonObject obj = dynamicJSONDocument.as<JsonObject>();
if (obj["device"] == "robot") {
int rightSpeed = obj["right"];
int leftSpeed = obj["left"];
rservo.writeMicroseconds(defaultR - rightSpeed);
lservo.writeMicroseconds(defaultL + leftSpeed);
}
if (obj["device"] == "digitalWrite") {
digitalWrite(obj["pin"], obj["val"] == 1 ? HIGH : LOW);
}
if (obj["device"] == "analogWrite") {
analogWrite(obj["pin"], obj["val"]);
}
if (obj["device"] == "readAll") {
StaticJsonDocument<200> doc;
doc["d7"] = digitalRead(7); doc["d8"] = digitalRead(8); doc["d9"] = digitalRead(9);
doc["a0"] = analogRead(0); doc["a1"] = analogRead(1); doc["a2"] = analogRead(2);
serializeJson(doc, Serial);
Serial.flush();
}
}
El setup() configura dos servos (pines 5 y 6), tres entradas digitales (7, 8, 9), tres salidas digitales/PWM (3, 11, 13) y deja a los servos en su microsegundo neutral (1500 µs). El loop() no hace nada más que escuchar el puerto serial: cada vez que llega un objeto JSON bien formado lo deserializa, mira el campo device y enruta el mensaje al periférico correspondiente. Cuando el JSON es {"device":"readAll"}, el sketch contesta serializando un objeto con las lecturas de los seis pines de entrada; esa respuesta es la que termina llegando al onData del lado JavaScript.
La elección del Leonardo no es casual: tiene chip USB nativo (el 32u4) que soporta la librería WebUSB. Un Arduino UNO o un Nano no sirven sin un puente adicional. Si en algún momento agarrás otro Leonardo y querés reciclarlo para el prototipo, abrí el Arduino IDE, instalá la librería WebUSB siguiendo la guía oficial, subí este sketch y olvidate del IDE de nuevo.
Tipos de output al Arduino
Desde el navegador podés mandarle al Arduino cuatro tipos de salida, y cada uno cubre una familia distinta de actuadores. Vale la pena distinguirlos bien porque la confusión es la fuente de la mitad de los bugs.
Protobject.Arduino.digitalWrite({ pin, value }) con pin ∈ {3, 11, 13} y value ∈ {0, 1} enciende o apaga el pin. Es lo que querés para un LED, un relé, un buzzer simple, o cualquier cosa que sea binaria. La latencia es bajísima (decenas de milisegundos) y el consumo es despreciable.
Protobject.Arduino.analogWrite({ pin, value }) con los mismos pines pero value ∈ [0, 255] genera una señal PWM. Sirve para regular la intensidad de un LED, controlar la velocidad de un motor DC pequeño vía transistor o driver, generar tonos básicos. No es analógico de verdad (es modulación por ancho de pulso a frecuencia fija), pero para un prototipo es indistinguible.
Protobject.Arduino.servoWrite({ pin, value }) con pin ∈ {5, 6} controla un servo posicional: el motor gira hasta el ángulo indicado y se queda ahí. El valor está en microsegundos (típicamente entre 500 y 2500, donde 1500 µs es la posición central). Esto es lo que usás para mecanismos que tienen un rango angular definido: un brazo robótico, una manilla que rota 90°, un puntero. La librería de Arduino traduce internamente el microsegundo a la posición correspondiente.
Protobject.Arduino.contServoWrite({ pin, value }) controla un servo continuo: a diferencia del posicional, este gira sin parar a una velocidad proporcional al valor. 1500 µs significa quieto, valores por encima hacen girar en un sentido y por debajo en el otro. Es lo que vas a usar para ruedas, mecanismos de cinta, una cerradura que necesita "rodar" un par de vueltas para activar el pasador. En el demo de la cerradura inteligente, el control envía value: -1500 durante un segundo para abrir y value: +1500 durante un segundo para cerrar, dejando todo el resto del tiempo en 0 (quieto):
Protobject.Core.onReceived((data) => {
if (data.lock == 1) {
Protobject.Arduino.contServoWrite({ pin: 5, value: -1500 });
setTimeout(() => Protobject.Arduino.contServoWrite({ pin: 5, value: 0 }), 1000);
} else if (data.lock == 0) {
Protobject.Arduino.contServoWrite({ pin: 5, value: 1500 });
setTimeout(() => Protobject.Arduino.contServoWrite({ pin: 5, value: 0 }), 1000);
}
});
Notá la disciplina del setTimeout: cuando trabajás con servos continuos, mandar el comando de movimiento sin un comando de parada equivale a dejar el motor corriendo hasta que algo se rompa. Acostumbrate a pensar siempre en pares "muévete / detente".
Integración con Lego Technic
El último eslabón es cómo unir el servo, que es una pieza de electrónica pequeña con su propio formato de eje, con el mundo de las maquetas físicas. La respuesta práctica del framework es Lego Technic: el sistema de piezas modulares con pines, ejes y engranajes que muchos ya manejan desde la infancia, y que tiene la enorme ventaja de ser desmontable infinitas veces.
La pieza clave que cierra el ecosistema es un adaptador impreso en 3D que toma el eje del micro-servo (típicamente un servo SG90 o similar) y lo convierte en un eje compatible con Technic. Una vez que el servo tiene esa pieza calzada, podés engranar lo que quieras encima: una cremallera, una palanca, un brazo, una rueda con leva. La biblioteca de Technic ya provee todos los engranajes, ejes y bujes; vos solo tenés que diseñar la geometría que conecte la rotación del servo con el efecto físico que querés producir.
Los dos ejemplos canónicos del curso, los que vas a ver replicados en muchos proyectos, son éstos:
Cerradura inteligente. Un servo continuo en el pin 5 mueve, a través de un par de engranajes Technic, un pasador que entra o sale del marco de una puerta de cartón. La página del teclado captura la combinación con Protobject.Button (tal como en el demo de lock/index.html), valida, y manda {lock: 1} o {lock: 0} a la página de control que tiene el Arduino. El servo gira un segundo y se queda. Latencia perceptual: alrededor de 200 ms desde el último botón hasta que se escucha el clic del pasador.
Casita sísmica. Un modelo de casa apoyado en una plataforma Technic con un servo posicional. La página principal recibe del dataset de sismos históricos una intensidad, la mapea a un rango de microsegundos (por ejemplo, 1200 a 1800) y manda comandos servoWrite a 30 Hz para producir un temblor proporcional. La casita se sacude. Una segunda página con Protobject.Acceleration mide la sacudida desde el smartphone apoyado en el techo y la compara con el sismo "objetivo": el feedback se cierra entre el átomo y el píxel.
En ambos casos, la lógica de aplicación vive en JavaScript distribuido entre dos o tres páginas; el Arduino es solo el último centímetro físico. Esto es importante: no estamos construyendo electrónica embebida, estamos extendiendo el navegador para que toque el mundo. Cuando la conversación con el usuario empiece a ser "deberíamos cambiar el firmware", estamos saliendo del territorio del framework.
Limitaciones que conviene saber antes de prometer
Cuatro restricciones reales, que duelen cuando uno se las encuentra el día de la entrega.
Primero, WebUSB sólo corre en navegadores basados en Chromium: Chrome, Edge, Opera, Brave. Firefox no lo implementa (decisión deliberada de Mozilla por motivos de seguridad) y Safari tampoco. Esto incluye, lamentablemente, toda la familia iOS: ni iPhone ni iPad pueden actuar como el nodo que habla con el Arduino, porque Safari es el único motor que Apple permite en iOS y no soporta WebUSB. Si querés que el smartphone que controla el hardware sea un iPhone, no podés. Las páginas que solo leen sensores o muestran UI siguen funcionando en iOS sin problema; la restricción aplica solo al nodo que enchufa el cable.
Segundo, la latencia del bridge suma. Entre que el botón se presiona, la página manda el mensaje al nodo de control, el nodo deserializa, llama a Protobject.Arduino.digitalWrite, el navegador empaqueta el JSON, lo manda por WebUSB, el Arduino lo deserializa y mueve el pin, pasan típicamente entre 80 y 200 milisegundos. Para una cerradura es invisible. Para un instrumento musical con feedback rítmico, es notorio. Diseñá la interacción asumiendo esa cota.
Tercero, el Arduino se desconecta. El cable USB, el puerto, el bloqueo de pantalla del celular, una llamada entrante: hay decenas de maneras de que el Protobject.Arduino.start() deje de tener efecto. Acostumbrate a probar el "se cae y se reconecta" como parte del recorrido de uso, y a mostrar feedback al usuario cuando la conexión no está activa.
Cuarto, el alimentación. Los servos chicos pueden alimentarse desde el USB del notebook, pero apenas le pidas mover algo con peso, vas a notar caídas de voltaje y reinicios. Tené una pila externa de 5V o un cargador USB conectado directo al servo (cuidando masa común con el Arduino) en cuanto el prototipo deje de ser de juguete.
Cuándo escalar a hardware dedicado
El sketch base del Leonardo es deliberadamente acotado: dos servos, tres entradas analógicas, tres digitales, tres salidas PWM. Eso cubre la mayoría de los prototipos de magíster, pero hay un umbral natural en el que el combo Arduino + Lego deja de alcanzar. Saberlo te ahorra meses de pegar parches.
Si el prototipo necesita conectividad inalámbrica (Wi-Fi, Bluetooth Low Energy) y querés que el dispositivo funcione sin estar enchufado a un notebook con la página abierta, es momento de saltar a un ESP32. Es el sucesor natural del Arduino para este tipo de aplicación: bajo costo, BLE y Wi-Fi nativos, mucha más memoria, y compatible con la mayoría de las librerías de Arduino. Perdés WebUSB pero ganás un nodo verdaderamente autónomo.
Si el prototipo necesita procesar audio o video on-device —reconocer una palabra clave, hacer visión por computador sobre la imagen de una cámara dedicada—, el Leonardo se queda corto en CPU y RAM. Ahí el salto es a una Raspberry Pi (Linux completo, Python, OpenCV, OpenAI APIs locales) o a un módulo con TensorFlow Lite Micro. La diferencia de potencia es de tres órdenes de magnitud.
Si el prototipo va a dejar el laboratorio —probar en el campo, en una casa, en una empresa por semanas— y necesita robustez, persistencia, batería, encapsulamiento, gestión de errores: estás dejando el territorio del prototipo y entrando al del producto. Eso ya no es Protobject. Es un microcontrolador embebido con su PCB diseñada, su firmware propio, su pruebas de regresión. Lo correcto no es estirar el framework; lo correcto es usar el prototipo Protobject como especificación funcional y entregar esa especificación a alguien con experiencia en producto embebido.
La fortaleza del enfoque Arduino + Lego + WebUSB es exactamente su debilidad: te lleva muy lejos en poco tiempo, pero te lleva hasta cierto punto. Reconocer cuándo el prototipo está pidiendo crecer es parte del oficio de diseñador de sistemas ubicuos. Y cuando llegue ese momento, recordá lo que el framework te enseñó: que la decisión sobre qué construir vale más que la decisión sobre cómo construirlo, y que el código más barato es el que ya no necesitás escribir.
Evaluación de sistemas interactivos
Cuando la interfaz se disuelve en el ambiente, evaluar deja de ser mirar una pantalla: es escuchar al cuerpo, al gesto, al silencio que aparece cuando algo simplemente funciona.
Hemos diseñado, prototipado, soldado, peleado con el cable suelto. Llega el momento incómodo: poner el sistema frente a alguien que no somos nosotros y preguntar, sin trampas, si funciona. La evaluación es la fase del Diseño Centrado en el Usuario donde el objeto se vuelve, por fin, objetivo de estudio. Donde el prototipo deja de ser nuestro hijo y se convierte en un sujeto experimental al que se le miden cosas. Y donde, casi siempre, descubrimos que lo que creíamos obvio no lo era para nadie más.
En los sistemas interactivos ubicuos esta fase tiene un agravante: no hay una pantalla a la que mirar. La interacción se distribuye en el espacio, en el cuerpo, en el ambiente. Un sensor detecta presencia, una luz cambia de color, un haptic vibra discreto en la muñeca. ¿Cómo se mide la usabilidad de algo que ni siquiera tiene un botón "OK"? ¿Cómo se observa el "click" cuando no hay clicks? Esta cápsula introduce el repertorio mínimo de métodos que un diseñador de sistemas ubicuos necesita dominar para responder esas preguntas sin engañarse a sí mismo.
¿Por qué evaluar?
Hay una tentación, muy común en proyectos de magíster, de tratar la evaluación como un trámite final: una prueba con tres amigos, una foto, una diapositiva con el SUS aplicado al apuro. Esa lectura es equivocada. La evaluación no es la última prueba antes de la entrega: es el bucle de retroalimentación que da forma al diseño. Cada iteración del prototipo debería ser empujada por evidencia, no por la intuición del equipo.
Jakob Nielsen (1993), en Usability Engineering, lo formuló con una claridad que sigue vigente más de tres décadas después: el costo de detectar un problema de usabilidad crece exponencialmente con el avance del proyecto. Encontrar un fallo de comprensión en un boceto en papel cuesta minutos; encontrar el mismo fallo después de fabricar el PCB cuesta semanas y plata. La pregunta correcta no es ¿cuándo evaluamos? sino ¿cuándo no estamos evaluando?. La evaluación es continua. Lo que cambia entre fases es la fidelidad de lo evaluado y la formalidad del método.
8.1 Tres familias: cuantitativo, cualitativo, mixto
La taxonomía clásica organiza los métodos por el tipo de dato que producen. Conviene tenerla mental como una brújula, no como una jaula.
Métodos cuantitativos
Producen números. Tiempos, tasas, conteos, puntajes en escalas. Responden a las preguntas cuánto, cuán rápido, cuántos. Ejemplos típicos: tiempo para completar una tarea, tasa de éxito, número de errores, puntaje en un cuestionario estandarizado como el SUS, logs de interacción del sistema (clicks, dwell time, eventos del sensor).
Su virtud es la comparabilidad. Si la versión A obtiene un SUS de 62 y la versión B obtiene 78, hay base para tomar una decisión que no depende del gusto del jefe. Permite test A/B, análisis estadístico, agregación entre estudios. Es el lenguaje que entienden las reuniones con stakeholders.
Su límite es brutal y se olvida con frecuencia: los números no explican el porqué. Si la versión A tarda más en promedio, los segundos no dicen si fue por torpeza del usuario, por una etiqueta ambigua, por un feedback inexistente o por un cable que se desconectó a mitad de la sesión.
Métodos cualitativos
Producen observaciones, transcripciones, notas, citas textuales. Responden a las preguntas por qué y cómo. Ejemplos: observación directa, entrevistas, protocolo think-aloud, grupos focales, análisis temático de comentarios abiertos.
Su virtud es la profundidad. Un comentario espontáneo del tipo "esperaba que se prendiera la luz cuando levanté la mano, no después de tres segundos" vale, en términos de diseño, más que cien filas de Excel. Descubre problemas que nadie había anticipado, porque emerge de la interacción real, no de un cuestionario pre-fabricado.
Su límite es la subjetividad del analista y la dificultad de generalizar. Tres entrevistas profundas no son una muestra estadística; son una hipótesis. Útil, valiosa, pero hipótesis al fin.
Métodos mixtos
Combinan ambos. La gracia no está en hacer "un poco de cada uno" sino en triangular: usar los datos cualitativos para explicar los cuantitativos, y los cuantitativos para evidenciar la magnitud de lo cualitativo. Cuando los dos enfoques convergen sobre el mismo hallazgo, la conclusión gana solidez. Cuando divergen, es señal de que hay algo interesante que entender.
En esta cápsula, y en la actividad que la cierra, vamos a privilegiar este tercer camino.
Para un prototipo ubicuo en fase temprana, evaluar solo con números equivale a medir la temperatura de una casa mirando el termómetro de la entrada: tienes un dato, pero te perdiste la mitad de la historia.
Otros ejes para clasificar una evaluación
Más allá del tipo de dato, una evaluación se puede leer por cuándo y contra qué se mide. La distinción más útil en un curso de prototipado es entre evaluación formativa y sumativa: la formativa ocurre mientras se diseña —su objetivo es descubrir qué arreglar en la próxima iteración— mientras que la sumativa llega al final, para juzgar si el sistema cumple. En este curso, casi todo lo que harán es formativo: evaluar para mejorar, no para calificar.
Otro eje es absoluta vs relativa. Una evaluación absoluta mide el sistema contra un criterio o umbral fijo (¿el SUS supera 70?, ¿la tarea se completa en menos de un minuto?); una relativa lo compara con una alternativa (¿la versión A o la B?). La absoluta dice si algo es "suficientemente bueno"; la comparativa dice "cuál es mejor".
Por último está el eje temporal. Un estudio transversal toma una instantánea: muchos usuarios —o varias condiciones— medidos una sola vez, en un mismo momento, ideal para comparar diseños rápido. Un estudio longitudinal sigue a los mismos usuarios a lo largo del tiempo, y revela lo que ninguna sesión única captura: el efecto de la novedad que se desvanece, el aprendizaje, el abandono. Para sistemas ubicuos —que conviven con el usuario durante meses— lo longitudinal es especialmente revelador, aunque cueste más.
8.2 Evaluación con usuarios: las pruebas de usabilidad
Hay un dicho atribuido a Nielsen que conviene tatuarse: "Pay attention to what users do, not what they say." Las pruebas de usabilidad son el dispositivo metodológico que materializa esa máxima. Es el método por excelencia en DCU. Su esqueleto es invariante:
-
Definir objetivos. ¿Qué queremos averiguar? Una prueba de usabilidad sin pregunta es turismo etnográfico. "¿El usuario nuevo entiende que la luz cambia de color cuando el sistema lo reconoce?" es una pregunta. "¿Qué tal nuestro prototipo?" no lo es.
-
Reclutar participantes representativos. El público objetivo final, no nuestros compañeros que ya saben de qué se trata. Nielsen popularizó —y los datos del Nielsen Norman Group siguen sosteniendo— el hallazgo de que cinco usuarios bastan para detectar la gran mayoría de problemas de usabilidad en una iteración. No porque cinco sean estadísticamente suficientes, sino porque los problemas más graves son tan recurrentes que aparecen rápido. Mejor cinco rondas de cinco usuarios que una ronda de veinticinco.
-
Diseñar tareas realistas. No "haz click en el botón rojo": "Acabas de llegar a casa con las manos ocupadas y querís encender la luz del salón en un modo cómodo para leer." La tarea evoca el contexto. En ubicomp el contexto es la tarea.
-
Preparar el entorno. Laboratorio controlado vs. entorno natural (field evaluation). El laboratorio aísla variables; el campo conserva la validez ecológica. Para un sistema ubicuo, donde el ambiente físico es parte de la interacción, los estudios de campo cobran un peso especial. No es lo mismo probar un sensor de gestos en una sala silenciosa con luz controlada que en una cocina con niños y ruido.
-
Facilitar sin contaminar. El moderador guía, anima al think-aloud, no rescata. Cada vez que el moderador dice "haz click acá" mata un dato.
-
Recopilar. Observaciones, métricas, satisfacción. Audio, video, notas, logs.
-
Analizar. Buscar patrones, no anécdotas aisladas. Un usuario que se confunde es un dato; tres que se confunden en el mismo punto son un problema.
Think-aloud: el método más simple y más subestimado
El protocolo think-aloud —pedirle al usuario que verbalice en voz alta lo que piensa mientras interactúa— es probablemente el invento más costo-efectivo en la historia de la HCI. Casi no requiere instrumental: un participante, una tarea, una grabadora. Y entrega un flujo continuo de evidencia sobre el modelo mental del usuario.
Funciona porque pone bajo presión los golfos de Norman (cápsula 02): el golfo de ejecución —"¿qué tengo que hacer para conseguir lo que quiero?"— y el golfo de evaluación —"¿pasó lo que yo quería?"—. Cuando el usuario dice "creo que ahora debería...", ahí estás escuchando, en directo, el golfo de ejecución. Cuando dice "¿esto funcionó? No sé...", ahí estás escuchando el golfo de evaluación. En sistemas ubicuos, donde el feedback suele ser sutil o ambiguo, este segundo golfo es el problema recurrente. El think-aloud lo expone sin filtros.
8.3 Recolección de datos: observación, entrevista, cuestionario
Las pruebas de usabilidad son un dispositivo; observación, entrevistas y cuestionarios son las técnicas dentro del dispositivo. Conviene tenerlas separadas en la cabeza.
Observación directa
Mirar al usuario actuar. Suena trivial; no lo es. Hay decisiones importantes: laboratorio o campo, observador pasivo o participante, grabación o solo notas. En sistemas ubicuos la observación tiene un valor especial porque la interacción muchas veces no produce trazas explícitas (no hay click que loguear): si no la viste, no ocurrió.
Cuidado con el efecto observador: el usuario que se sabe mirado actúa distinto. Se contrarresta con sesiones más largas (la incomodidad se diluye), con cámaras discretas, con observadores que no irrumpan. Y con el clásico recordatorio: "estamos probando el sistema, no a ti". Decirlo una vez no basta; conviene repetirlo.
Entrevistas
Conversaciones dirigidas. Tres registros:
- Estructuradas: lista cerrada de preguntas idénticas para todos. Comparables, frías.
- Semi-estructuradas: guión flexible con preguntas-ancla y libertad para profundizar. El formato más útil en prototipos en fase exploratoria.
- No estructuradas: conversación abierta. Riqueza máxima, control mínimo.
Una entrevista bien hecha no busca confirmar lo que ya creemos. Busca el conflicto, la sorpresa, la respuesta que no esperábamos. Si todas las entrevistas confirman nuestra hipótesis, probablemente estamos preguntando mal.
Cuestionarios
Preguntas escritas. Para muchos usuarios, en poco tiempo, con dato cuantitativo limpio cuando se diseñan bien. Sus tres traiciones clásicas:
- La redacción ambigua que hace que dos personas respondan a preguntas distintas con el mismo número.
- La escala mal calibrada (Likert de 4 puntos sin punto medio fuerza una opinión; de 7 puntos puede confundir).
- La pregunta tendenciosa que invita a una respuesta ("¿qué tan increíble te pareció el sistema?" — no).
Una salida elegante a las dos primeras es usar un cuestionario estandarizado. Lo que nos lleva a la estrella del repertorio cuantitativo en HCI.
El System Usability Scale (SUS)
John Brooke publicó en 1996 el System Usability Scale en un capítulo titulado, con honestidad disarmante, "SUS - A quick and dirty usability scale". La idea era simple: un cuestionario de diez ítems, en escala Likert de 1 a 5, que un usuario puede responder en un par de minutos al final de una sesión, y que produce un único número entre 0 y 100 representando la usabilidad percibida del sistema.
Sus diez afirmaciones alternan polaridad (cinco positivas, cinco negativas, para evitar el sesgo de aquiescencia) y cubren impresiones globales: facilidad de uso, complejidad percibida, integración entre funciones, necesidad de ayuda externa, consistencia, confianza. Ejemplos: "Creo que me gustaría usar este sistema con frecuencia", "Encontré el sistema innecesariamente complejo", "Pensé que el sistema era fácil de usar".
El puntaje SUS no es un porcentaje. Es una escala con su propia distribución empírica. Jeff Sauro y James Lewis (Quantifying the User Experience, 2016) han hecho un trabajo extenso normalizando e interpretando el SUS sobre miles de estudios: un puntaje cercano a 68 corresponde aproximadamente al promedio de la industria; sobre 80 se considera bueno; por debajo de 50, problemático. La traducción al castellano del instrumento original está validada en varios estudios y se usa rutinariamente en el mundo hispanohablante.
¿Por qué es tan popular? Porque es rápido, barato, comparable. Permite trackear la mejora de un sistema a lo largo de iteraciones, comparar versiones, comparar entre sistemas. Y porque, a pesar de su simplicidad, correlaciona razonablemente bien con otras métricas de usabilidad más caras.
¿Cuáles son sus límites? Los obvios: no dice qué está mal, solo cuán mal. Diez ítems no capturan el porqué de un puntaje bajo. Por eso el SUS funciona bien acompañado de método cualitativo, no como sustituto.
8.4 Evaluar sin usuarios: heurísticas y recorrido cognitivo
Hay momentos —especialmente al principio del proyecto o cuando se evalúan iteraciones rápidas— donde traer usuarios es caro o imposible. Para esos casos existen los métodos de inspección: expertos que evalúan el sistema sin usuarios.
La evaluación heurística de Nielsen (1990, con Molich; refinada en Usability Engineering, 1993) propone que un puñado de evaluadores (idealmente entre 3 y 5) inspeccionen la interfaz contrastándola con una lista corta de principios —las famosas diez heurísticas— y reporten las violaciones detectadas. Es rápida, no requiere usuarios, y captura una buena parte de los problemas de superficie. Su debilidad es que no captura problemas de modelo mental: un experto sabe demasiado para confundirse como un novato.
El recorrido cognitivo (cognitive walkthrough) es un método complementario: el evaluador recorre paso a paso una tarea típica y, en cada paso, se pregunta si un usuario novato sabría qué hacer y entendería el feedback recibido. Es particularmente útil para sistemas dirigidos a usuarios sin entrenamiento previo —un caso frecuente en ubicomp doméstico.
Estos métodos no reemplazan la evaluación con usuarios; son un cedazo previo que filtra los problemas más groseros antes de invertir en sesiones con personas reales.
El telón de fondo: el modelo de Norman
Conviene cerrar la parte teórica regresando a la cápsula 02. La evaluación, despojada de instrumental, es un instrumento para detectar dónde se rompen los siete pasos del modelo de acción de Donald Norman (The Design of Everyday Things, 1988): el ciclo que va de la meta del usuario (Goal) a la acción ejecutada (Acting) y al Doing —la acción percibida y evaluada—. Cada problema de usabilidad que descubrimos es, mirado de cerca, una fractura en uno de esos eslabones: el usuario no formula la meta correctamente porque no sabe qué puede pedirle al sistema; o sabe qué pedir pero no encuentra cómo ejecutar la acción; o ejecuta la acción y no recibe feedback que le confirme el resultado.
Los métodos cualitativos exponen dónde se rompe el ciclo. Los métodos cuantitativos miden con qué frecuencia y con qué costo. Juntos, dan la imagen completa.
Aprendizaje activo
En clase abrimos el espacio para Actividad 8 — Usability Speed-Test. Cada equipo va a montar, en sesenta minutos, una mini-evaluación mixta sobre el prototipo que viene construyendo. La estructura es deliberadamente apretada:
- Diez minutos para preparar la sesión: definir cómo se va a presentar el prototipo a un "usuario externo" (un compañero de otro grupo), describir un escenario realista —no una tarea abstracta— y formular una o dos preguntas de evaluación concretas. Sin pregunta no hay evaluación: hay un paseo.
- Quince minutos para diseñar el método mixto: elegir al menos una técnica cualitativa —típicamente think-aloud, entrevista semi-estructurada breve, o observación con notas— y al menos una técnica cuantitativa —un cuestionario corto inspirado en el SUS, un conteo de intentos, un ranking de funcionalidades—. La consigna es deliberada: no estás obligado a usar Google Forms, no estás obligado a medir tiempos. Lo importante es que ambas técnicas hablen entre sí.
- Veinte minutos para correr la sesión con 2-3 usuarios reclutados de otros grupos. Una introducción breve ("estamos probando el sistema, no a ti"), la interacción con think-aloud o lo que hayan elegido, y el feedback post-interacción. Documentar todo: notas, citas textuales, números crudos.
- Quince minutos para análisis, síntesis y reporte. La parte más difícil. Releer los apuntes, buscar patrones y no anécdotas, cruzar lo cualitativo con lo cuantitativo (un puntaje bajo en "facilidad de uso" se vuelve interpretable cuando una entrevista revela el porqué). Cerrar con un reporte de una página: objetivo, metodología, 2-3 insights clave, problema crítico identificado, recomendación concreta.
El entregable no es una diapositiva: es un documento sintético que debería poder leerse en dos minutos y dejar claro qué encontraron, por qué importa, qué van a cambiar en la próxima iteración.
Protobject: patrones aplicados
Cinco smart-systems y siete infovis físico-digitales — patrones para inspirarte en tu propio proyecto
Antes de diseñar tu propio sistema ubicuo, mira los que ya existen. No para copiarlos — para reconocer el patrón que se esconde detrás, ese esqueleto que vuelve una y otra vez bajo distintos disfraces. Una página que sensa. Una que decide. Una que actúa. El resto es contexto.
Llegamos al final del recorrido técnico. T1 te enseñó las páginas y el Core.send. T2 te abrió los sensores del navegador. T3 te dio botones, lámparas y todo lo que se ve y se oye. T4 te conectó al mundo físico con Arduino y servos. Ahora viene el momento incómodo: tienes que decidir qué construir.
Esta cápsula no introduce nuevos componentes. Es un catálogo razonado de patrones de aplicación — los prototipos que han salido del framework en cursos previos y publicaciones de Protobject. La idea es que los recorras como quien recorre una galería: no para llevarse una pieza a la casa, sino para identificar el gesto compositivo, la estructura recurrente, la jugada que se transfiere a tu propio proyecto.
Los casos se agrupan en dos familias, que coinciden con las dos identidades de Protobject. Por un lado los smart-systems: prototipos de sistemas inteligentes que sensan el entorno y actúan sobre él. Por otro los infovis físico-digitales: visualizaciones de datos que se controlan con el cuerpo, con objetos, con la presencia. Las dos familias comparten la misma arquitectura — páginas que se hablan — pero divergen en lo que está al final del flujo: un actuador o un gráfico.
Smart-systems: el ambiente que reacciona
Los cinco casos que siguen son sistemas inteligentes, en el sentido más mundano del término: detectan algo del mundo y devuelven una respuesta. Ninguno usa machine learning ni nada parecido. La inteligencia está en el diseño de la cadena sensor-mensaje-actuador, no en un modelo.
Dispositivo de postura
Un smartphone colgado del cuello (o pegado entre los omóplatos) se vuelve un wearable. La página index.html usa Protobject.Acceleration para leer la inclinación del torso. Cuando detecta que el cuerpo se encorva más allá de un umbral, dispara dos cosas en paralelo: vibra el propio dispositivo con Protobject.Haptic y enciende una Protobject.Lamp en otra página que el usuario puede mirar de reojo.
La gracia está en la página de control (control.html): tiene un Knob para ajustar la sensibilidad del umbral y un Switch para silenciar el sistema durante una reunión. Es un patrón que vuelve a aparecer en casi todo prototipo razonable — el usuario necesita una vía para apagar lo que tú construiste sin tirar el dispositivo a la basura.
Mensajes que circulan: Acceleration → index.html calcula el ángulo → si supera umbral, envía {alert: true} a control.html que dispara Haptic y enciende Lamp. El Knob en control.html envía {umbral: 35} de vuelta a index.html.
Indicador de ruido para aulas
Un solo dispositivo basta: una tablet o un PC con micrófono, parado al frente de la sala. La página index.html corre Protobject.NoiseSensor y, cuando el promedio móvil de intensidad supera un umbral, enciende una Protobject.Lamp roja a tamaño proyectado. El truco pedagógico es que la lámpara es grande, visible y silenciosa — no chilla, no interrumpe, sólo se enciende. Calm tech aplicada al aula.
Variante interesante: separar en dos páginas. Una en el celular del profesor que muestra el nivel de ruido como gráfico continuo (página privada, para diagnóstico). Otra proyectada con sólo la lámpara (página pública, para la clase). Mismo NoiseSensor, dos canales de salida con dos audiencias.
Mensajes: NoiseSensor → si nivel > umbral, send({alerta: nivel}).to("proyeccion.html") → proyeccion.html enciende la Lamp proporcional al exceso.
Sistema de alarma
Tres páginas en cadena, una por rol. sensor.html corre Protobject.CameraMovement apuntando a la puerta de entrada y detecta cualquier flujo óptico significativo. Al detectar movimiento, envía un mensaje a index.html, que actúa como panel de control: muestra un Text con cuenta regresiva (10 segundos), durante los cuales el usuario debe ingresar un código con Button o Text editable. Si la cuenta llega a cero sin código correcto, index.html envía un mensaje final a una tercera página (o a sí misma) que dispara Protobject.SoundPlayer con la sirena.
El patrón aquí es el timer distribuido: un evento dispara un reloj, otra acción puede cancelarlo, y si nadie cancela, ocurre la consecuencia. Esto se repite en sistemas de cuenta atrás, en wearables tipo Pomodoro, en juegos de escape. Una vez que lo dominas, lo replicas en una tarde.
Cerradura inteligente
El primer caso que cruza el umbral hacia lo físico. Tres páginas. index.html es un teclado virtual hecho con un grid de Protobject.Button (0-9, OK, reset). control.html es el puente Arduino: corre Protobject.Arduino, espera mensajes, y cuando recibe {accion: "abrir"} envía un pulso al pin del servo que gira la pieza Lego Technic montada sobre el pestillo. Una tercera página remote.html es la llave maestra: un solo botón gigante que abre sin código y otro que resetea la combinación.
Lo bello del patrón es que el Arduino vive en su propia página, aislado del resto. Si mañana cambias el teclado virtual por un reconocimiento facial, no tocas control.html. Si cambias el servo por un electroimán, no tocas index.html. Esa separación es el regalo silencioso de Protobject.
Mensajes: index.html valida código localmente → si correcto, send({comando: "open"}).to("control.html") → control.html mueve servo vía Protobject.Arduino.send(0, 90).
Iluminación inteligente
Dos páginas-sensor, una página-actuador. sensor1.html y sensor2.html corren cada una Protobject.PresenceSensor apuntando a dos zonas distintas de una sala (por ejemplo, escritorio y sofá). Cada una envía {zona: "escritorio", presencia: true} a index.html cuando detecta cambio. La página principal index.html mantiene un mapa del estado de las zonas y, vía Protobject.Arduino, mueve servos que accionan los interruptores físicos de la luz — no LEDs simulados, no relés, sino servos que físicamente empujan el switch de la pared.
Este es el patrón N-sensores-a-1-actuador: muchos ojos, una sola mano. Se transfiere a sistemas de riego inteligente, ventilación zonificada, sonido ambiente que sigue al usuario por la casa. La cardinalidad de los sensores es libre — agregas un sensor3.html y el index.html ni se entera, sólo necesita aprender a manejar la nueva zona.
InfoVis físico-digitales: el cuerpo como mouse
Cambiamos el rumbo. Estos siete casos también son páginas que se mandan mensajes, pero al final del flujo no hay un servo ni una lámpara: hay un gráfico Plotly.js que se redibuja. La pregunta no es "qué hace el sistema", sino "qué muestra el sistema". El cuerpo del usuario reemplaza el ratón y el teclado.
Consumo energético por número de personas
persondetector.html corre Protobject.FaceSensor, cuenta cuántas caras hay frente a la pantalla y envía el número a index.html. La página principal tiene un gráfico Plotly.js de consumo eléctrico simulado (kWh por mes) y, según el número de habitantes detectados, redibuja la curva. Una persona: 200 kWh. Cuatro personas: 600 kWh y un pico en la noche. La instalación es perfecta para un stand de feria o un museo de ciencia: la gente se acerca, ve cómo cambia, se aleja, vuelve a ver.
Regulación de temperatura por ángulo de puerta
door.html vive en un smartphone pegado a una puerta de cartón real. Usa Protobject.Orientation para detectar el ángulo de apertura. Envía el ángulo en grados a index.html, que dibuja una curva de temperatura vs. tiempo: si la puerta está cerrada, temperatura estable. Si se abre 30 grados, caída lenta. Si se abre 90, picada al suelo. Plotly.js anima la transición.
Patrón: objeto físico cotidiano + sensor de orientación = controlador continuo. La puerta de cartón no tiene nada electrónico — toda la inteligencia está en el smartphone pegado a ella.
Experiencia sísmica
El más teatral de los casos. Una maqueta de casita de cartón, con un smartphone adentro. movement.html corre Protobject.Acceleration y mide la intensidad del sacudón cuando el usuario agarra la casita y la zarandea. Envía la magnitud a index.html, que mantiene una base de sismos históricos chilenos y resalta en un mapa Plotly.js el terremoto cuya magnitud más se acerca al gesto del usuario.
La inversión también funciona: el usuario hace clic en un sismo del mapa, y index.html envía la intensidad a arduino.html, que mueve un servo que sacude físicamente la maqueta. El sismo de Valdivia 1960 hace que el techo se caiga. Cosa que de tan dramática se queda en la memoria.
Filtrado por movimiento corporal
body.html corre Protobject.BodySensor y extrae dos números del cuerpo del usuario: distancia a la cámara y posición horizontal. Los envía a index.html, que mapea distancia → nivel de zoom y posición horizontal → punto temporal del gráfico. El usuario se acerca: zoom in. Se aleja: zoom out. Se mueve a la izquierda: el gráfico viaja al pasado. Derecha: futuro. Sin tocar nada.
Patrón: dos dimensiones del cuerpo mapeadas a dos parámetros del gráfico. Funciona con cualquier visualización que tenga al menos dos ejes navegables (mapas, series temporales, scatter plots multi-año).
Predicciones de Bitcoin
Tres sensores en paralelo, un gráfico al centro. face.html con Protobject.FaceSensor lee la expresión del usuario (alegre, neutra, triste) y traduce a predicción optimista, neutral o pesimista. hand.html con Protobject.HandSensor hace lo mismo con gestos (pulgar arriba, mano abierta, pulgar abajo). inclination.html con Protobject.Inclination lee el ángulo de un objeto físico que el usuario tiene en la mano. Cualquiera de los tres puede tomar el control en cualquier momento.
El patrón aquí es multimodalidad redundante: tres entradas distintas que llegan al mismo resultado. Si la cámara falla por baja luz, el inclinómetro toma el relevo. Si el usuario no quiere mostrar la cara, usa el gesto. La accesibilidad mejora gratis.
Visualización de exportaciones con ArUco
order.html corre Protobject.ArUco apuntando a una mesa donde el usuario coloca objetos físicos marcados (un saco con marcador A para porotos, una caja con marcador B para té, un tarro con marcador C para atún). La página detecta qué marcadores están presentes y en qué orden, y envía la lista a index.html. Plotly.js redibuja el gráfico de exportaciones mostrando sólo los productos presentes, en el orden en que el usuario los puso.
Patrón: objetos físicos como tokens de consulta. El usuario "pregunta" al sistema agarrando objetos. No hay menú, no hay dropdown — hay un gesto tangible.
Mapa interactivo de frutas
hand.html corre Protobject.HandSensor apuntando a un mapa de papel de Sudamérica colgado en la pared. Detecta la posición del dedo índice del usuario y la traduce a coordenadas de país. Envía el país a index.html, que dispara Protobject.TextToSpeech y verbaliza: "Chile exportó 4.2 mil millones de dólares en frutas en 2023". El gráfico se actualiza también en paralelo, pero el canal principal de salida es la voz.
Patrón: superficie física pasiva + sensor de mano + salida no-visual. Útil para accesibilidad, para instalaciones en penumbra, para experiencias que privilegian el oído sobre el ojo.
Anatomía de un patrón Protobject
Si recorres los doce casos con cuidado, emerge una estructura común. Casi todos los prototipos tienen dos o tres páginas con roles bien diferenciados, y los mensajes fluyen en una dirección dominante. La excepción son los sistemas con bucle de feedback (postura, cerradura) donde una página de control modula el comportamiento de las demás.
Los tres roles arquetípicos son:
1. La página-sensor (emisora). Su único trabajo es transducir algo del mundo en un mensaje. Usa un componente de cámara/micrófono/movimiento, hace mínimo procesamiento local (filtrado de ruido, umbralización, conversión de unidades) y dispara Protobject.Core.send(...). No tiene UI relevante, casi nunca se mira directamente. Vive en el celular pegado a un objeto.
2. La página-procesadora (intermedia). Recibe mensajes, mantiene estado, decide qué hacer. Aquí vive la lógica del sistema: el contador regresivo, la validación de código, el mapeo de zonas a luces, el filtrado del dataset. Suele ser la página main y suele tener algo de UI (al menos para debug). Es el cerebro.
3. La página-actuadora (salida). Recibe órdenes y produce un efecto: enciende una lámpara, mueve un servo vía Arduino, reproduce un sonido, o redibuja un gráfico. En los smart-systems es físico; en los infovis es visual. Pero el patrón estructural es idéntico: una página que no decide nada, sólo ejecuta.
Aquí va el esqueleto de mensajes en pseudocódigo. Tres páginas, una dirección dominante:
// sensor.html (PÁGINA-SENSOR)
const sensor = new Protobject.CameraMovement({...});
sensor.onChanged(function(magnitude) {
if (magnitude > THRESHOLD) {
Protobject.Core
.send({event: "motion", value: magnitude, ts: Date.now()})
.to("brain.html");
}
});
// brain.html (PÁGINA-PROCESADORA)
let state = { armed: true, countdown: null };
Protobject.Core.onReceived(function(msg) {
if (msg.event === "motion" && state.armed) {
startCountdown(10); // lógica local
Protobject.Core
.send({display: "10", color: "red"})
.to("output.html");
}
});
// output.html (PÁGINA-ACTUADORA)
const lamp = new Protobject.Lamp({...});
const text = new Protobject.Text({...});
const sound = new Protobject.SoundPlayer({src: "alarm.mp3"});
Protobject.Core.onReceived(function(msg) {
if (msg.display) text.setText(msg.display);
if (msg.color) lamp.setColor(msg.color);
if (msg.playSound) sound.play();
});
Tres páginas, tres archivos, tres dispositivos posibles (o uno solo con tres pestañas para desarrollo). El cableado es el mismo en todos los casos que vimos: cambias el sensor, cambias el actuador, cambias la lógica del cerebro. La columna vertebral aguanta.
Ahora bien, no todos los prototipos necesitan tres páginas. El indicador de ruido para aulas vive en una sola: el sensor, la lógica del umbral y la lámpara conviven sin fricción. El sistema de iluminación inteligente, en cambio, tiene cinco páginas (dos sensores, un cerebro, dos actuadores Arduino) y aun así funciona. La regla práctica: una página por dispositivo físico. Si el sensor está en un lugar y el actuador en otro, separa. Si ambos viven en el mismo smartphone, no fuerces la separación.
Cómo elegir un patrón para tu propio proyecto
No partas con la tecnología. Parte con la escena: imagina al usuario en el espacio, qué hace, qué ve, qué siente. Una vez que tengas la escena clara, hazte estas preguntas en este orden.
1. ¿Qué del mundo necesito sensar? Si es presencia o conteo de personas → FaceSensor, BodySensor o PresenceSensor. Si es movimiento o gesto → CameraMovement, HandSensor, Acceleration. Si es orientación o ángulo físico → Orientation, Inclination. Si es sonido → NoiseSensor, VoiceRecognition. Si es objeto identificable → ArUco. Esto define tu página-sensor.
2. ¿Cuál es la salida que quiero? Si es un efecto físico en el espacio (luz, movimiento mecánico, sonido), tu proyecto es un smart-system: vas a necesitar Arduino + servo, o SoundPlayer, o Lamp proyectada. Si es información mostrada que el usuario lee, es un infovis: vas a integrar Plotly.js (o D3, o Chart.js, lo que sepas usar) dentro de una página que recibe los datos por Core.onReceived.
3. ¿Cuántas páginas necesito mínimo? Una si sensor y actuador conviven (Indicador de ruido). Dos si están en dispositivos distintos (Postura, Temperatura). Tres si hay un control de usuario aparte (Alarma, Cerradura). Más de tres sólo si tienes razones concretas — cada página nueva es un punto de fallo de red más.
4. ¿El prototipo necesita Arduino o basta con el smartphone? Si la salida es un objeto del mundo que se mueve (puerta, cerradura, interruptor, maqueta), Arduino. Si la salida es una pantalla, un sonido o una vibración, el smartphone solo. T4 te dio las dos opciones — ahora elige según el costo de añadir hardware: cada Arduino es un cable más, una calibración más, una batería más.
5. ¿Hay un modo de control para el usuario? Casi siempre la respuesta es sí. Una página con Switch para apagar el sistema, un Knob para ajustar sensibilidad, un Button de reset. Lo añades al final, cuando ya el sensor-cerebro-actuador funciona en serie. No partas por ahí.
Una última recomendación. Cuando estés trabado eligiendo entre dos ideas, prototipa la más fácil primero. Protobject está hecho para iterar rápido — la primera versión del proyecto debería estar viva en una sesión de tres horas. Si tomas cuatro días en arrancar, algo en el planteamiento está pidiendo simplificación. El framework premia a quien empieza feo y mejora rápido, no a quien diseña perfecto y nunca compila.
El proyecto final del curso te pide exactamente esto: un prototipo funcional, no impecable; documentación clara, no exhaustiva; un video que muestre el sistema vivo, no una presentación que lo describa en abstracto. Los patrones que viste en esta cápsula son tu repertorio de jugadas. Elige una, cámbiale los componentes a tu gusto, y empieza a programar antes de terminar de planear.
El mundo responde — pero sólo si lo conectas.
Seguridad, ergonomía y ética ubicua
Cada vez que un sistema desaparece en el ambiente, alguien sigue pagando la cuenta de su comodidad. Esta cápsula es sobre quién paga, con qué moneda, y cómo diseñar para que esa cuenta sea, por lo menos, visible.
Hay un momento incómodo que casi todo diseñador de sistemas ubicuos termina enfrentando. Pasa cuando uno mira el prototipo terminado — la cámara discreta sobre la pizarra, el sensor que escucha la habitación, el wearable que cuenta los pasos — y se da cuenta de que la pregunta interesante ya no es ¿funciona? sino ¿debería existir?. Las cápsulas anteriores trataron de hacer que la tecnología funcionara mejor: más sensible al contexto, más natural en el gesto, más cómoda al cuerpo, más robusta en el prototipo. Esta cápsula trata de la otra mitad del oficio: la que se pregunta a qué costo. Porque cada decisión de diseño que toma un sistema ubicuo es también una decisión política, ergonómica y ética, aunque el diseñador no la haya planteado en esos términos.
La unidad cierra el ciclo teórico del curso por una razón pedagógica precisa: solo se puede discutir seriamente sobre privacidad, vigilancia o sesgo cuando uno ya entiende cómo se construyen las cosas. Antes de eso, la discusión ética suena a panel de ONG. Después de haber prototipado, sensorizado, evaluado heurísticas y peleado con la fatiga del brazo en una interacción mid-air, las preguntas éticas dejan de ser abstractas. Se vuelven decisiones de diseño concretas, con costos reales.
La seguridad como problema de interacción, no de criptografía
La intuición popular dice que la seguridad informática es un asunto técnico: claves más largas, protocolos cifrados, hashes irrompibles. Esa intuición no está equivocada — está incompleta. La mayoría de los incidentes de seguridad documentados en las últimas dos décadas no se originan en una falla criptográfica, sino en una falla de interacción. El usuario hizo clic donde no debía, ignoró una advertencia que se mostraba demasiado seguido, compartió una contraseña porque la política exigía cambiarla cada quince días, o instaló un certificado falso porque la interfaz no le permitía distinguirlo del verdadero. El eslabón débil, dicen los manuales, es el humano. Pero esa frase es engañosa: el eslabón débil no es la persona, es la decisión de diseño que puso a esa persona en una situación imposible.
La definición que sintetiza el campo de la Usable Security la propusieron Garfinkel y Spafford:
Un computador es seguro si puedes confiar en que él y su software se comporten como tú esperas. — Garfinkel & Spafford
Lo notable de la frase es que la palabra clave no es seguro — es esperas. Si la interfaz no te permite formar expectativas correctas sobre lo que el sistema hace, no hay criptografía que te salve. El paper canónico que demostró esto fue Why Johnny Can't Encrypt (Whitten y Tygar, 1999): tomaron PGP 5.0, una herramienta criptográficamente sólida, y mostraron que usuarios técnicamente competentes no podían usarla correctamente — enviaban mensajes en claro, cifraban con la clave equivocada, no podían distinguir un mensaje firmado de uno simplemente recibido. PGP era seguro en el sentido matemático y absolutamente inseguro en el sentido humano. Veintiséis años después, el problema sigue siendo el mismo.
La perspectiva de HCI invierte la premisa habitual. Donde la ingeniería de seguridad clásica trata al usuario como adversario potencial — alguien que va a equivocarse y debe ser restringido — la perspectiva HCI lo trata como participante consciente: alguien que mantiene la seguridad si la interfaz le da el lenguaje, la visibilidad y el control para hacerlo. Sasse, Brostoff y Weirich (2001) lo formularon en un título que se volvió consigna: Transforming the weakest link. La hipótesis: la seguridad y la usabilidad no son antagónicas. Un sistema más predecible, más controlable y más comprensible es a la vez más seguro y más usable. Lo opuesto — la seguridad por opacidad, por confirmaciones repetidas, por permisos enterrados en menús de tres niveles — produce usuarios que aprenden a saltarse las protecciones, no a respetarlas.
Los diez principios de Ka-Ping Yee
En 2002 Ka-Ping Yee publicó User Interaction Design for Secure Systems, un texto breve que organiza el espacio en diez principios. No son reglas mecánicas — son ejes a lo largo de los cuales se puede evaluar si una interfaz facilita o entorpece el comportamiento seguro. Vale la pena recorrerlos no como lista, sino como mapa.
Camino de menor resistencia. El comportamiento por defecto debe ser el comportamiento seguro. Los usuarios economizan esfuerzo — no por flojera, sino porque la atención es un recurso finito. Si la opción segura está a tres clics y la opción riesgosa a uno, no importa cuántas advertencias intercale: la gente elegirá un clic. Diseñar bien significa invertir esa asimetría.
Límites apropiados. Los permisos deben agruparse en unidades que tengan sentido para el usuario, no en unidades que tengan sentido para el programador. Usar la cámara es un permiso conceptualmente claro; acceder al driver v4l2 con flag de captura de buffer en modo raw no lo es. Los permisos demasiado granulares abruman; los demasiado amplios entregan más autoridad de la necesaria. El equilibrio se llama coarse enough to understand, fine enough to matter.
Autorización explícita. Por defecto, nadie tiene permisos. La autoridad se otorga, no se asume. Es lo opuesto al modelo opt-out en el que muchas aplicaciones se instalan con todo activado.
Visibilidad. El estado actual de la seguridad debe ser legible. El indicador del macOS que muestra cuándo la cámara está activa, el LED del Raspberry Pi que parpadea cuando el micrófono captura — son ejemplos minúsculos pero pedagógicamente claves. Un permiso invisible es, en la práctica, un permiso involuntario.
Revocabilidad. Lo que se otorgó, se puede quitar. Sin fricción, sin laberinto. Cerrar sesión en todos los dispositivos, eliminar mis datos, revocar el acceso de esta app — estas opciones deben existir y deben ser encontrables.
Capacidad esperada. La interfaz no debe prometer lo que el sistema no puede cumplir. Si una acción es irreversible, decirlo. Si un permiso no se puede revocar, advertirlo antes.
Identificabilidad. Lo igual debe verse igual, lo distinto debe verse distinto. Es el principio Gestalt aplicado a la seguridad: la diferencia entre un sitio https legítimo y uno phishing tiene que ser visualmente discriminable, no estar escondida en el detalle de un ícono.
Expresividad. La interfaz debe darle al usuario un lenguaje para articular la política que quiere implementar. Si yo quiero compartir un archivo con lectura para mi colega y escritura para mi coautor, la interfaz debe permitirme decir eso. Si me obliga a compartir con todos o con nadie, no es que esté siendo simple — está siendo coercitiva.
Claridad. Sin jerga, sin ambigüedad, sin advertencias genéricas que el usuario aprende a despachar con un clic automático.
Rendición de cuentas. Debe ser posible reconstruir quién hizo qué. Logs comprensibles, auditoría, identidad verificable cuando importa.
La belleza de estos diez principios es que ninguno es revolucionario en aislamiento. Lo revolucionario es asumir que la seguridad es diseño de interacción, no un parche que se le pega encima.
El cuerpo en el ambiente: ergonomía ubicua
La discusión cambia de registro cuando pasamos de la seguridad informática a la ergonomía. Aquí el problema no es quién accede a qué datos, sino qué le pasa al cuerpo y a la mente del usuario después de cien horas de uso. Y los sistemas ubicuos introducen formas de fatiga que las interfaces de escritorio nunca tuvieron que considerar.
El caso más documentado es el Gorilla Arm — el síndrome que aparece cuando un usuario tiene que mantener el brazo en el aire para interactuar mediante gestos. Hincapié-Ramos y colegas (CHI 2014) propusieron una métrica para cuantificarlo, Consumed Endurance, midiendo el costo metabólico de una postura mid-air sostenida. El hallazgo fue contundente: interacciones que en una demo de tres minutos parecen mágicas se vuelven insostenibles después de quince. El cuerpo no fue diseñado para mantener un brazo a noventa grados durante una jornada laboral. Cualquier sistema ubicuo que requiera gestos prolongados — sin un descanso periódico, sin un anclaje en una superficie, sin un fallback al toque — está diseñando para una demo, no para un uso real.
Hay variantes menos visibles. El Fat Thumb describe el costo de operar pantallas táctiles pequeñas con un dedo que es geométricamente más grueso que los targets que debe tocar — produce tensión repetitiva en la articulación. El peso y ajuste de unas gafas AR sobre el puente nasal, replicado a lo largo de una sesión de dos horas, produce dolores que ningún test usability detecta en una primera sesión. La portabilidad y la comodidad están en tensión perpetua: hacer un dispositivo más pequeño suele hacerlo menos cómodo de operar, y viceversa.
La ergonomía cognitiva es la otra mitad del cuadro. Las interfaces ubicuas — y especialmente las que superponen información sobre el mundo real, como AR — pueden saturar la atención del usuario hasta el punto en que el rendimiento se degrada. Mark Weiser hablaba de calm technology: tecnología que informa sin demandar, que vive en la periferia y reclama el centro solo cuando importa. La promesa era hermosa; la práctica, treinta y cinco años después, está saturada de notificaciones que pelean por la atención como ofertas de almacén. La ergonomía cognitiva es, en este sentido, un problema de diseño de información, no solo de postura.
Y luego está la ergonomía ambiental: el hecho banal de que estos sistemas se usan en movimiento, bajo el sol, en el metro, con un guante puesto, con las manos mojadas. Las interfaces que asumen condiciones de laboratorio fracasan en la calle. Un buen diseño ubicuo es un diseño que sobrevive a sus condiciones reales de uso, no a las del usability lab.
La ética ubicua: cuando el ambiente recuerda
Llegamos al núcleo más incómodo de la unidad. Los sistemas ubicuos no son neutros — no porque sus diseñadores sean malintencionados, sino porque la arquitectura de un sistema que recopila datos contextuales de forma constante tiene consecuencias éticas que ningún uso individual permite mitigar.
Helen Nissenbaum lo formuló en Privacy in Context (2010) con una intuición que cambió el debate: la privacidad no es secreto, es integridad contextual. La información que comparto con mi médico es la misma información, pero si circula al supermercado o al empleador, lo que se viola no es el secreto — se viola la norma de qué información fluye en qué contexto, hacia qué destinatarios, bajo qué condiciones. Un sistema ubicuo que recoge datos en un contexto (por ejemplo, mi gimnasio) y los reutiliza en otro (mi seguro de salud) puede no haber roto ninguna promesa explícita y aún así haber destruido la confianza que hacía posible el primer contexto. La privacidad, en esta lectura, es una propiedad relacional. No se protege con consentimiento general — se protege con normas de flujo informacional.
Marc Langheinrich, en su paper fundacional Privacy by Design — Principles of Privacy-Aware Ubiquitous Systems (UbiComp 2001), tradujo esa intuición a principios de ingeniería para sistemas ubicuos específicamente. Sus principios siguen siendo el punto de partida obligatorio: notice (el usuario debe saber qué se recoge), choice and consent (debe poder decidir), anonymity and pseudonymity (cuando es posible, los datos deben desidentificarse), proximity and locality (procesar localmente antes que enviar a la nube), adequate security (la seguridad como prerrequisito ético, no como característica adicional) y access and recourse (poder consultar y disputar lo que el sistema sabe de uno). La lista no envejeció. La práctica industrial, en cambio, sí — y mayoritariamente en la dirección contraria a la que Langheinrich anticipó.
Shoshana Zuboff, en The Age of Surveillance Capitalism (2019), llevó la discusión al terreno político. Su tesis es que la computación ubicua, combinada con el modelo de negocio publicitario, produjo una economía donde el excedente conductual — los datos que se generan como subproducto de cualquier interacción — se ha vuelto materia prima de un mercado de predicciones sobre comportamiento humano. No es paranoia: es el modelo de negocio explícito de varias de las empresas más grandes del mundo. La pregunta para un diseñador de sistemas ubicuos no es si su prototipo, en isolation, viola la privacidad. La pregunta es si, al entrar en un ecosistema, alimenta una infraestructura que la viola en agregado. El diseño individual es, también, una decisión sobre el ecosistema que ayuda a construir.
Hay un tercer eje que no se puede esquivar: el sesgo algorítmico. Los sistemas que aprenden de datos del mundo real reproducen — y a menudo amplifican — los sesgos presentes en esos datos. Un detector de atención en un aula, entrenado con un conjunto de rostros mayoritariamente blanco, fallará sistemáticamente con estudiantes afrodescendientes. Un sistema de reconocimiento de voz entrenado con hablantes urbanos no entenderá a quien tiene acento del sur de Chile. Estos no son bugs — son las consecuencias estadísticas de qué datos se eligieron, y de qué problemas se decidió optimizar. La equidad algorítmica es un problema de diseño, no un parche de post-procesamiento.
Y queda la pregunta más espinosa: la autonomía. Los sistemas que se adaptan al usuario — que aprenden sus preferencias, anticipan sus necesidades, ajustan su comportamiento — están operando, inevitablemente, sobre la frontera entre asistencia y manipulación. Un sistema que me recomienda el mejor camino al trabajo es asistencia. Un sistema que aprende cuándo es más probable que compre algo y me lo ofrece en ese instante es algo distinto. La distinción no siempre es nítida; el diseño es lo que la traza, y el diseñador es responsable de dónde la traza.
La tensión que el curso evalúa
La prueba teórica del curso pide examinar críticamente la afirmación de que la visión de Mark Weiser sobre tecnología serena fracasó rotundamente — que en lugar de calma trajo vigilancia, en lugar de invisibilidad trajo opacidad, en lugar de liberación cognitiva trajo gestión tecnológica constante. La crítica no es injusta. Pero tampoco es completa. Las cápsulas anteriores enseñaron a diseñar sistemas que respondan al ambiente; esta cápsula recuerda que responder al ambiente es también vigilar el ambiente, y que el mismo gesto técnico — un sensor que escucha la habitación — sostiene tanto la calma weiseriana como la cacofonía de la economía del dato. La diferencia no está en el sensor: está en el contrato social, técnico y ético que rodea su uso.
El ensayo individual del curso pide articular esta tensión en 750-850 palabras, anclada en las experiencias prácticas del semestre — el prototipo del Prototype-Jam, la violación heurística detectada en Urgencias Heurísticas, los datos recolectados en Hackea tu Smartphone, y el debate del Comité de Impacto que esta cápsula prepara. La unidad no es accesoria al curso — es el lente final con el que se relee todo lo anterior.
Aprendizaje activo
La Actividad 9 — Comité de Impacto convierte estos principios en práctica viva. El caso de estudio es uno real: la Universidad Innovación Digital decide instalar un sistema de smart-camera en todas sus aulas. El sistema promete tres funciones — detección de atención de estudiantes, gestión de seguridad y ocupación, ajuste automático de iluminación y climatización — y declara que el procesamiento es local, que los metadatos son anónimos, y que los videos brutos se eliminan a las 24 horas.
El grupo se reparte en tres roles. La Defensa argumentará a favor: cómo los principios de Yee se cumplen, cómo la propuesta optimiza el aprendizaje sin sacrificar derechos, qué salvaguardas son suficientes. La Crítica atacará por la otra orilla: qué datos se recolectan más allá de lo declarado, qué inferencias se pueden hacer a partir de patrones de atención, qué sesgos podría introducir el sistema de visión por computador, qué pasa con el consentimiento del estudiante que entra al aula sin alternativa real de no ser observado, qué normas de integridad contextual (Nissenbaum) se están reordenando sin discusión. La Moderación facilita el debate, vigila los tiempos y redacta las recomendaciones consensuadas que el grupo entregará.
No es un ejercicio retórico. Es un entrenamiento en el músculo ético que un profesional ubicuo va a usar la primera semana de su primer trabajo, cuando alguien — un cliente, un jefe, un comité — le pida diseñar exactamente este sistema. Y necesitará tener formada la pregunta antes de tenerla que responder en serio.
Aplicaciones y futuro de la computación ubicua
El futuro no llega de golpe. Se filtra, se acomoda en los rincones, y un día nos damos cuenta de que ya estaba aquí.
Llegamos al final de un recorrido que empezó hace quince cápsulas con Mark Weiser sentado en Xerox PARC, escribiendo a mano una frase que iba a definir el resto del siglo: "las tecnologías más profundas son las que desaparecen". Desde entonces hemos atravesado heurísticas, prototipos, sensores, evaluaciones y comités de ética. Toca ahora la pregunta más difícil del curso: ¿hacia dónde va todo esto? No la respuesta de feria tecnológica, sino la respuesta sobria, anclada en lo que la investigación HCI documenta hoy. Esta cápsula es una mirada hacia adelante con los pies puestos en el suelo.
Casos que ya están en el aula
Antes de proyectar a diez años, conviene mirar lo que ya existe y funciona. Hemos visto sistemas a lo largo del curso, pero conviene reagruparlos como casos paradigmáticos porque cada uno encarna una forma distinta de habitar la computación ubicua.
AmbiGaze resuelve un problema viejo del eye-tracking: el "toque de Midas", esa maldición de que todo lo que miras se selecciona. La solución es elegante. Cada dispositivo del entorno —una lámpara, un ventilador, una persiana— se anima con un patrón de movimiento único. El usuario lo selecciona persiguiéndolo con la mirada (smooth pursuit) y el sistema, por correlación, sabe qué eligió. No hay calibración. No hay menú. Hay un mundo de objetos que se mueven discretamente y un ojo que decide. Es Weiser puro: la interfaz se diluye en el ambiente.
Electrick convierte cualquier superficie conductora en pantalla táctil. Pintas una mesa con pintura de carbono, pones electrodos en el perímetro, y el sistema infiere el toque por tomografía de campo eléctrico. La consecuencia práctica es enorme: muebles, juguetes, paredes enteras se vuelven interfaz. La consecuencia conceptual es más fina: derriba la última frontera entre "pantalla" y "mundo".
Zensors llevó la idea aún más lejos. ¿Por qué instalar sensores específicos para cada pregunta cuando ya hay cámaras en todas partes? Apunta una cámara, escribe una pregunta en lenguaje natural —"¿hay cola en la cafetería?"— y el sistema combina visión por computador, machine learning y crowdsourcing para responderla. Con el tiempo aprende a responder solo. Es el sueño del "sensor de propósito general", y prefigura mucho de lo que la IA generativa está empezando a hacer hoy.
Orbits y Whoosh son la dupla más juguetona. El smartwatch tiene una pantalla minúscula, así que en lugar de seguir miniaturizando botones, cambian de modalidad. Orbits usa mirada y smooth pursuit; Whoosh usa soplidos de distinta forma y dirección como vocabulario de comandos. Si modificas la carcasa con un Flutecase impreso en 3D, amplías el repertorio acústico. Son interacciones imposibles en un mouse y triviales en el cuerpo.
Estos cuatro casos no son ciencia ficción: están publicados en CHI, UIST y revistas de HCI desde hace una década o más. Importan porque trazan los vectores: mirada, tacto distribuido, lenguaje natural sobre sensores existentes, modalidades acústicas y corporales. Cada vector tiene un horizonte de diez años por delante.
Context-awareness profundo: del dónde al porqué
Durante años, "context-aware" significó esencialmente "sabe dónde estás". La nueva frontera es entender qué estás haciendo y, sobre todo, qué pretendes hacer. La fusión de sensores —acelerómetros, cámaras, micrófonos, fisiología, calendario, comunicaciones— permite inferir actividades cada vez más finas. La investigación apunta a tres capas progresivas: contexto físico (ubicación, hora, dispositivos), contexto de actividad (qué haces) y contexto de intención (qué quieres lograr en los próximos minutos u horas).
Esta última capa es la más interesante y la más delicada. Un sistema que infiere intenciones puede ayudarte de forma proactiva, pero también puede equivocarse de manera embarazosa o, peor, anticipar decisiones que no querías que se anticiparan. La línea entre asistencia y paternalismo se vuelve cartográficamente fina. Lo que la comunidad HCI viene insistiendo desde hace años —y conviene repetirlo aquí— es que anticipación sin transparencia es manipulación. El usuario debe saber qué se está infiriendo de él, con qué confianza, y debe poder corregirlo.
IA generativa: el momento incómodo
Desde 2022 los modelos generativos cambiaron la conversación. Ya no se trata sólo de inferir contexto sino de producir interfaces, contenidos y respuestas en tiempo real. La pregunta para UbiComp no es si la IA generativa entrará en las interfaces ubicuas —ya está entrando, en altavoces, gafas, autos, asistentes domésticos— sino cómo lo hará sin romper los principios de calm technology de Weiser.
Hay tres tensiones en juego. La primera: los LLM tienden a ser locuaces, y un sistema verdaderamente ubicuo necesita ser breve. La segunda: la generación impredecible choca con la previsibilidad que la interacción cotidiana exige (cuando aprieto el interruptor, espero que pase siempre lo mismo). La tercera: la latencia y el consumo energético de los modelos grandes son incompatibles con dispositivos que viven al margen de la atención.
La salida que la investigación está explorando es la arquitectura híbrida: modelos pequeños en el dispositivo para lo rutinario, modelos grandes en la nube para lo excepcional, y reglas deterministas en el medio para todo lo crítico. Es menos elegante que "todo IA" pero es lo que la disciplina HCI dicta cuando se toma en serio la fiabilidad.
Ecosistemas multi-dispositivo: el handoff sin fricción
Hoy tienes un teléfono, un computador, una TV, un reloj, un altavoz, un auto, una pulsera y, si tienes suerte, unas gafas inteligentes. Mañana tendrás todo eso más sensores de presencia, pantallas ambientales y objetos cotidianos enriquecidos. La pregunta de diseño ya no es "qué hace este dispositivo" sino "cómo se coordinan todos cuando estoy haciendo una sola tarea".
El concepto clave es handoff: la tarea que empezaste en el teléfono debe poder continuar en el laptop, mudarse a la TV cuando llegas al living, y volver al reloj cuando sales a caminar. Apple lo viene empujando hace años con Continuity; el resto del ecosistema está aún fragmentado. La investigación HCI propone marcos teóricos —device ecology, cross-device interaction, proxemic computing de Saul Greenberg— y prototipos donde el descubrimiento de dispositivos es inmediato, el contenido fluye y las interfaces se redistribuyen según la postura del usuario y la proximidad. Lo difícil no es la sincronización técnica: es decidir, en cada momento, qué dispositivo merece la atención.
Nuevas modalidades: cerebro, olfato, gusto, piel
El catálogo de modalidades de entrada y salida sigue creciendo. Tres frentes merecen atención porque están entrando del laboratorio al producto.
Interfaces cerebro-computadora (BCI). Hay dos escuelas. La invasiva —Neuralink y similares— implanta electrodos en la corteza y trabaja con pacientes con condiciones específicas. La no invasiva —OpenBCI, Muse, Emotiv— usa EEG superficial y consigue señales más ruidosas pero éticamente más asequibles. Para UbiComp lo relevante son las BCI no invasivas integradas en wearables: detectar estados atencionales, niveles de carga cognitiva, frustración o calma para que el ambiente se adapte. Es la promesa de la passive BCI, donde el cerebro no manda comandos sino que informa estado.
Olfato y gusto digitales. La investigación lleva décadas tropezando aquí. Hay prototipos de dispositivos que emiten secuencias controladas de moléculas (Aromajoin, Olorama) y otros que estimulan eléctricamente la lengua para evocar sabores (los trabajos de Nimesha Ranasinghe en Singapur). Está lejos de ser cotidiano. Pero los casos de uso son nítidos: ambient memory triggers, accesibilidad para personas con anosmia post-COVID, experiencias inmersivas. Aún no es producto, es horizonte.
Háptica avanzada y comunicación táctil. Lo más maduro del lote. Los actuadores ultrasónicos sin contacto (Ultraleap), las matrices de pines, los wearables con vibración localizada o térmica permiten transmitir información por la piel sin saturar oído ni vista. Para sistemas calm —que no quieren interrumpir— la piel es la modalidad obvia. Hiroshi Ishii viene defendiendo desde su manifiesto de Radical Atoms (2012) que los bits deben encarnar materia y la materia debe responder. Su laboratorio en el MIT Media Lab —el Tangible Media Group— sigue produciendo prototipos donde la superficie misma se deforma para mostrar información.

Computación neuromórfica y edge AI
Una tendencia menos visible pero estructural: el desplazamiento del cómputo desde la nube hacia el borde. La nube tiene problemas de latencia, privacidad y dependencia de conectividad. La respuesta es edge AI: chips diseñados para correr modelos en dispositivos pequeños con poco consumo.
Aquí entra la computación neuromórfica, un paradigma inspirado en cómo el cerebro procesa información mediante "spikes" en lugar de operaciones síncronas. Chips como Loihi de Intel o Akida de BrainChip prometen consumos órdenes de magnitud menores para tareas de inferencia, en particular sobre datos sensoriales temporales. Para UbiComp esto importa porque los dispositivos verdaderamente ambientales no pueden permitirse cargar baterías ni mantener conexión permanente. La promesa es un sensor que vive con una pila de botón durante un año porque sólo despierta cuando algo relevante ocurre.
Es una promesa parcialmente cumplida, vale aclarar. La adopción comercial aún es marginal. Pero la dirección está clara: cómputo más cerca del sensor, modelos más pequeños, eficiencia energética como criterio de diseño tan importante como la precisión.
Volver a Weiser
Conviene detenerse aquí y hacer el ejercicio honesto: ¿qué de lo que Mark Weiser escribió en 1991 se cumplió, y qué no?
Lo que acertó. Weiser dijo que la computación se distribuiría en pulgadas, pies y yardas —dispositivos personales, intermedios y ambientales—. Ese gradiente es hoy literalmente nuestra vida: reloj, teléfono, laptop, TV, sala. Acertó que la conectividad sería el sustrato invisible: el WiFi y la 5G son hoy infraestructura como lo es el agua corriente. Acertó que el cómputo abandonaría el escritorio y se incorporaría en objetos cotidianos: termostatos, lámparas, cerraduras, parlantes. Acertó, sobre todo, en la dirección del campo: la interfaz como ambiente.
Lo que no acertó —al menos no como él lo soñó. Weiser imaginó una computación calmada, que viviera "en la periferia de la atención". Lo que tenemos en cambio es una computación demandante, que pelea cada minuto por la cabeza del usuario. El smartphone es lo opuesto de calm technology: es un imán de atención diseñado para maximizar engagement. Weiser previó la ubicuidad pero no anticipó el modelo de negocio que iba a aprovecharla.
Tampoco anticipó la concentración del poder. Su visión sugería un ecosistema federado, abierto, donde dispositivos heterogéneos colaborarían por protocolos comunes. Lo que tenemos es un puñado de plataformas verticales que no hablan entre sí salvo a regañadientes. Apple, Google, Amazon, Microsoft —y en otro plano Meta y los gigantes chinos— controlan las capas críticas. La interoperabilidad sigue siendo aspiración.
Y no anticipó la dimensión política. La computación ubicua trae consigo vigilancia ambiental, perfilamiento conductual y asimetrías de poder que él, escribiendo desde el optimismo de Xerox PARC, no tematizó. Hicieron falta Genevieve Bell, Paul Dourish, Lucy Suchman y la corriente etnográfica de UbiComp para nombrar lo que la tecnología hacía socialmente. La pregunta no era ya sólo "¿cómo desaparece la interfaz?" sino "¿qué intereses se ocultan tras esa desaparición?".
Pranav Mistry, con su SixthSense de 2009, mostró que era técnicamente posible proyectar información sobre cualquier superficie con un sensor colgado del cuello. Pero el producto nunca llegó: hicieron falta otros quince años para que las gafas de realidad mixta empezaran a aproximarse a algo de eso, y todavía no resolvimos qué hacemos con ellas socialmente.
Volver a Weiser no es nostalgia. Es recordar que el norte teórico original sigue siendo válido —tecnología invisible, calmada, al servicio de la atención humana— aunque las fuerzas del mercado nos hayan empujado a otra parte.
La pregunta para uds, como futuros diseñadores, es si esa fuerza del mercado es destino o es disputa.
Ética y regulación: el cierre del paréntesis
Durante treinta años UbiComp operó en un vacío regulatorio cómodo. Eso terminó. El GDPR europeo (2016) estableció la primera arquitectura legal robusta sobre datos personales, con efectos extraterritoriales. El AI Act de la Unión Europea (2024) —el primer marco regulatorio amplio sobre inteligencia artificial— clasifica sistemas por nivel de riesgo y prohíbe directamente algunas aplicaciones (reconocimiento emocional en lugares de trabajo y centros educativos, social scoring gubernamental, identificación biométrica remota en espacios públicos salvo excepciones acotadas).
Esto tiene consecuencias prácticas para quien diseña sistemas ubicuos. Ya no basta con "es legal porque nadie nos prohibió hacerlo". Las preguntas que un comité de ética planteaba —las que vieron en la Actividad 9— son hoy también preguntas regulatorias: ¿qué datos recoges?, ¿con qué base legal?, ¿por cuánto tiempo?, ¿quién accede?, ¿cómo se borran?, ¿qué decisiones automatizadas se toman y con qué transparencia?
La buena noticia es que el campo HCI tiene herramientas: privacy by design de Ann Cavoukian, value-sensitive design de Batya Friedman, los marcos de Helen Nissenbaum sobre integridad contextual. La mala noticia es que las herramientas conviven con un mercado que premia la fricción mínima y la pregunta no preguntada. El diseñador ubicuo del 2026 tiene que vivir en esa tensión.
Estado deseado: qué nos gustaría llegar a ver en 2035
Si proyectamos diez años con honestidad —sin pirotecnia futurista pero sin cinismo—, hay un escenario plausible donde varias cosas se alinean. Dispositivos que duran años sin cargarse, con cómputo neuromórfico que sólo despierta cuando es necesario. Asistentes que entienden contexto e intención sin filtrar todo a la nube, gracias a modelos locales potentes y a aprendizaje federado. Interfaces que se redistribuyen entre los dispositivos del entorno según postura, proximidad y tarea, sin que el usuario tenga que orquestar nada. Hápticas y modalidades nuevas que carguen información sin saturar la atención. Y, ojalá, un marco regulatorio que haya internalizado las lecciones del decenio anterior, con sistemas que tengan que demostrar respeto a la autonomía como antes demostraban eficiencia.
Es plausible, no inevitable. Es lo que se decide hoy en cada laboratorio, en cada empresa, en cada aula como esta.
Aprendizaje activo
La Actividad 10 — Timeline 2025-2035 los va a poner en el asiento del que decide. En grupos elegirán un dominio —salud, transporte, educación, hogar, trabajo, comercio, entretenimiento— y proyectarán la evolución de una aplicación ubicua a lo largo de los próximos diez años. Construirán una línea de tiempo con el hito actual (2025), tres hitos intermedios (2027, 2031, 2033) y un estado deseado ambicioso pero defendible en 2035.
Pero la línea de tiempo es sólo la mitad del ejercicio. La otra mitad es el mapa de actores: ¿quién interactúa con su sistema en 2035? Usuarios, sí, pero también empresas, gobiernos, reguladores, otros sistemas, modelos de IA, comunidades afectadas. Identificar a cada actor y describir su rol obliga a pensar el sistema como ecosistema socio-técnico, no como producto aislado.
Cerrarán con un wireframe rápido de la interfaz clave en 2035. No diseño gráfico, estructura: ¿cómo se ve el sistema en uso?, ¿qué hace visible y qué deja invisible?, ¿cómo refleja —o se aleja de— los principios ubicuos que vimos a lo largo del semestre? La exposición será en formato Pecha-Kucha: 3-4 diapositivas, 20 segundos cada una, condensación brutal. Es el ejercicio de cierre del curso: tomar todo lo aprendido y proyectarlo como visión defendible.
Bibliografía
Las lecturas que dieron forma a este curso, organizadas por unidad.
Una bibliografía no es un trámite. Es un mapa. Lo que sigue es el mapa que dibujamos juntos durante el semestre: las lecturas que están detrás de cada cápsula, las que el profesor cita cuando duda, las que conviene volver a leer cuando uds. estén diseñando su propio sistema ubicuo a los seis meses de terminado el curso. Está ordenada por unidad para que sea fácil entrar por el tema que les interesa, no por el orden alfabético de los apellidos. Al final hay un puñado de lecturas integradoras que cruzan varias unidades y vale la pena tener cerca.
Las referencias siguen un formato APA. Cuando un trabajo es citable de varias formas (libro reeditado, paper que después fue capítulo) preferí la versión que el estudiante encuentra primero al buscar.
1. Fundamentos de UbiComp
Contexto
Las lecturas fundacionales: de dónde viene la idea de que la computación se vuelva ambiente, y cómo se ha intentado domesticarla en los treinta años que llevamos buscándola.
- Weiser, M. (1991). The Computer for the 21st Century. Scientific American, 265(3), 94-104.
- Weiser, M., & Brown, J. S. (1996). Designing calm technology. PowerGrid Journal, 1(1).
- Krumm, J. (Ed.). (2009). Ubiquitous Computing Fundamentals. CRC Press.
- Bell, G., & Dourish, P. (2007). Yesterday's tomorrows: notes on ubiquitous computing's dominant vision. Personal and Ubiquitous Computing, 11(2), 133-143.
- Greenfield, A. (2006). Everyware: The Dawning Age of Ubiquitous Computing. New Riders.
- Dourish, P. (2001). Where the Action Is: The Foundations of Embodied Interaction. MIT Press.
2. Usabilidad y feedback
Contexto
Heurísticas, golfos, principios. Lo que hay que tener internalizado para no diseñar interfaces que sean trampas con buena estética.
- Nielsen, J. (1994). Usability Engineering. Morgan Kaufmann.
- Nielsen, J. (1994). Enhancing the explanatory power of usability heuristics. CHI '94: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, 152-158.
- Norman, D. A. (1988). The Design of Everyday Things. Doubleday. (Reedición con nuevo prefacio: Basic Books, 2013.)
- Norman, D. A. (2004). Emotional Design: Why We Love (or Hate) Everyday Things. Basic Books.
- Rogers, Y., Sharp, H., & Preece, J. (2019). Interaction Design: Beyond Human-Computer Interaction (5th ed.). Wiley.
3. Diseño centrado en personas
Contexto
Personas, escenarios, diseño universal, etnografía. Las tradiciones que ponen al ser humano —en plural, en su diversidad real— antes que la tecnología.
- Mace, R. L. (1985). Universal design: Barrier-free environments for everyone. Designers West, 33(1), 147-152.
- Cooper, A. (1999). The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity. Sams Publishing.
- Cooper, A., Reimann, R., Cronin, D., & Noessel, C. (2014). About Face: The Essentials of Interaction Design (4th ed.). Wiley.
- Suchman, L. (1987). Plans and Situated Actions: The Problem of Human-Machine Communication. Cambridge University Press. (Reeditado y expandido como Human-Machine Reconfigurations, 2007.)
- Stephanidis, C., & Salvendy, G. (Eds.). (2024). Human-Computer Interaction in Intelligent Environments. CRC Press.
4. Paradigmas más allá del escritorio
Contexto
Tangible, ambient, gestual, sin contacto. La generación de paradigmas que rompió con el WIMP y abrió el espacio de diseño en el que ahora trabajamos.
- Ishii, H., & Ullmer, B. (1997). Tangible bits: towards seamless interfaces between people, bits and atoms. CHI '97: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, 234-241.
- Aarts, E., & Marzano, S. (Eds.). (2003). The New Everyday: Views on Ambient Intelligence. 010 Publishers.
- Kuniavsky, M. (2010). Smart Things: Ubiquitous Computing User Experience Design. Morgan Kaufmann.
- Saffer, D. (2008). Designing Gestural Interfaces: Touchscreens and Interactive Devices. O'Reilly Media.
- Ishii, H., Lakatos, D., Bonanni, L., & Labrune, J.-B. (2012). Radical atoms: beyond tangible bits, toward transformable materials. interactions, 19(1), 38-51.
5. Sensores e IoT
Contexto
La capa material que hace posible la ubicuidad: sensores, actuadores, protocolos. Punto de partida para diseñar contexto en vez de adivinarlo.
- Krumm, J. (Ed.). (2009). Ubiquitous Computing Fundamentals. CRC Press. (Capítulos sobre sensado, localización y middleware.)
- Stankovic, J. A. (2014). Research directions for the Internet of Things. IEEE Internet of Things Journal, 1(1), 3-9.
- Atzori, L., Iera, A., & Morabito, G. (2010). The Internet of Things: A survey. Computer Networks, 54(15), 2787-2805.
- Gomez, C., Oller, J., & Paradells, J. (2012). Overview and evaluation of Bluetooth Low Energy: An emerging low-power wireless technology. Sensors, 12(9), 11734-11753.
- Baronti, P., Pillai, P., Chook, V. W., Chessa, S., Gotta, A., & Hu, Y. F. (2007). Wireless sensor networks: A survey on the state of the art and the 802.15.4 and ZigBee standards. Computer Communications, 30(7), 1655-1695.
6. Técnicas avanzadas de interacción
Contexto
Las técnicas que estiran el espacio de interacción más allá del touchscreen: superficies que sensan, objetos que oyen, miradas que seleccionan, ritmos que controlan. La última sección incluye trabajo del docente que pueden tomar como casos de estudio cercanos.
- Laput, G., Yang, C., Xiao, R., Sample, A., & Harrison, C. (2015). EM-Sense: Touch recognition of uninstrumented, electrical and electromechanical objects. UIST '15: Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology, 157-166.
- Zhang, Y., Laput, G., & Harrison, C. (2017). Electrick: Low-cost touch sensing using electric field tomography. CHI '17: Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems, 1-14.
- Esteves, A., Velloso, E., Bulling, A., & Gellersen, H. (2015). Orbits: Gaze interaction for smart watches using smooth pursuit eye movements. UIST '15, 457-466.
- Velloso, E., Wirth, M., Weichel, C., Esteves, A., & Gellersen, H. (2016). AmbiGaze: Direct control of ambient devices by gaze. DIS '16: Proceedings of the 2016 ACM Conference on Designing Interactive Systems, 812-817.
- Clarke, C., Bellino, A., Esteves, A., Velloso, E., & Gellersen, H. (2016). TraceMatch: A computer vision technique for user input by tracing of animated controls. UbiComp '16: Proceedings of the 2016 ACM International Joint Conference on Pervasive and Ubiquitous Computing, 298-303.
- Clarke, C., Bellino, A., Esteves, A., & Gellersen, H. (2017). Remote control by body movement in synchrony with orbiting widgets: An evaluation of TraceMatch. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies, 1(3), 1-22.
- Bellino, A. (2018). SEQUENCE: a remote control technique to select objects by matching their rhythm. Personal and Ubiquitous Computing, 22(4), 751-770.
- Bellino, A., & Rocchesso, D. (2024). SoundOrbit: motion-correlation interaction with auditory orbital trajectories. Personal and Ubiquitous Computing, 28(5), 763-778.
- Rocchesso, D., Bellino, A., & Perez, A. (2023). TickTacking — Drawing trajectories with two buttons and rhythm. Proceedings of the Sound and Music Computing Conference.
7. Prototipado
Contexto
Las bases de cómo se piensa con las manos: bocetar, prototipar, decidir qué dimensión del diseño se evalúa con cada prototipo. La última entrada es la herramienta usada en las cápsulas técnicas T1-T5 del curso.
- Buxton, B. (2007). Sketching User Experiences: Getting the Design Right and the Right Design. Morgan Kaufmann.
- Beaudouin-Lafon, M., & Mackay, W. E. (2012). Prototyping tools and techniques. In J. A. Jacko (Ed.), The Human-Computer Interaction Handbook: Fundamentals, Evolving Technologies, and Emerging Applications (3rd ed., pp. 1043-1066). CRC Press.
- Houde, S., & Hill, C. (1997). What do prototypes prototype? In M. Helander, T. Landauer, & P. Prabhu (Eds.), Handbook of Human-Computer Interaction (2nd ed., pp. 367-381). Elsevier.
- Bellino, A., De Michelis, G., & De Paoli, F. (2023). Design and evaluation of Protobject: a tool for rapid prototyping of interactive products. IEEE Access, 11, 13280-13292.
- Bellino, A., & Herskovic, V. (2023). Protobject as a tool for teaching computational thinking to designers: student perceptions on usability. Proceedings of the 15th Biannual Conference of the Italian SIGCHI Chapter, 1-8.
- Bellino, A. (2025). Unlocking design spaces: Web-based interactive prototyping by repurposing everyday devices. SSRN Working Paper 5259499.
8. Evaluación
Contexto
Cómo se mide lo que diseñamos. Métricas cuali y cuanti, el SUS, los marcos para reportar tamaños de efecto en estudios de UX.
- Nielsen, J. (1993). Usability Engineering. Academic Press / Morgan Kaufmann.
- Brooke, J. (1996). SUS: A "quick and dirty" usability scale. In P. W. Jordan, B. Thomas, B. A. Weerdmeester, & I. L. McClelland (Eds.), Usability Evaluation in Industry (pp. 189-194). Taylor & Francis.
- Sauro, J., & Lewis, J. R. (2016). Quantifying the User Experience: Practical Statistics for User Research (2nd ed.). Morgan Kaufmann.
- Lewis, J. R. (2018). The System Usability Scale: Past, present, and future. International Journal of Human-Computer Interaction, 34(7), 577-590.
- Hart, S. G., & Staveland, L. E. (1988). Development of NASA-TLX (Task Load Index): Results of empirical and theoretical research. In P. A. Hancock & N. Meshkati (Eds.), Human Mental Workload (pp. 139-183). North-Holland.
9. Seguridad, ergonomía y ética
Contexto
La capa que llega tarde a los cursos técnicos y termina siendo la más importante: privacidad como integridad contextual, vigilancia como modelo de negocio, principios de diseño que asumen que el adversario existe.
- Yee, K.-P. (2002). User interaction design for secure systems. In R. Deng, F. Bao, J. Zhou, & S. Qing (Eds.), Information and Communications Security (ICICS 2002), LNCS 2513, 278-290.
- Langheinrich, M. (2001). Privacy by design — Principles of privacy-aware ubiquitous systems. In G. D. Abowd, B. Brumitt, & S. Shafer (Eds.), Ubicomp 2001: Ubiquitous Computing, LNCS 2201, 273-291.
- Nissenbaum, H. (2010). Privacy in Context: Technology, Policy, and the Integrity of Social Life. Stanford University Press.
- Zuboff, S. (2019). The Age of Surveillance Capitalism: The Fight for a Human Future at the New Frontier of Power. PublicAffairs.
- European Union. (2024). Regulation (EU) 2024/1689 on artificial intelligence (Artificial Intelligence Act). Official Journal of the European Union.
10. Futuro de UbiComp
Contexto
Los hilos que están abriendo el siguiente capítulo: materiales que cambian de forma, interfaces que se proyectan sobre el mundo, etnografías de larga duración, regulación que entra en escena. Conviene leerlos en paralelo —no en secuencia— para tener una idea sensata de hacia dónde vamos.
- Bell, G., & Dourish, P. (2007). Yesterday's tomorrows: notes on ubiquitous computing's dominant vision. Personal and Ubiquitous Computing, 11(2), 133-143.
- Mistry, P., & Maes, P. (2009). SixthSense: A wearable gestural interface. SIGGRAPH ASIA '09: ACM SIGGRAPH ASIA 2009 Art Gallery & Emerging Technologies, 85.
- Ishii, H., Lakatos, D., Bonanni, L., & Labrune, J.-B. (2012). Radical atoms: beyond tangible bits, toward transformable materials. interactions, 19(1), 38-51.
- Weiser, M., & Brown, J. S. (1996). Designing calm technology. PowerGrid Journal, 1(1). (Vuelve a aparecer porque, a treinta años, sigue siendo el horizonte.)
- European Union. (2024). Regulation (EU) 2024/1689 on artificial intelligence (Artificial Intelligence Act). Official Journal of the European Union.
Lecturas integradoras
Contexto
Trabajos que no caben en una sola unidad porque atraviesan varias: marcos que se vuelven útiles cuando uno ya tiene los bloques individuales y necesita ver el sistema entero.
- Stephanidis, C., & Salvendy, G. (Eds.). (2024). Human-Computer Interaction in Intelligent Environments. CRC Press.
- Rogers, Y., Sharp, H., & Preece, J. (2019). Interaction Design: Beyond Human-Computer Interaction (5th ed.). Wiley.
- Dourish, P. (2001). Where the Action Is: The Foundations of Embodied Interaction. MIT Press.
- Kuniavsky, M. (2010). Smart Things: Ubiquitous Computing User Experience Design. Morgan Kaufmann.
- Buxton, B. (2007). Sketching User Experiences: Getting the Design Right and the Right Design. Morgan Kaufmann.
Cierre
Cierro este curso como abrí el primer día: la computación ubicua no es una tecnología, es una manera de habitar el mundo. Las lecturas de arriba son herramientas para esa manera. Léanlas con calma, vuelvan a ellas cuando estén diseñando, y agreguen las suyas — la lista es viva. Nos vemos en lo que sigan construyendo.