Cassini-Huygens

Ciencia — Lunes 27 de Diciembre de 2004, 12:42

Tras viajar siete años a bordo de la nave Cassini, la sonda Huygens iniciaba durante esta madrugada un viaje solitario que la llevará a atravesar el 14 de enero la atmósfera de la luna más grande de Saturno: Titán. A la sonda Huygens le tomará 20 días llegar a destino luego de haberse separado de la nave.



El fin del proyecto conjunto de las agencias espaciales de EE.UU. (Nasa), Europa (ESA) e Italia (ASI) es recoger datos de un ambiente que, según los científicos, se asemejaría al existente en la Tierra en la época en la que aparecieron las primeras formas de vida. Titán es, de hecho, la única luna del Sistema Solar que tiene una atmósfera densa y rica en material orgánico. La misión cuesta 2705 millones de euros y durante su travesía ha recorrido 3200 millones de kilómetros.

La nave central fue colocada el 17 de diciembre en una trayectoria controlada de colisión con Titán, a unos 1250 millones de kilómetros de la Tierra, que le permitió liberar la sonda Huygens poniéndola en la ruta correcta. La separación se produjo a las 02:00 hs GMT. Unos minutos más tarde, Cassini giró hacia la Tierra para enviar la señal que confirmaba la separación.

En el momento de la separación, la nave nodriza debió girar sus antenas de espaldas a la Tierra, por lo que los científicos no dispusieron de datos en tiempo real sobre la operación. Una vez que pudo girar sus emisores con dirección a la Tierra, la señal tardó una hora y ocho minutos en recorrer los millones de kilómetros a los que se encuentra el vehículo espacial.

Como nota de color imagínense, si ustedes se ponen nerviosos cuando la computadora no responde a un click a los cinco o diez segundos, lo que debe sufrir esta gente que está controlando la nave a tanta distancia y tienen tanta demora para interactuar con la misma!

Vida artificial

General — Viernes 24 de Diciembre de 2004, 07:17

El otro día surgió una discusión en la lista de correo de PyAr sobre algoritmos genéticos y vida artificial. La charla estuvo interesante y me dejó pensando, leí algo de bibliografía y sinteticé lo siguiente.

Con el propósito de experimentar con formas de vida, tenemos dos alternativas para simular:
  • La realidad: Lograr en un experimento de simulación, mediante evolución, lo mismo que logró la naturaleza, de manera de poder predecir que hubiese pasado si las condiciones de contexto son distintas (y poder "deducir" qué tipo de vida habría en un planeta con diez grados de temperatura promedio menos, por ejemplo).
  • Una vida artificial: En este caso el propósito es predecir como se comportarían entes que luego se construirían con las mismas reglas que las simuladas. Basándonos en el tipo de vida artificial, tenemos dos opciones totalmente distintas: a) Software: Los entes serían solamente programas; b) Hardware: Los entes serían elementos electromecánicos.
El punto que me interesaría explorar es una mezcla de la realidad con la vida artificial de elementos de hardware. De esta manera podríamos estudiar como evolucionarían nano-robots en un determinado ecosistema, tomando elementos de la vida real para lograr perfilar y mejorar el diseño físico y de comportamiento de estos entes.

A nivel de la simulación, me gustaría mucho lograr una simulación de un ecosistema que parta de una "sopa" de componentes básicos, que se vayan formando entes y que por simple evolución estos entes lleguen a ser algo útil. Esta sopa de componentes básicos no es sencillo de definir, e influye enormemente en el desarrollo del experimento (tanto cuales son, como sus características y las reglas a que someten al resto).

