texto:   A-   A+
eliax

Análisis: ¿Es el App Store + XCode la panacea del mítico desarrollo multi-plataforma?
eliax id: 7653 josé elías en abr 16, 2010 a las 02:57 AM (02:57 horas)
XCodeeliaxRecientemente leí este interesante artículo y este otro en donde se especula que el procesador (CPU) del iPad, al que Apple llama el "A4", no es un procesador con la arquitectura ARM basado en un núcleo ARM Cortex A8, como hasta el momento todos especulan, sino que en realidad es un procesador propietario basado en dos núcleos de PowerPC basados en un procesador PA Semi PA6T, y eso me puso a pensar profundamente...

Primero que todo, recuerden que Apple compró la empresa PA Semi en el 2008, una empresa especializada en chips de alta eficiencia energética y de alto rendimiento basados en la arquitectura PowerPC, razón por la cual en mi predicción #5 para este año 2010 que hice el año pasado escribí:

"Otro elemento que podría jugar un papel importante es que quizás este [el iPad] sea el primer dispositivo que veamos utilizando chips fabricados por Apple, después de haber comprado la empresa PA Semi, compuesta por algunos de los mas talentosos diseñadores de microprocesadores de la industria."

De ser esto cierto, esto explicaría por qué el iPad se siente como el dispositivo multi-táctil mas rápido jamás salido al mercado, y de por qué se siente al menos el doble de rápido que el iPhone 3GS (que de por sí es el doble de rápido que el iPhone 3G).

Sin embargo, se ser cierto esta especulación, esto significa también que el iPad se pondrá muchísimo mas rápido aun, pues por el momento se especula que en realidad está ejecutando aplicaciones en modo de emulación ARM, similar a como las Macs recientes con procesadores Intel x86-64 emulaban a los procesadores PowerPC durante la gran transición entre esas dos arquitecturas.

Como explican en uno de los artículos que referencié al inicio de este artículo, eso explicaría por qué Apple en su nueva política de uso de las herramientas de desarrollo para el iPhone, iPod Touch y iPad, exige que solo se puedan utilizan herramientas Xcode de Apple para desarrollar.

¿Por qué? Por la misma razón que Apple recomendó el uso de XCode durante la transición entre PowerPC y x86: Si los desarrolladores de software se apegaban a las herramientas de Apple, y a los APIs (interfaces de programación) estándares de Apple, el proceso de cambiar una aplicación de la arquitectura vieja a la nueva era tan sencillo como simplemente recompilar la aplicación eligiendo crear un binario universal para PowerPC y x86, lo que facilitó enormemente la transición.

Pero he aquí la parte que me hizo pensar...

Por años, desde los tiempos de la IBM VM, pasando por todo tipo de técnicas desde el JVM (Máquina Virtual de Java) hasta interpretadores dinámicos de Perl o Javascript, el mundo del software ha estado en una cruzada por buscar la forma ideal de crear una forma universal de desarrollar, independiente de hardware.

Pues creo que Apple muy bien se ha tropezado con una gran solución al problema, y es una combinación de Xcode y el App Store (la Tienda de Aplicaciones del iPhone, iPod Touch y iPad), y se trata de lo siguiente...

Hoy día sabemos que existen varias maneras de crear un programa que funcione en mas de una arquitectura, sin embargo estas se pueden resumir en las siguientes maneras:

1. Compilación de APIs a código nativo, que es lo que sucede cuando uno programa en C o C++, en donde por medio de varios flags (banderas, indicadores) uno compila un código y librería de funciones a una arquitectura específica. Esto se utiliza mucho por ejemplo para crear distintas versiones de Linux para distintas variates de arquitecturas de hardware, y esta es la forma mas difícil de crear código multi-plataforma, aunque produce el código mas eficiente en la mayoría de los casos.

2. Máquinas Virtuales, en donde el código se compila a un bytecode intermedio, y después es o (1) interpretado en tiempo real o (2) compilado dinámicamente a la arquitectura local en casi tiempo real. Esto es lo que hace Java, es una forma bastante fácil de crear código multi-plataforma.

3. Interpretadores, en donde se escribe en un lenguaje de alto nivel (como Perl o javascript) y el código es o (1) interpretado en tiempo real o (2) compilado dinámicamente a la arquitectura local en casi tiempo real. Esta es la forma mas fácil de crear aplicaciones multi-plataforma, pero quizás la que produce el ejecutable menos eficiente.

