31/5/07

LHC start up!

El pasado 27 de marzo se produjo una explosión en uno de los imanes del tubo del LHC (Large Hadron Collider). El efecto inmediato fue un retraso indefinido en la fecha de inicio de las colisiones en el acelerador, y que estaba previsto para finales de 2007. A día de hoy, se conocen los motivos de la explosión y ya se han diseñado soluciones que serán puestas en práctica en estas dos primeras semanas de Junio. Sin embargo, lo que se sabe con total certeza, es que no habrá protones circulando en LHC en el 2007.

¿O sí?



Esta foto ha sido sacado hace poco en la carrera que todos los años celebra el CERN. El edificio del fondo es el 'building 40' (yo escribo esto desde ahí dentro). En la camiseta se lee 'First LHC proton of 2007' (El primer protón del LHC del 2007).

Superad eso ... frikis!

26/5/07

Programando tu móvil

La tecnología móvil es una de las que más desarrollo ha experimentado en la última década. Indudablemente la telefonía ha jugado un papel fundamental en este desarrollo, incorporando en sus aparatos más funcionalidades progresivamente. No obstante, también es este desarrollo extensible a PDA's, y muchos otros sistemas embebidos.

Uno de los últimos avances en este campo, consiste en la implantación en los dispositivos de máquinas virtuales Java que permiten correr programas multiplataforma, utilizando las librerías adecuadas.

En particular Sun Microsystems ha creado The Java ME Platform, un entorno de desarrollo para sistemas móviles, que incorpora librerías, compilador, máquina virtual, ejemplos ...

En este post no pretendo hacer una guía de cómo proceder para desarrollar un programa para móviles, aunque no tengo ningún problema en escribir otro post con esas características, si recibo muchos comentarios en esa dirección.

En el ejemplo que os muestro a continuación, simplemente he probado a jugar con unas pocas características de la User Interface del teléfono, no obstante, Java proporciona clases para manejo de: networking, imágenes, fotos, vídeos, bluetooth ...

No respondas que no ... cabezón.









Si quereis esta aplicación para vuestro móvil no teneis más que pedírmela. ¿Divertido, no?

25/5/07

GPS: German Position System

Leyendo "La Segunda Guerra Mundial" de Winston Churchill, he encontrado algunos detalles relativos a la tecnología de guerra que he considerado fascinantes.
En particular me gustaría hacer referencia en estas líneas a los métodos de posicionamiento que utilizaba la Luftwaffe alemana para hacer bombardeos de precisión.

Tras el fracaso de la invasión de la Gran Bretaña por parte de los alemanes (operación León Marino), el jefe de la fuerza aerea alemana, Göring, pretendía forzar una capitulación británica a base de fuertes bombardeos de castigo, inicialmente sobre Londres, y en una segunda fase extendido a las principales ciudades inglesas.

Debido a que los bombardeos habían de producirse eminentemente durante la noche para burlar las defensas antiaéreas, y en parte también al característico clima nuboso inglés, la visibilidad de los pilotos alemanes era muy limitada, y en consecuencia el bombardeo no podía realizarse con ninguna precisión.
Los alemanes, sin embargo, superaron este obstáculo recurriendo al ingenio y la técnica.

  • El sistema "Knickebein ". Suponía la existencia de dos o más antenas de emisión de radio en las costas francesas. Cada una de ellas emitía pulsos altamente direccionales apuntando al objetivo, usualmente Londres. Los aviones alemanes volaban a lo largo de una de las líneas de radio, y disponían de un sistema automatizado, de forma que cuando se detectaba un segundo pulso, las bombas eran descargadas.



  • El sistema "X-Gerät". Los alemanes fueron capaces de emitir en frecuencias de radio más altas, consiguiendo de esta forma, pulsos más estrechos y direccionales. Esto permitió la existencia de un haz principal más ancho que servía de guía a los aviones durante el trayecto, y de otros tres más estrechos que marcaban la distancia al objetivo (primer haz: 100km del objetivo, segundo haz: 50km del objetivo, tercer haz: 20km del objetivo).



  • El sistema "Y-Gerät". El servicio secreto británico descubrió el principio de funcionamiento de los sistemas anteriores, y rápidamente se desarrollaron una gran cantidad de antenas, a lo largo de toda Gran Bretaña, que emitían haces de corte falsos, para provocar bombardeos en zonas sin población. Rápidamente Alemania reaccionó con este último sistema: tan sólo se usaba un rayo direccional que era seguido por los aviones. En todo momento los aviones devolvían los pulsos a las bases alemanes permitiéndo el cálculo de la distancia recorrida. Cuando esta distancia era la apropiada, se enviaba la señal de bombardeo.