Tenemos dos tipos básicos de componentes, los de contexto y los formativos. Los formativos son partes del ente a crear, y están diseminados en la sopa para que por simple azar se formen los entes más variados. Para comenzar a formarse el ente y para ir tomando nuevos componentes, sólo hace falta una simple colisión y una probabilidad de incorporación (esta probabilidad tiene un componente de azar y un componente que es más chico cuanto más grande es el ente, para evitar que crezcan demasiado). Algunos componentes formativos pueden ser:
  • Sensores: Generan una señal cuyo valor es más alto cuanto más cerca tienen el elemento a sensar. La principal característica es que solamente sensan un elemento, el cual puede ser cualquiera de los componentes de la sopa (es muy útil incorporar un sensor de Comida, por ejemplo). Otra característica es la sensibilidad: un sensor burdo puede indicar un 1 cuando tiene una Comida a dos posiciones de distancia, y otro puede indicar con la misma señal una Comida a 10 posiciones. Los sensores pueden ser direccionales (que cubran 120 grados en una dirección, por ejemplo) u omnidireccionales.
  • Transmisores: Transmiten la señal recibida de los distintos sensores con los que tienen contacto físico. Los transmisores pueden tener distintos tamaños, los que les permiten agrupar más o menos sensores. El transmisor adquirirá sensores una vez que esté unido a un Procesador. El algoritmo con el cual procesa las señales de los distintos sensores es una característica del transmisor (puede ser que sume todo, que saque un promedio, que filtre todo excepto los de Comida, etc.)
  • Actuadores: Hay de dos tipos: Movimiento y Agresión. Los de movimiento permiten al ente desplazarse en la dirección requerida y no solamente flotar en la sopa; si el ente tiene más de un actuador de movimiento, la "intención de desplazamiento" se calculará como la suma vectorial del actuador que esté activo en ese momento (a esta intención luego se le suma vectorialmente el movimiento infligido por la sopa, y de allí se calculará el movimiento real, que es discreto y se cuenta en posiciones). Los actuadores de Agresión pueden ser activos o pasivos; los activos quitan energía a los otros entes (en función de que parte de los otros entes toquen), mientras que los pasivos protegen del exterior (pero a su vez evitan incorporar nuevos elementos).
  • Procesador: El procesador es el que controla al ente. Lo gobierna con un algoritmo que especifica las acciones que quiere realizar en función de sus capacidades y de la información que reciba (por ejemplo, si tiene muchos sensores que indican comida para un costado, puede indicarle a sus actuadores que intenten desplazarse para allí; o si tiene un muy bajo nivel de energía puede decidir no hacer nada que consuma la misma y flotar en estado de "hibernación" hasta que encuentre comida y pueda restaurar sus funciones básicas). Lo interesante de este procesador es que el algoritmo de control no debe ser programado por el usuario, sino que tiene que ser desarrollado por el mismo procesador, aunque no tiene una libertad total para ello: en función de que los elementos del universo son finitos (hay determinados tipos de sensores, etc), se puede preestablecer el programa que evalua las entradas para decidir las salidas, pero como se combina cada cosa y en que grado lo irá decidiendo (o aprendiendo)el procesador.
Los componentes de contexto pueden ser los siguientes:
  • Comida: Si el ente se encuentra con ella, puede aprovecharla y aumentar su nivel de energía.
  • Peligros: Pueden haber elementos dañinos a los distintos componentes (por ejemplo: un anti-sensor).
Tenemos un componente global a todos que se llama Kronos: va marcando el reloj de la vida en el experimento, y como dios que es, maneja los elementos de la sopa. En otras palabras, es el programa que, por ejemplo, se fija cuales entes deben moverse, que pasa si dos se chocan, mueve los elementos de la sopa al azar, genera nuevos elementos para la sopa, se fija si un ente choca con un elemento y si debe incorporarlo o no, etc.

Un punto importante en las reglas de la sopa es la reproducción: cómo a partir de dos (¡o más!) entes generamos uno nuevo. Esto no lo tengo todavía razonado del todo, pero podría ser basicamente una generación de un nuevo ente (administrada por Kronos) a partir de elementos de los padres. Aquí tenemos que incluir los conceptos de herencia (el hijo debe parecerse a los padres), mutación (cambios al azar para que los hijos no sean una copia fiel de los padres) y cruces (el hijo debe parecerse a ambos padres). Se necesita también estudiar como la reproducción afecta a los padres (baja de energía, pérdida de partes, limitaciones en las decisiones de movilidad, etc) y un montón de otros detalles (por ejemplo, cómo los padres protegerán al crío hasta que crezca, es decir, hasta que incorpore los elementos necesarios para su propia supervivencia).

Quedan muchísimos otros puntos para ver, desde el refinamiento de las reglas que mencioné aquí hasta la inclusion de nuevos elementos (por ejemplo, Comunicadores para que los entes intercambien "ideas", o actuadores de Cópula para ajustar más el mecanismo de reproducción, o mejores reglas para definir la mutación y el intercambio del ser creado).



Firefox sigue ganando terreno

Software — Lunes 13 de Diciembre de 2004, 07:37

Otra marca importante para Firefox: en menos de 32 días fueron bajado 10 millones de instaladores.


Todavía no encontré un lugar confiable como para revisar periodicamente figuras de porción de mercado entre todos los navegadores, pero es obvio que Firefox va erosionando despacio pero constantemente la base de usuarios de Internet Explorer.

Esto se logró, más allá de la soberbia calidad y funcionalidad del producto, por campañas masivas de marketing a través de la ayuda gratuita de colaboradores y amigos de Firefox, que como yo, le taladran la cabeza con que usen Firefox al primero que se cruce, :). Estas campañas se centran y coordinan en SpreadFirefox.

