miércoles, enero 31, 2007

Dawn of the age of Robots

Acabo de leer un articulo de Bill Gates sobre la robótica, y sobre como impulsar este campo usando algunas de las tácticas utilizadas en la revolución del PC.

Básicamente, Gates habla de estandarización, de crear puentes comunes entre software-hardware, de facilitar la labor de desarrollo de robots de la misma forma que BASIC facilitó la utilización de los diferentes computadores personales y puso el desarrollo de estos en manos de mas personas. también habla del esfuerzo de investigación de Microsoft en esta área de integración (muy a grandes rasgos).

Como aficionado a la ciencia ficción e IA, los robots han pasado por mi cabeza muchas veces y la verdad creo que el momento en el que la humanidad se dedique a hacer únicamente cosas creativas y dejar las rutinas a los robots (como en algún momento lo establece Moravec) esta bastante lejos. Y esto básicamente por dos cosas... Creo que hay "rutinas" que están muy lejos de la realización robótica, y que la creatividad esta lejos de muchos especímenes humanos (lease maquinitas de hacer dinero haciendo paginitas web o cualquier otra actividad casi mecánica)

Sobre el efecto de una llamada revolución de robots se ha escrito mucho (no todo Sci-fi)... lo único que espero es no tener que hacer Defrag a mi a mi robot domestica cada 2 o 3 semanas. :P

domingo, enero 21, 2007

Las cinco innovaciones...

Acabo de leer el articulo de enter donde se habla de las "revolucionarias" innovaciones que quizás nos sorprendan dentro de 5 años.

Salud a distancia... creo que ya hay casos (sé de cirugías a distancia)
Solución Crisis de agua... soluciones caras para los sauditas, dinero facil y eso.
Traducción en tiempo real... hay avances en sistemas estadísticos para traducción, no le daría 5 años
Celulares leerán Mentes... esas interfaces como la del videito famoso del señor manejando el mouse con el cerebro me llenan de dudas, pero ahi si no se.

Pero por favor... Internet 3D??

Que clase de persona en su sano juicio cree esto tiene alguna utilidad??

Hay muchas razones para pensar que el Internet 3D tendría problemas y todas giran en torno a la simplicidad.

Simplicidad y errores

Un profesor dice muy sabiamente que aquel que haga software partiendo del hecho que no se van a cometer errores cometió ya el primero. Los bugs han contaminado desde los "hola mundo" de los novatos en programación, hasta una que otra sonda de NASA, y ha medida que el software se hace mas complejo, es mas fácil equivocarse y las consecuencias pasan de ser incomodas a catastróficas.

Decir que el Internet 3D es mala idea porque es agregar complejidad y probabilidad de error a las aplicaciones seria en cierta forma mediocridad, seria dejar de hacer algo por sus dificultades... falta de ambición tal vez. Partir del hecho que no habrá errores seria ingenuo... que clase de errores podrían suceder?

Seria gracioso que alguien programara una tienda en Internet (3d obviamente) que con un mal Clipping hiciese que cualquier ladrón modelado con polígonos al revés pasara inadvertido por el vigilante. Una mala detección de colisiones permitiría pasar las paredes de la caja del banco y todo tipo de absurdos...

No mentiras, la ingenuidad es a propósito... estos errores nunca sucederían. Pero acaso puede justificarse el extra de complejidad por la experiencia 3D?, es útil? y si lo es que ventajas trae?

Congestión en red y Requerimientos mínimos

Como dije en el blog pasado, me canse de msn live, porque mi maquinita de 800 Mhz, no me daba para mostrarme ese montón absurdo de animaciones innecesarias. Cuando escribia se hacia un lag de unos 2 Segundos hasta que por fin me mostrara las letras.

Hay que aceptarlo... no todos tenemos los computadores mas actuales, ni las conexiones mas rápidas. Con que cara los desarrolladores de este tipo de tecnologías le dirán al tercer mundo "lo lamento, tu computador no cumple los requerimientos mínimos". No poder entrar a una tienda por no disponer de la ultima tecnología o el dinero para comprarla seria simple discriminación, no? el equivalente tener un centro comercial no adaptado para gente en silla de ruedas.

