¿Qué es el tiempo?

Hace ya más de tres años escribí un artículo sobre un programa de Redes, en el que trataron ciertos aspectos relativos a la memoria humana y a cómo está relacionada con nuestra percepción del tiempo. Los científicos parecen estar de acuerdo en que sentimos que el tiempo pasa más despacio cuando lo llenamos de experiencias novedosas, lo que explica por ejemplo por qué sentimos que los días pasan más rápido conforme nos hacemos mayores (snif), o por qué recordamos hechos traumáticos como una duración mayor de la que en realidad tuvieron.

Últimamente he invertido algunos ratos libres en ponerme al día con Redes, aprovechando que ahora publican los programas en su blog y no hay que estar despierto hasta las dos de la madrugada. En su programa número 20 titulado «Qué es el tiempo» entrevistaron a David Eagleman, director del Laboratorio para la Percepción y la Acción de la Escuela Médica de la Universidad de Texas.

La principal consecuencia que se puede extraer de sus estudios es que el cerebro obtiene información de muchos sentidos a velocidades muy distintas, y necesita hacer cierto trabajo para unir todas estas percepciones en una sola. En la entrevista, Eagleman pone un ejemplo que me parece muy significativo:

En los primeros tiempos de la televisio?n, los ingenieros estudiaban co?mo se podi?an enviar las sen?ales de audio y las visuales, y asegurarse de que estuvieran sincronizadas. Lo que descubrieron por casualidad es que no es necesario que este?n sincronizadas porque hay una ventana de una de?cima de segundo en la que las sen?ales pueden estar desfasadas pero el cerebro de los espectadores las sincronizara?.

Es decir, que nuestra percepción de la vida siempre va un poco por detrás de la realidad. Pero hay más:

La consecuencia es que cuando pensamos que se produce el «momento ahora», el «momento ahora» ya sucedio? hace mucho tiempo y las sen?ales cerebrales se han ido moviendo, hemos tenido que recopilar toda la informacio?n, compararla y entonces es cuando vemos el «momento ahora».

En el programa dan algunas pistas prácticas para entender todo esto y pillar a nuestro propio cerebro haciendo de las suyas. Por ejemplo, cuando nos ponemos frente a un espejo y miramos nuestro ojo izquierdo y el derecho alternativamente, nunca vemos nuestros propios ojos moverse. O cuando nos observamos las manecillas de un reloj, a veces nos parece que el primer segundo tarda un poco más en transcurrir…

Hoy me he tomado el día libre. Quizá sea el primero en varios meses, pero no podía haberlo elegido mejor. Hace un tiempo maravilloso. Hoy las horas están pasando lentas, llenas de experiencias olvidadas por culpa del invierno y del trabajo, la mayoría de ellas tan sencillas como dar un paseo, cocinar despacio, sentarse a escribir sobre lo que quieres o simplemente pensar.

Actualización: En los comentarios Trebol-a me da el soplo de que en el canal RSS de blip.tv están disponibles los archivos con los programas en formato mov, de manera que pueden descargarse :-) ¡Gracias!

El protocolo Patata Caliente

patata.jpgA petición popular, voy a explicar cómo nos las arreglamos para diseñar un protocolo que permitiera jugar a la patata caliente por Internet. Normalmente los servicios que se ofrecen en Internet (Web, email, noticias, telefonía, intercambio de ficheros…) están soportados por protocolos específicos diseñados a tal efecto. Así, por ejemplo, el servicio web es soportado por el protocolo HTTP, y el de intercambio de ficheros por el protocolo FTP.

Todos podemos ofrecer un servicio en Internet: sólo necesitamos un servidor que permita la ejecución de tal servicio. Por ejemplo, yo puedo crear un servicio que sume dos números. Creo un programa que «escuche» en la línea telefónica de mi ordenador peticiones de realizar una suma. Cuando recibe una, la procesa y devuelve al equipo que envió la petición y los números, la suma de ambos. Todo esto puede sonar complicado, pero en realidad es muy sencillo. De ahí su éxito. De hecho, la red Internet como cableado e infraestructura es solo eso: un esqueleto. Los músculos son los servicios.

Una vez que tenemos un servidor ofreciendo una funcionalidad, necesitamos un cliente. En el programa que suma dos números, el cliente enviaría al servidor un saludo y los dos números, y quedaría a la espera del resultado. Éste esquema es el más utilizado en la teleinformática, y se denomina «modelo cliente-servidor» por razones obvias.