Finalmente Inglaterra fue capaz de trucar todos y cada uno de los sistemas alemanes, dando lugar a situaciones extremas, como por ejemplo, el hecho de que aviones alemanes, desorientados, aterrizasen voluntariamente en suelo británico, creyendo estar en Francia. Sin embargo, la reacción británica no fue siempre inmediata y Alemania tuvo periodos de clara superioridad.

En esta última imagen os muestro una antena de emisión del sistema Y-Gerät encontrada en Francia.




Y para finalizar, me basta con hacer referencia a esa reflexión que imagino todos nos hacemos ...

20/5/07

Gervasio Da Vinci


Aquí teneis una genial foto, de mi amigo Gervasio al más puro estilo renacentista. La corona circundante es una estructura llamada Link Disk, que forma parte del sistema link de alineamiento del detector de partículas CMS en el que estamos trabajando.

Este año, o a lo sumo el próximo CMS y LHC (el acelerador que producirá las colisiones que CMS estudiará) habrán sido completados y el experimento comenzará a funcionar en las dependencias del CERN. Deseadnos suerte!

Dos ascensores, ¿Doble diversión?

Vivo en un edificio de 10 plantas, que alberga un total de 40 viviendas, repartidas en dos escaleras, habiendo 2 ascensores por cada una de ellas.

Desde hace tiempo, y en este contexto, vengo observando un fenómeno curioso y diría que muy típicamente propio del ser humano. La gente, yo mismo, impacientes por naturaleza, tenemos la tendencia de llamar a los dos ascensores cada vez que deseamos subir y/o bajar. El motivo de esta conducta es, sin lugar a dudas, cierto sentimiento de economía temporal: llamar a los dos garantiza la elección de coger el más cercano.

En un intento de vislumbrar cuánto de verdadero y razonable hay en esta conducta que observo en mi edificio, he construido un pequeño modelo matemático que simula el problema en cuestión.
Las características y simplificaciones del modelo son las siguientes:


  • El uso de los ascensores en un edificio es un proceso relativamente complejo debido a que depende de forma intrínseca de la actividad de las personas. Sin embargo, hay situaciones especiales más fáciles de describir. El modelo que aquí se desarrolla está optimizado para tener en cuenta la actividad de los ascensores en el intervalo entre las 7,00 am y las 10,00 am de un día laboral normal, en el que la mayor parte de los ocupantes del edificio utilizan los ascensores para bajar de sus casas y desplazarse a sus trabajos, colegios, y/o a la calle en general.

  • En virtud del punto anterior, se considera una buena aproximación, suponer que en el intervalo estudiado, los ascensores serán utilizados por M personas, cada una de las cuales provendrá del piso Pk, siendo la distribución estadística de Pk uniforme. Esto encapsula el hecho de que no en todos los pisos vive el mismo número de personas, o de que muchos de los viajes desde un piso son compartidos por varias personas.

  • La posibilidad de que un ascensor sea compartido por personas de diferentes pisos es despreciada, ya que no es demasiado frecuente.

  • El consumo energético del ascensor se toma de forma ideal como igual al incremento de energía potencial (masa*gravedad*altura) en el caso de subida, e igual a 0 en caso de bajada. La masa del ascensor se ha tomado de valores típicos encontrados por la red, y más o menos del orden de los 600Kg. La altura de cada piso es de 3 metros.

  • La velocidad del ascensor se ha tomado como de 3 metros cada 1.5 segundos.