Sin embargo, Apple parece haber creado una manera alternativa a todo esto, que combina lo mejor de todos los mundos, y el truco está en el App Store y su relación con el sistema operativo iPhone OS.

Lo que sucede es lo siguiente: De vez en cuando, Apple ofrece una nueva versión del iPhone OS, y dependiendo de qué tanto cambie el OS (Sistema Operativo), Apple puede requerir que las aplicaciones deban ser recompiladas para el nuevo OS por sus desarrolladores.

Eso bajo otras plataformas es algo impráctico, por la sencilla razón de que no existe una manera directa de controlar esas aplicaciones, como la tiene Apple con el App Store. Es decir, en Windows, Mac OS X y Linux, cualquiera puede crear una aplicación con cualquier herramienta, sin el consentimiento (o incluso conocimiento) de Apple, por lo que se hace difícil poner reglas en ese escenario.

Sin embargo, con el App Store, Apple sabe al 100% cuáles aplicaciones están instaladas en tu iPhone o iPad, y permitir que funcionen solo aquellas que son compatibles con tu versión del iPhone OS.

Recuerden ahora que Apple ofrece una manera de auto-actualización (aunque con la autorización del usuario) del iPhone OS en sus dispositivos, lo que tiene como efecto que en todo momento la gran mayoría de usuarios del iPhone OS estén actualizados a la última versión (si su hardware lo soporta, obviamente).

¿Qué efecto tiene esto? Que los desarrolladores, que utilizan XCode, simplemente tienen que recompilar su aplicación, especificando crear un ejecutable para la última versión del iPhone OS, y si los programadores siguieron las reglas impuestas por Apple, el programa genera un binario que funciona en la mas reciente versión, sin el programador tener que preocuparse por problemas de incompatibilidad.

Pero he aquí lo interesante: Apple puede, en ese proceso de compilación, tras bastidores, compilar el software para otra arquitectura totalmente diferente (si eliges por ejemplo que tu programa es exclusivo al iPad), o crear un binario universal (si tu aplicación funcionará en el iPhone 2G/3G/3GS y el iPad), todo sin el conocimiento del desarrollador de software.

¿Qué se gana con eso? Pues lo siguiente:

1. El programa siempre funcionará no solo en la mas reciente versión del sistema operativo, sino que además (y esto es lo importante) en cualquier arquitectura de hardware imaginable, sea ARM, PowerPC, x86 o cualquier otra que surja en el futuro.

2. Esto es totalmente transparente tanto para los desarrolladores de software, como para el usuario final.

3. Toda la comunidad de desarrolladores y usuarios caminan en conjunto conforme la plataforma avanza, siempre estando sincronizados con la mas reciente versión.

4. El software nunca tiene que ser interpretado, o compilado para una máquina virtual, sino que es siempre nativo y funciona al 100% de su velocidad nativa, ya que es código nativo lo que genera XCode.

Como ven, al juntar el App Store, el iPhone OS, y XCode, se eliminan básicamente todas las deficiencias de aplicaciones multi-plataforma que a la fecha existen en otros esquemas, ya que Apple ahora tiene la libertad de adoptar cualquier arquitectura posible en el futuro, para seguir siendo relevante ante avances que podrían hacer otros mejor que Apple en el campo de los CPUs.

Así que por ejemplo si Intel o AMD sacaran una arquitectura móvil revolucionaria, y Apple notara que su propia arquitectura local del chip A4 (y sus sucesores) no pueden competir, lo único que tienen que hacer es fabricar sus próximas versiones del iPhone y iPad con ese nuevo chip, sacar una nueva versión del iPhone OS, actualizar XCode para que soporte la nueva versión, y después de ahí los programadores simplemente tardan unos minutos en recompilar sus aplicaciones, y estas se hacen automágicamente compatibles con el nuevo chip, sin ningún trauma técnico para los desarrolladores o los usuarios finales.

No se ustedes, pero si todo esto es como creo es, hay que quitarse el sombrero ante los ingenieros de Apple por tan asombroso ingenio...