Cuando se nos planteó el desafío de crear un servicio «Patata Caliente» nos asustamos un poco, pero luego vimos que en realidad es algo muy simple. Hicimos un programa en lenguaje C del que no puedo dar código ni detalles hasta que mi compañero de prácticas realice la defensa en el mes de julio, para evitar que alguien presente un código equivalente y le suspendan…

Esencialmente, el programa se pone a la escucha de las peticiones que entren por un puerto concreto. Cuando le llega un «Hola» se pone a trabajar, enviando una pregunta. Un ejemplo de pregunta es «¿Cuándo mide el Everest?». La pregunta llega al cliente, que queda a la espera de que el usuario escriba la respuesta. Cuando se teclea un número, el cliente envía la respuesta dada por el usuario al servidor. El servidor la compara con la solución, y según sea mayor, menos o igual que la respuesta que proporcionó el usuario, responde. También decrementa el número de intentos y lo envía de vuelta.

El programa cliente recibe si el dato que el usuario proporcionó es la solución. En ese caso, presenta un mensaje de enhorabuena. En otro, indica si la respuesta es mayor o menor a la última dada. Comprueba asimismo que el usuario se encuentre dentro del número de intentos permitido.

El esquema es sencillo: el cliente se encarga interactuar con el usuario, como lo hace con nosotros el Firefox. Envía las respuestas de éste al servidor, quien se encarga de procesarlas adecuadamente, como hace un servidor web cuando el navegador solicita una web.

Espero haber aclarado algo. Tal vez esta información sólo sirva a quienes tengan algo más de experiencia en informática, pero siempre está bien tener una idea, al menos aproximada, de cómo funcionan las cosas.

Protocolos y otras bestias

¿Qué es un protocolo? ¿Qué pinta ese «http» en la barra del navegador? En la sociedad identificamos ésta palabra con un conjunto de normas o convenciones que usamos al relacionarnos con otros. En cierto sentido, el protocolo es necesario a todos los niveles, por cuanto nos proporciona una seguridad, una forma de «hacer las cosas» que sabemos que está aceptada por el resto.

En informática también hay protocolos. Al igual que no es lo mismo cenar con el Rey que tomar un café con el embajador de Francia, no es lo mismo ver una página que enviar un correo electrónico.

Hemos dicho que podemos necesitar de un protocolo al relacionarnos con otras personas (en un contexto más o menos formal). De la misma forma, cuando a través de nuestro ordenador nos relacionamos con otras máquinas, vamos a necesitar de un protocolo: una serie de normas convencionales que rijan los parámetros de nuestra comunicación.

Muchas de las tareas que realizamos diariamente requieren la comunicación de nuestra máquina con un equipo remoto. La más frecuente consiste en ver una página web. Para ello, nuestro navegador de Internet pide al servidor (www.google.com, por ejemplo) que le envíe una página en concreto alojada en ese dominio. El servidor asiente y envía la página, y a su vez nuestro navegador la recibe y la presenta en pantalla. Toda esta comunicación tiene lugar a través del cable que nos une con Internet, aunque en vez de consistir en una secuencia desordenada de bits, está dirigida por las normas del protocolo que utlicemos.

Todos los clientes (por ejemplo el navegador) y los servidores (por ejemplo, los de páginas web) utilizan el mismo protocolo para entenderse. Estas normas se aplican en todos los servicios de Internet. Así, existe un protocolo que define cómo tiene que ser la comunicación para que un navegador solicite una página web. Este protocolo se denomina HTTP (HyperText Transfer Protocol, o Protocolo de Transferencia de Hipertexto). También existe un protocolo que define cómo tiene que ser la comunicación para descargar correo electrónico, o un protocolo que concreta la comunicación en la transferencia de ficheros entre equipos (FTP, File Transfer Protocol, o Protocolo de Transferencia de Ficheros)

Hay un montón de protocolos, muchos más de los que puede imaginar. Una práctica de la asignatura de Redes fue diseñar un protocolo de comunicación entre un cliente y un servidor para jugar a «la patata caliente». Muy entretenido, aunque sufrimos lo nuestro. Si no sabe muy bien qué va a hacer con estos nuevos conocimientos, espere nuevas entregas :-P