Finalmente, y en lugar de calcular teóricamente las distribuciones estadísticas asociadas al ahorro de tiempo, o al consumo energético, se ha realizado una sencilla simulación de Monte Carlo (sobre 10000 días).

Los resultados pueden observarse en las dos figuras adjuntas. La primera de ellas describe el derroche de energía (en KiloJoules) que se produce diariamente, debido al hecho de llamar a los dos ascensores a la vez, y considerando únicamente el intervalo de tiempo nombrado en las bases del modelo. La media de esta distribución ha de ser tomada como una cota inferior ya que en la simulación se han considerado sólo 40 personas (una por vivienda), y sobre todo por el hecho de que se está asumiendo que el ascensor es de una eficiencia perfecta (aprovecha toda la energía para levantarse, y no consume nada cuando desciende).

La segunda describe la distribución del ahorro de tiempo.




La conclusión es la siguiente:

Aproximadamente cada mañana mi edificio quema (como poco) el equivalente a 4 litros útiles de gasolina (es fácil convertir los kilojulios en litros útiles de gasolina), para obtener un ahorro típico de 8 segundos.

¿Y en el tuyo?

11/5/07

"Celebro"


En el año 2003 asistí en mi Universidad a un curso de Verano titulado "Inteligencia Artificial" bajo la tutela de la Escuela de Ingenieros Industriales y de Telecomunicación. He de decir, que el curso me resultó bastante aburrido, al centrarse fundamentalmente en la aplicación de ciertas técnicas de IA a la resolución de problemas prácticos de ingeniería, lo cuál en principio no despartaba gran interés en mí (admirador de Marvin Minsky y por tanto con un corte más soñador).

Me entretenía, sin embargo, durante aquellas clases, a desarrollar un pequeño juego basado en el concepto de las redes neuronales artificiales (RNA).

Las redes neuronales son sistemas de cálculo, que "imitan" la estructura del sistema nervioso de los seres vivos. Habitualmente suelen estar compuestas por una matriz de nxm nodos o neuronas. A cada una de las filas se le conoce como capa, y particularme la capa primera y la capa final como entrada y salida.
No existe, en principio, comunicación alguna entre nodos de una misma capa, pero cada nodo está conectado al resto de nodos de la capa siguiente.
La dinámica del sistema queda determinada por las funciones características de cada nodo:

  • Función de inhibición: Esta función se aplica sobre los datos provenientes de los nodos de la capa anterior. Generalmente suele ser el sumatorio de las entradas, pesadas por unos valores específicos. Si esta función es positiva suele hablarse de una excitación, mientras que por el contrario si es negativa suele hablar de una inhibición.
  • Función de activación: Una nueva función que se aplica sobre el resultado de la función de inhibición. En muchas ocasiones esta función no existe.
  • Función de transferencia: Se aplica sobre el valor devuelto por la función de activación. Suele ser una forma de normalizar la salida, y de uso habitual es una función de tipo sigmoide (para obtener valores entre 0 y 1).
La característica principal de las redes neuronales es su capacidad para "aprender". Es lo que se conoce como "Entrenamiento" de una red neuronal. Si de forma sucesiva se le proporcionan a la red, los valores de entrada y los valores correctos de salida, ésta es capaz de modificar los pesos de su función de inhibición hasta ser capaz de implementar con bastante precisión la función específica para la que ha sido entrenada.

No voy a ir más allá en esta descripción, y tampoco voy a dar referencias, debido a la inmensa cantidad de información que hay en la red sobre este tema.