Otro producto que por ahora no tiene tanta publicidad, pero que seguramente le llegará por haber llegado a su versión 1.0, es Thunderbird, un lector de correo/noticias de muy buena calidad, con características como: soporte IMAP/POP, correo HTML, etiquetas, búsqueda rápida, libreta de direcciones inteligente, acuses de recibo, filtrado avanzado de mensajes, completado de direcciones LDAP, herramientas de importación, potencia en búsquedas y, además, la capacidad de manejar múltiples cuentas de correo electrónico y noticias.

Python 2.4

Python — Martes 30 de Noviembre de 2004, 09:58

La última versión de Python ya está en la calle. Esta es una release final y estable, y se recomienda a los usuarios que actualicen a esta versión.

Python 2.4 es el resultado de casi 18 meses de trabajo sobre la versión anterior, Py2.3, y representa otra etapa en la cuidadosa evolución del lenguaje. Se mantuvieron al mínimo las nuevas características de Python, se corrigieron muchos bugs y se realizó una importante variedad de mejoras.

Entre los cambios más importantes tenemos decoradores de funciones, expresiones generadoras, mejoras al importar los módulos, y bastantes nuevos módulos (incluyendo subprocess, decimal y cookielib).

Para seguir investigando mire el What's New In Python de Andrew Kuchling, los puntos sobresalientes de esta versión, y las notas detalladas sobre Python 2.4.

Para más información y bajar los instaladores, vaya a la página oficial.

Tristeza...

General — Miércoles 24 de Noviembre de 2004, 03:26

...es lo único que se puede sentir cuando se va un grande.



Adolfo Castelo, Maestro.


Aritmética Decimal

Python — Martes 23 de Noviembre de 2004, 17:03

Puse disponible en la web, accesible facilmente las instrucciones de cómo bajar e instalar en Python 2.3 el módulo decimal.py (en castellano y en inglés).



Funcionalidad

General — Martes 16 de Noviembre de 2004, 12:20

Agarré el documento que había recibido por fax, lo leí y decidí llamar a uno de los técnicos que figuraba en el pequeño informe (solamente una página).

Tomé el celular y le saqué una foto al impreso. El teléfono hizo OCR (Optical Character Recognition, reconocimiento óptico de caracteres), y extrajo todos los nombres de personas. Uno de los nombres, el remitente del fax, estaba entre mis contactos del teléfono. Para los otros nombres, el teléfono tuvo que conectarse a Internet y averiguar los números en la WMN (Worldwide Mobile Numbers, números de celulares del mundo), a la cual estoy subscripto.

Diez segundos después de decidir hacer la llamada, el teléfono ya me ofrecía los cuatros posibles números. Elegí uno y llamé. Contando el sacar la foto solamente fueron cuatro golpes de "botón" y nada más.

(La historia anterior transcurre en un probable futuro.)



Redescubre la Web

Software — Jueves 11 de Noviembre de 2004, 05:02

Instalé Firefox 1.0 en casa.

Lo bajé enseguida porque no pesa mucho (2-3 minutos por ADSL, 10-12 minutos por teléfono), y se instaló sin absolutamente ningún problema.

Realmente no tiene muchas modificaciones con respecto a sus anteriores versiones: todas ellas fueron aproximándose a lo que es ahora la versión oficial. Pero una funcionalidad me encantó: si se entra a una página donde, para ver determinado contenido multimedia, se necesita un plug-in que no se tiene instalado, lo ofrece bajar e instalar desde el mismo navegador, por supuesto siempre considerando la seguridad como un no-negociable.

La otra característica que me encanta es cómo se buscan palabras o frases en la página. Comparada con la interfaz de búsqueda del Internet Explorer, que era obsoleta en 1996, la barra de búsqueda de Firefox es fantástica: permite irse desplazándose entre las coincidencias, realimenta al usuario mientras escribe sobre si está o no lo que está buscando, permite resaltar las coincidencias, etc. y todo de una forma completamente intuitiva y no intrusiva: ¡tienen que probarlo!.

Si quieren conocer más características de este fantástico navegador, sigan con la descripción de Chaghi.




Bowling y cita

General — Jueves 04 de Noviembre de 2004, 09:31

Bowling


Ayer el equipo Los y Las del "22" salió campeón del Primer Torneo de Bowling de Unifón, por más de 100 pinos sobre el equipo segundo, trayendo un nuevo trofeo a la Dirección de Red. Felicitaciones a Ximena, Pablo, Hugo y Leandro (de izquierda a derecha en la foto).




Cita


Primer la aclaración, para que entiendan lo que sigue: Top-posting es la acción de responder a un mail escribiendo al principio del mail, dejando el texto anterior abajo.

Respuesta: Porque arruina el órden en que la gente normalmente lee un texto.
Pregunta: ¿Por qué el top-posting es tan malo?
Respuesta: Top-posting.
Pregunta: ¿Qué es lo más molesto de las listas de correo?


El Arte de la Programación Unix

Software — Miércoles 03 de Noviembre de 2004, 12:29

Estoy leyendo el espectacular libro de Eric S. Raymond titulado "The Art of Unix Programming". Lo pueden comprar, si quieren, pero también está disponible en la web (sí, ¡gratis!)

Muy recomendable para todos los que programan y/o gastan parte de su tiempo trabajando/estudiando/jugando con Unix o Linux.

Una cita que me encantó, sacada del libro: "Premature optimization is the root of all evil" (La optimización prematura es la madre de todos los males), de Donald Knuth.


Liberación oficial del blog

General — Lunes 01 de Noviembre de 2004, 08:10

Doy de alta oficialmente mi blog, :)

Desde que lo instalé hasta ahora me tardé un poquito, por lo que las primeras noticias la van a encontrar en Archivos (a la derecha de la página, hay uno por mes). También pueden ver las noticias agrupadas por distintas categorías, si lo desean (siempre a la derecha, verán que están las categorías con un número que indica cuantas noticias hay en cada una).

También podrán encontrar una serie de enlaces que son muy útiles/importantes para mi (adivinen en que lugar de la página, ;).

Cualquiér comentario será bienvenido. Para ello pueden enviarme un mail directamente a facundo arroba taniquetil punto com punto ar, o contestar las mismas noticias (al final de cada una hay un enlace para ello).

¡Que lo disfruten!


¿Referencia o valor?

Python — Lunes 25 de Octubre de 2004, 07:40
Lo siguiente es una respuesta mía (levemente modificada, por el contexto) a una pregunta sobre si en Python los objetos se pasan por referencia o por valor:

Python, a decir verdad, ¡no pasa los objetos!. Los objetos están en memoria, y lo que se hace es reasignarles un nombre.

Por ejemplo:

1 def func(a):
2 print a
3
4 b = "blah"
5 print b
6 func(b)

En la línea 4 se crea un objeto en memoria, tipo string, y con un contenido determinado. A este objeto se lo relaciona con el nombre "b". A partir de ese momento, cuando hablemos de "b" en este espacio de nombres, estaremos haciendo referencia a ese objeto en memoria (que es lo que hacemos justamente en la linea 5).

En la linea 6, llamamos a una función, con el nombre "b" como primer parámetro. Según la definición de la función, llamaremos "a" al primer parámetro. Dentro del espacio de nombres de esa función, cada vez que usemos el nombre "a", nos referiremos al mismo string que indicamos antes, al mismo objeto en memoria.

Resumiendo, el objeto no se copia, y no se pasa un puntero al mismo, simplemente se le asigna otro nombre en otro espacio de nombres.

>> def f(a):
print id(a)

>>> b = 5
>>> id(5)
9065408
>>> f(b)
9065408

Pensarlo de esta forma (que es lo que realmente sucede) nos simplifica la vida cuando tenemos distintos comportamientos con los objetos mutables e inmutables. Por ejemplo:

>>> def f(a,b):
print id(a), id(b)
a = 7778
b.append('?')
print id(a), id(b)

>>> c = 56
>>> d = ['pp', 11]
>>> c, d
(56, ['pp', 11])
>>> id(c), id(d)
(9064796, 11094976)
>>> f(c,d)
9064796 11094976
10047164 11094976
>>> c, d
(56, ['pp', 11, '?'])
>>>

Como vemos, al comienzo de la función, "a" apunta al mismo objeto que "c" fuera de la función, y lo mismo sucede con "b" y "d".

Y aquí es donde paga no pensar como "variables clásicas": en la primer linea NO estamos modificando una variable "a", sino que llamamos "a" a otro objeto en memoria, que no tiene nada que ver con el anterior. El nombre "b", en cambio, no es reasignado a otro objeto. Al final de la función vemos lo que acabo de explicar: "a" apunta a otro objeto en memoria y "b" todavía al mismo.

Cuando volvemos al cuerpo principal de la función encontramos que el objeto al que apunta "c" sigue estando igual (nunca se modificó), y el objeto al que apuntamos con el nombre "b" sí sufrió una modificación.

Hay un excelente artículo de Alex Martelli sobre este asunto, gentilmente traducido por Hernán Martínez Foffani.
«Anterior   1 2 3 ... 57 58 59 60 61 62 63  Siguiente»

Powered by LifeType