Ya lo veo venir.

"este sitio todavía no esta adaptado para minusválidos sin flash"

(lo peor es que ya me ha pasado)

Usabilidad

Un amigo alguna vez dijo (palabras mas, palabras menos) que por mas Opengl y directX 10, una experiencia que utilice una pantalla no deja de ser una experiencia 2D.

Quien no ha visto a alguien con poca experiencia e los juegos 3d volteando la cabeza y el control en una curva? La verdad, veo difícil explicarle a mi madre como moverse por un mall virtual en 3d.

Ennnn fin...

Si algo tiene de bueno el internet es adimensionalidad. Si compro algo en internet es simplemente hacer click para ir de un lugar a otro sin pasar por un montón de puntos intermedios innecesarios.

Si no quiero andar en un supermercado, para que voy andar en uno virtual? chocando con gente y frustrándome porque no me dejan pasar o ver las cosas que quiero ver...

gracias...

Pero no gracias

martes, enero 02, 2007

Hasta la vista baby...

Alan Turing hizo grandes aportes a la ciencias de la computación. Pese a ser conocido principalmente por la maquina de Turing, Turing fue de los pioneros en temas como la hipercomputación con su famosa Turing con oráculo, redes neuronales (redes "B-Type") y muchas otras cosas.

Dentro de su trabajo con la maquina de Turing, es famosa su demostración sobre la indecibilidad del problema de la parada, la cual implica la inexistencia de un programa el cual recibiendo como entrada otro programa pueda decir que este termina o se queda en un bucle infinito. Esta demostración (como la mayoría de demostraciones de inexistencia) parte del hecho que el algoritmo existe, pero a partir de la elección de una entrada particular (en este caso el algoritmo mismo) se llega a una paradoja.

Recuerdo que cuando leí por primera vez esto, me preguntaba si seria posible un replanteamiento del algoritmo que en vez de 2 salidas (si, no) pudiese dar como salidas (si, no, tal vez), es decir, dividir las entradas en "definitivamente paran" "no paran" "realmente no se"... En medio de mi ingenuidad creía que la mayoría de los problemas de parada con los que se encontraría un programador serian de la clase "se me olvido incrementar i" (donde i es un entero de 32 bits) y otro tipo de bobadas que se podían hallar simplemente a punta de fuerza bruta.

La pregunta que me intrigaba en ese entonces era; mas que hacer un algoritmo que espere a ver si para otro algoritmo (eso lo puedo hacer yo :P); ver que tan lejos podría llegar un algoritmo en disminuir la cantidad de "tal vez" dentro del espacio de posibles entradas. Tenia hasta la ligera idea (sin absolutamente ningún argumento para creerla) que los "tal vez" podían llevarse a un porcentaje mínimo...

Sin divagar mas, hace poco leí en el "new-scan" de Scientific American sobre un software que precisamente hacia el debug anti "freeze" , el cual lo estan utilizando especificamente para los drivers del Windows Vista. El nombre del programa... Terminator. El programa convierte la representación del código fuente (los loops y esas cosas) y lo convierte a una representación finita, y luego busca una demostración de correctitud (muy a lo Dijkstra).

Este programa no tiene ningún problema con la demostración de Turing, el programa puede resolver el 99.5% de las entradas (como sacaron el 99.5%? ni put@ idea)... ademas hacen la salvedad que en el "pequeño" espacio de entradas solubles, no entran problemas difíciles matemáticos, así que la ideita de hacer un driversito que incluya una version de la conjetura de Goldberg, o algunos problemas de Hilbert y esperar una respuesta del debugger es mas bien ingenua.

Los drivers ademas de lo anteriormente mencionado tienen mas simplificaciones que hacen posible a Terminator. Son relativamente independientes de otras instancias de software (llámense librerías o procesos) son relativamente pequeños y la interacción con usuarios es nula. Estas ventajas para análisis son vistas como retos a enfrentar para los autores de Terminator, y no es del todo absurdo algún día tener un mensaje de error de la forma:


Semantic Error at line 247
...While's condition never breaks

(me late que eso esta en un muy mal ingles)