Nota a técnicos: Antes de que comenten, sepan que estoy bastante consciente de que por "multi-plataforma" uno por lo general se refiere a software que funciona bajo diferentes sistemas operativos y/o arquitecturas de hardware, y que en este artículo utilizo como ejemplo software que puede ejecutar en distinto hardware pero aparentemente en un solo sistema operativo (iPhone OS), sin embargo, si profundizan un poco mas en el tema (y yo no quería hacer el artículo mas largo de lo necesario), notarán que es el mismo caso, pues Apple muy bien podría portar sus APIs a un sistema operativo alternativo (digamos, Linux, aunque altamente improbable) y la técnica descrita aquí seguiría funcionando al 100% igual.

Noten además que de ser todo lo que se especula en este artículo cierto, que eso explicaría también porque Apple tiene una razón real para su cláusula contractual que dice que no se permite desarrollar con otras herramientas que no sean XCode con Objective-C en el iPhone OS, como lo hizo Adobe para crear su controvertido convertidor de Flash al iPhone OS, ya que ese tipo de aplicaciones no se podrían convertir de manera automatizada a una nueva arquitectura.

Finalmente, también estoy bastante consciente que si tomamos todas las cosas que Apple hace bajo este esquema por separado, que aquí no aparenta haber nada nuevo o notorio. La novedad aquí es que cuando todos estos elementos se unen en una sola solución, al final se crea un ecosistema que permite que todos los usuarios migren a nuevos dispositivos y arquitecturas de hardware de manera totalmente transparente para todos.

Y como siempre, pueden leer mas de mis opiniones y análisis en la sección bajo ese nombre a la derecha de la página principal de eliax...

autor: josé elías