Por el contrario, retomo la historia del pequeño juego que desarrollé (y posteriormente implementé) en aquel curso de IA. La idea fue hacer una red neuronal sin las simplificaciones habituales:
  • Si bien se partió de una matriz de nodos (40x40 exactamente), no existía una estructura de capas en el sentido de que la capa primera actue como entrada y la capa última como salida. Todos los nodos del borde de la matriz estaban conectados al exterior, y en cualquier momento podían recibir entradas o "impulsos" del usuario. De la misma forma los cálculos no se hacían capa a capa, sino con un bucle que barría toda la matriz en cada iteración.
  • Los nodos tenían conexiones locales: sólo podían comunicarse con aquellos nodos que estuviesen contiguos. Esto limitaba el número de conexiones, pero permitía que la conexión fuese en cualquier dirección.
  • Las funciones características de cada nodo lejos de ser lineales, contenían elementos altamente no lineales y acotados para impedir crecimientos desmedidos.
  • El nodo adquirió cierta individualidad, al definirse la variable "calidad". El nodo constantemente buscaba maximizar esta variable, modificándose a sí mismo a través de sus funciones características para lograrlo.
  • La red era cíclica. No respondía a la estructura entrada-salida sino que "pensaba" permanentemente.
Decidí llamar a este artefacto "Celebro", y a la información retenida en los nodos en cada iteración "Pensamiento". La cantidad de pensamiento generado por "Celebro" era aproximadamente de 1Mb cada 10 segundos (en mi antigua máquina, cuyas características no recuerdo muy bien).

Sin embargo, lo más divertido y fascinante de toda esto, sobrevino cuando comencé a analizar el "Pensamiento" en función de los impulsos que yo introducía en Celebro. Concretamente, llegado un momento, me interesé por introducir impulsos desmesurados en zonas pequeñas del borde (1 o 2 nodos). Pude observar cómo esos impulsos generaban una gran actividad en los nodos circundantes, y poco a poco se propagaban hasta afectar rápidamente a todo el "Celebro". Con el tiempo, sin embargo, la actividad se detenía y volvía a los niveles habituales. Probé a introducir estos impulsos de forma más o menos periódica. Observando más o menos reacciones parecidas. Pero tras suministrar varios impulsos de este tipo observé el siguiente y fascinante efecto:
Celebro comenzó a generar él solo, a través de los nodos frontera, impulsos parecidos a los que yo introducía, y que tanta actividad le reportaban.
Quise reproducir el efecto, y pude aproximadamente ver que era un comportamiento general. Si hiperestimulabas a "Celebro" de forma periódica, llegaba un momento en que aunque dejases de estimular, él sólo era capaz de generar sus estímulos.

En este momento comprendí que había creado un yonki.

8/5/07

Filtrado de IP's en Redes P2P


Creo que todo el mundo que use un ordenador que disponga de
acceso a Internet habra tenido una relación al menos superficial
con las redes de intercambio de archivos Peer to Peer (P2P).

Si como yo estás en España, lo mas probable es que probaras Napster, Kazaa,
eDonkey, quizás Peer2Mail y sobre todo eMule y algún cliente bittorrent, como
Azureus o Ares (que ahora esta pegando fuerte) o alguna de sus variantes
según utilizes un sistema operativo u otro.

Sin entrar en detalles técnicos veremos un par de consejillos de seguridad
a seguir en la práctica del noble arte de la compartición de archivos.



A la orden del dia estan las noticias en las que tal discográfica o
tal empresa gestora de derechos denuncia a alguien por descarga de archivos
o "pirateria"

Pero... ¿cómo les cogen?

Pues, por ejemplo, rastreando quién comparte el archivo que se quiera controlar, y esto
se hace tanto activamente, buscando dichos archivos como un usuario normal
haría para iniciar la descarga y registrando las direcciones de los clientes
involucrados en la misma, cómo pasivamente, compartiendolos desde
el propio ordenador y registrando las direcciones de aquellos que contactan
con él para descargarlo.

De la misma manera que estas entidades realizan este tipo de rastreos y busquedas
en base a la dirección IP de los usuarios, ciertos usuarios realizan listas
con rangos de direcciones IP desde los que se inician este tipo de actividades
(u otras como inserción de archivos contaminados, archivos falsos o materiales
sospechosos por algún u otro motivo) que puedes usar para bloquear las interacciones
de tu ordenador con dichas maquinas.

Un extracto de uno de estos archivos:

000.000.000.000 - 002.255.255.255 , 000 , Bogon, IANA Reserved, invalid ips
003.000.000.000 - 003.255.255.255 , 000 , General Electric Company
004.000.025.146 - 004.000.025.148 , 000 , s0-0.ciscoseattle.bbnplanet.net
004.000.026.014 - 004.000.029.024 , 000 , p1-0.cisco.bbnplanet.net
004.000.032.062 - 004.000.033.004 , 000 , s0-1.cham.bbnplanet.net
004.002.144.000 - 004.002.144.031 , 000 , Education Management Corp.
004.002.144.032 - 004.002.144.047 , 000 , International Generating Co.
004.002.144.064 - 004.002.144.095 , 000 , Cisco Systems, Inc
004.002.144.224 - 004.002.144.231 , 000 , Drug Enforcement Adm
004.002.144.248 - 004.002.144.255 , 000 , US Dept of Treasury - TIGTA

¿Y hasta que punto estas expuesto a esto cuando bajas algun archivo?

Cómo ejemplo, al bajar dos archivos con un numero medio de fuentes
iniciales reportadas (en torno a 70):

Servidores filtrados: 3019
Clientes contactados: 2267
Clientres filtrados: 137
Clientes Baneados: 13

Lo cual supone un 6.7% de clientes pertenecientes a rangos de direcciones
sospechosos, si bien la estadistica no es muy confiable por falta de
datos. (Más información al respecto en el futuro)

A parte de utilizar una de estas listas como medio de protección (convendría
buscar
una especialmente diseñada para tu zona/pais),
no olvidar que no es
recomendable
utilizar nombres facilmente
reconocibles en las redes P2P de
compartición de archivos
(yo recomiendo
dejar el nombre por defecto
o aceptar uno aleatorio cada conexión), así
como siempre bloquear
la visibilidad de la lista de tus archivos
compartidos.

Para mas información al respecto, :
The P2P War: Someone is monitoring your activities!

7/5/07

Gracias (Remota Rutina)

En las costas vibrantes de tu espalda se adivina el contorno de tus pechos apoyados sobre el colchon. Me acabo de despertar, los ojos recien abiertos, tras la monotona alarma...lanzo un beso al aire con la esperanza de que moje tus labios. Hemos dormido abrazados toda la noche y tu cabello revuelto se esparce ahora sobre mi brazo derecho.

Me arrastro hasta tus hombros y comienzo a lamerlos; contestas con el primer ronroneo y las prisas se disipan. Cuanto me agrada despertarte e inaugurar el alba con caricias. Cuando despues de amarnos ya sabemos que llegaremos tarde...

Un café con leche y tu sonrisa sobre la mesa siempre sucia: Soy un poco desastre, pero hay pan tostado, mantequilla y mermelada. El ritmo de la mañana a tu lado: Neil young esta en la playa, como nuestros corazones en agosto, tan llenos de arena por revolcarnos sobre oro. Dentro de poco llega el otoño. Dentro de poco llega el otoño.

Buenos dias Amor. Las hojas estan empezando a caer y la primera lluvia en semanas ha llegado. Nunca tuve miedo a los refriados, y ahora mucho menos, pues tengo tu calor que me guarda de las noches duras y templa los madrugones: Alegria de mis manos, lenitivo en las heladas...