Comentarios

  • La idea es interesante pero tiene un punto débil: depende de que el programador original recompile para la nueva versión. Si el programador es una empresa a la que, por ejemplo, ya no le interesa que se siga utilizando su "viejo" producto y que se compre uno nuevo, lo que va a hacer es no recompilar y listo.

    Para mi lo ideal es que quien maneja "la tienda" (o el repositorio) compile los programas para las diferentes arquitecturas... que, dicho sea de paso, es lo que vienen haciendo las distribuciones de Linux desde hace muchos años.

    • No estoy completamente de acuerdo con eso. Acuérdate que las aplicaciones de la AppStore no pertenecen 100% a Mac, sino que el programador recibe un porcentaje de cada copia vendida de su software. Por esa razon creo que es válido si el creador del software ya no quiere venderlo no lo compile para dejar espacio a una version más nueva de algún programa, o que decida incluso quitarle todo el soporte para dedicarse a otras cosas. Apple no debería vender una obra tuya si el dueño ya no quiere.

  • Me parece muy buena tu reflexión. Esto también podría explicar por qué ahora Microsoft se está planteando, aunque sea de forma muy débil, implantar en Windows un estilo de repositorios al estilo Linux. Obviamente, no parece que tendrá la capacidad de control de la AppStore, pero es un buen comienzo

  • Como dice anv:
    "recompilar (...) que es lo que vienen haciendo las distribuciones de Linux desde hace muchos años."

  • Parte 1:
    ------------------

    De casualidad en los últimos días, pienso embarcarme en la realización de un Mega-Software de gestión empresarial. Sin embargo para que me entiendan voy a poner clara mi situación:

    1.) Soy usuario de windows desde hace mucho tiempo.
    2.) En la empresa trabajo en windows y desarrollo con tecnología .net casi desde su aparición. Me encanta .Net para el RAD y me parece que es una excelente herramienta.
    3.) Uso Mac en casa y me encanta, sin embargo a ser honestos me parece más productivo usar windows. Lo mejor del mac a mi modo de ver es su simplicidad, y de que los usuarios normalmente no van a requerir reinstalaciones, problemas de virus, programas dañados por mala instalación, etc.
    4.) Linux me parece excelente para servidores, no tiene comparación, es economico, estabale y poderoso. Sin embargo en este tema me gusta mucho que el usuario elija, si quiere windows, linux, solaris, osx server, etc.

    Con esta situación quiero que me den consejos, y esto es lo que quiero:

    a.) Siendo programador de .net no me gusta mucho la idea de que solo funcione en windows. A decir verdad sale muy costoso decirle a un usuario que debe usar windows en los servidores para montar un servidor de aplicaciones. Aquí como veo Java gana, pues es una plataforma que corre en cualquier sistema operativo y es bastante escalable y hay muchas soluciones empresariales.

    • Mi consejo, siempre que sea posible, es hacer aplicacones web.

      Tiene numerosas ventajas, por ejemplo:
      . multiplataforma: sólo con un browser funciona
      . no necesita instalacion, solo con acceder a una direccion funciona
      . no necesita actualizar versiones en los clientes: con actualizar el servdor funciona
      . correccion de errores instanatanea: si te llaman y te dicen que hay un error de ortografia, en segundos todos los usaurios estan viendo la version nueva
      . no depende del equipo del usuario: todas las operaciones se realizan en el servidor y no hay virus ni dedazo del usuario que pueda hacer que el programa deje de funcionarle.Mientras el browser funciona, la aplicacion funciona.
      Podría pensar en muchas ventajas más como la fácil replicacion para la alta disponibilidad y deás, pero creo que no hace falta explicar mucho más

  • Parte 2:
    ------------------

    pariencia. Aquí sinceramente no hay una interface que conozca para linux que me convensa, QT, GTK, etc, me parecen horribles. En caso windows tenemos que la mejor forma de hacer esto es usar WPF, es increhible lo que se puede hacer con esto. En caso mac tenemos que la mejor forma es usar objective-c y cocoa para producir excelentes interfaces y que se acoplen bien al Sistema Operativo. En mi sistema me quiro enfocar en usuarios principalmente de Windows y quiero además hacer un esfuerzo en promover la plataforma mac para la empresa (como estación de trabajo). El problema aquí es que son muchos lenguajes especificos por plataforma y se dificulta el desarrollo, soporte, implantación, etc. Sin embargo es como la mejor alternativa para realmente hacer una mejor expericiencia de usuario.

    c.) Deseo que sea multibases de datos, para mi mercado las que mas se mueven son: sql server, oracle y my sql.

    Hasta hora mi conclusión es la siguiente y con muchas dudas:

    1.) c++ me soluciona casi todos estos problemas, pero me parece inviable para mi hacerlo puesto que el desarrollo es mucho más complejo para lo que quiero y mas en la presentación de las aplicaciones. Es mucho trabajo, o será porque no conozco de frameworks para eso.

    2.) Java seria una solución buena, pero falla en que no aporta la mejor experiencia de uso para cada plataforma, y a decir verdad me parece excesivamente lento por lo menos la ultima que conozco.
    3.) Usar java para servers (capa de servicio) al poder usarse en casi cualquier parte y con un buen soporte, .net para windows, cocoa para mac, pero ya saben lo que es mantener tanta cosa y el desgaste pero pienso que seria la forma en que le daria lo mejor al usuario.

  • Parte 3: (ultima)
    ------------------

    4.) Muchos diran que no haga cosas propias por plataforma, pero hay cosas en las que web no es la mejor opción además de que requiere que todo sea en linea, pero en la vida real sabemos que no siempre es así, si se piensa en implementar web lo ideal es usar java a mi modo de ver. La idea es tener las reglas del negocio en java, y de ahi las implementaciones de cada cliente sea, web, windows o mac.


    Ahi me disculpan el MEGAPOST, pero veo que hay gente con buenos conocimientos, que creen uds de lo que deberia hacer si ven esto factible?

    • Hola David,

      Un consejo que te doy (y que desde hace al menos 3 años es el mismo consejo que le doy a todo el mundo), es que NO desarrolles aplicaciones nativas del tipo "desktop/escritorio", sino que desarrolles aplicaciones web con interfaces dinámicos.

      Hacer una aplicación estilo web te permite independizarte completamente de la plataforma cliente, lo que significa que dependiendo de tu implementación los usuarios podrán utilizar tu aplicación desde Windows, Mac OS X, Linux, etc, así como de la nueva generación de dispositivos móviles del iPhone, iPad, Android, Windows Phone 7, etc.

      También recomiendo utilices MySQL en vez de MS SQL Server. No te cuesta nada ni a ti ni a tus clientes, y tiene un nivel de rendimiento comparable o incluso mejor, y lo puedes instalar en cualquier sistema operativo.

      En cuanto a en qué lenguaje programar la aplicación, veo que conoces Java, por lo que quizás quieras contemplar programar con JSP y/o JSF, que es una tecnología muy similar a ASP/.Net. Otras opciones son PHP, Coldfusion y Ruby on Rails (aunque este último es el menos maduro de todos).

      Y sobre librerías para generar interfaces web dinámicos y con características casi de aplicaciones de desktop, existen muchos frameworks como JQuery, Prototype, etc.

      Si te apegas a esas recomendaciones, podrás no solo utilizar tu aplicación desde cualquier dispositivo o sistema operativo, sino que además podrás desplegar tu aplicación en casi cualquier sistema operativo.

      • Exacto, además puedes utilizar las características de Html5 como Web Storage, Canvas, etc.

        De ésta forma nada más tendrás que tener un Navegador que sea compatible con Html5, como Opera, Chrome, Safari o Firefox.

        En la parte del lado del servidor, si no quieres gastar en software, entonces Java y MySql. Yo personalmente me iría con .Net y MsSql pero es Cuestión de gustos y obviamente de recursos económicos.

        Lo que si te digo, usa o Java o .Net pero no Php ni Rubi, ni Python.

        Otra cosa a tomar en cuenta es la cantidad de programadores que necesitas, si son bastantes, 15 o algo así, te recomiendo entonces Visual Studio Team Edition, no tiene comparación con nada.

        Bueno, sea cual sea tu decisión, creo que por acá encontrarás bastante ayuda.

        Un saludo!

        • Por cierto, ya veo la necesidad de crear un foro acá jaja :P

    • Como desarrollador te contesto lo mismo que Eliax.
      trata de evitar el escritorio debido a las dependencias que creas con la plataforma, si te gusta más .net, no hay problema, trabaja sobre web teniendo en tu server windows, o el que más te guste.

      Quizá tu miedo sea más el migrar a la web, porque sí, es verdad, sobre web aún hay cosas que no se hacen tan fácil como lo haría uno en escritorio, pero ya tienes frameworks bastante interesantes que te facilitan la cosa, como el jquery o jquery ui, lo uso todo el tiempo y es genial lo que puedes lograr con ello.

      ¿Alguien sabe si en html 5 podré usar la cámara web sin requerir algo de flash?

      A ver qué día, Eliax, hablas algo de comet, será el siguiente paso a ajax?

  • No creo que Xcode sea la panacea del desarrollo multiplataforma, como lo sugieres en el título del artículo.

    Antes que eso pueda ocurrir, sucederán muchas cosas.

    He aquí mis predicciones Mayas:

    1.- Si Microsoft llegase a sentir que XCODE le está comiendo el mercado de herramientas de desarrollo, aparecería inmediatamente una versión de VISUAL STUDIO (o algún otro producto) que le permitiera seguir en la competencia.

    2.- Antes de que el chip PA Semi PA6T se apodere del mercado y evolucione, INTEL habrá sacado muchas versiones nuevas y mejoradas de su procesador ATOM (incluso para celulares). Apple nunca se ha caracterizado por su exito con los procesadores (6500, 68xxx, PowerPC, Core2)...

    3.- No es lo mismo vender iPADs que vender celulares. Las ventas del iPAD serán menores al 5% de las ventas de iPhone. Veremos si estas cifras son suficientes para mantener e impulsar el desarrollo de los procesadores PA Semi PA6T

    4.- La evolución del desarrollo multiplatadorma no solo depende de la tecnología software (lenguajes, middleware, protocolos), sino también de la "estandarización" de las plataformas (S.O. y arquitecturas)... Es evidente el predominio actual de los sistemas operativos dominantes (en sus diferentes versiones). También son evidentes las intenciones de Intel y AMD por dominar el mercado de los procesadores para dispositivos móviles

    • Nanok,

      No creo que hayas entendido bien en artículo.

      Primero y antes que todo, debes entender que "multi-plataforma" y "estandarización" son dos cosas muy distintas. Es posible (como lo hace Apple) tener tecnologías multi-plataformas que son totalmente cerradas y propietarias. Este artículo no se trata sobre ese tema.

      El objetivo de Apple con esto NO es competir contra Visual Studio o nada por el estilo, sino hacerse la vida a sí mismo mas eficiente para poder competir mejor con sus propios dispositivos. Apple no tiene planes de utilizar esta metodología con ecosistemas fuera del suyo.

      Por otro lado, también malinterpretaste lo del chip PA Semi. Apple NO tiene planeado hacer ese chip disponible a terceros. Es para su uso exclusivo solamente, por lo que no posa una competencia per-se a Intel, AMD o NVIDIA, sino que mas bien esas empresas dejarán de proveer sus chips a Apple (pero seguirán proveyéndolos a terceros, cosa que Apple no tiene intenciones de hacer).

  • Eliax, tengo una pregunta acerca del iPad.

    Yo creo que el iPad es más para consumir contenido que para crearlo, pero quisiera saber si es posible crear una página web desde el iPad

    O qué tipo de contenido se puede crear en el iPad, ya sea programación, web, aplicaciones, etc.

    Porque estoy en duda si es posible hacer eso para tenerlo en cuenta para comprarlo ya que por la escuela necesito algunas cosas más que usuarios comunes

    • Giovanni,

      El iPad no fue concebido para crear ese tipo de contenido (para eso son las Macs, Windows y Linux), sino que mayoritariamente para consumirlo.

      Sin embargo, si nos llevamos de los ejemplos de iWork para el iPad (que te permiten crear presentaciones Keynote, así como crear y manipular ojas de cálculo tipo excel y documentos de texto), no creo que tardaremos en ver aplicaciones que también sirvan para generar contenido web, aunque por ahora recomiendo una PC/Mac/Linux para ese tipo de cosas.

      • Muchas gacias por la respuesta, es lo que necesitaba para una decisión de compra próximente

  • Buena esa de las predicciones mayas xD

    • Sí, al igual que la de los mayas y el 2012 no se van a hacer realidad :P

      • hahahahahha xD ahora me dió más risa..

        José, necesitamos un foro por acá :P Con un tema: off topic xD

  • Para el que dijo que windows planea poner repositorios ... pues que los ponga, eso si , que va a poner Trials? ( programas de prueba) xDD...

    Lo bueno de los repositorios de linux es que todos o la mayoria son gratis y tu escojes cualquiera y ya, si windows pusiera eso el 90% de programas serian de pago .

  • Jose, sinceramente, muy interesante análisis, y aunq a veces pareces fanático de alguna marca/empresa, creo q realmente sabes manejar muy bien tus gustos personales. Por algo sigo leyendo tu blog

  • Hola chicos, les comento que tomé una decisión, he estado estudiando Java, la verdad he tenido un inconveniente y es que como soy un desarrollador de hace tiempo en .Net se me dificulta un poco, a veces me parece que no se siente una evolución sino que es como ir hacia atrás. Definí que voy a tratar de hacer al máximo todo web, y que las cosas que necesiten del procesamiento en el lado del cliente las trato de hacer en java swing (me gustaría que evolucionara un poco más porque WPF es increíble). Para hacer aplicaciones empresariales se requiere mucho conocimiento y a veces me choca por ejemplo: que la mayoría de libros de java no explican cómo hacerlo en determinado IDE (elegí Netbeans), uno está acostumbrado a tener básicamente un IDE (VS) y la cosa iba más simple. Gracias a todos por sus comentarios.

  • Esta es la misma filosofia de Qt. Es una libreria de C++ que hace exactamente eso.

    Por ejemplo si quieres declarar un String, usarias un QString etc.

    El desarollador escribe el codigo utilizando esa libreria. El mismo codigo luego es utilizado para compilarlo a una differente arquitectura.

    Esto deberia de tomarse mas enserio a nivel de software, porque haveces hay que resecribir codigo que ya se ha escrito antes y con differencias que no sean importantes para el desarollador.

    Eso le ayuda al desarollador a pensar mas en como hacer su applicacion mejor en vez de estar lidiando con detalles de hardware.

  • la intención del artículo no es venderle el Ipad a nadie, lo importante de él nisiquiera es el aparato, sino la integración de herramientas en la plataforma Apple, sea cual sea el dispositivo que saque ahora o en un futuro y la influencia que esto pueda tener en otras empresas y proyectos. Así que ese comentario es, a mi parecer, injusto.

    Además te invito a que le des una hojeada a los artículos que el amigo eliax ha acumulado y durante estos años y veas la variedad de temas que toca. Si estos días ha hablado principalmente del Ipad es simplemente porque es lo que está saliendo ahora. Si la novedad es el LHC, pues del LHC se habla, o google o linux etc. Juzgar sin analizar a fondo me parece también injusto.

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
9 + 2 = requerido (control anti-SPAM)
 

"Como ha cambiado mi forma de ver el mundo... El Internet ha sido gran responasble de los grandes cambios y creo que no parará."

por "oziel" en ene 31, 2011


en camino a la singularidad...

©2005-2014 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax