Frameworks Python que trabajan con App Engine

Google introdujo ya hace un par de años (es increíble como el tiempo transcurre) el servicio App Egine que permite desplegar aplicaciones web sobre la infraestructura de Google, lo cual permite escalar fácilmente las aplicaciones desarrolladas. Por el momento sólo dos leguajes son soportados por el servicio Python y Java, lo cuál tal vez ignora a la mayor de todas las comunidades PHP, pero eso es otro tema. Hoy quiero centrarme en los frameworks Python que permiten trabajar con este servicio de Google, que permite a todo desarrollador web desplegar una aplicación sobre una de las infraestructuras de red más grandes del planeta.

El primer framework sobre el quiero comentar es tipfy, este es un framework orientado a trabajar con Google App Engine, lo cual es criticado por muchos como su punto débil debido a que las aplicaciones creadas con él no pueden ser corridas independientemente. He encontrado un muy interesante post en el blog de Ian Lewis titulado "Una introducción al Framework Tipfy para AppEngine", si seguimos las instrucciones indicadas en este post podremos tener corriendo una aplicación básica en menos de diez minutos.

Otro framework que deseo mencionar es flask, que se define a sí mismo como un micro-framework para Python que permite el uso del sistema de templates Jinja2, a diferencia de tipfy, los desarrolladores de flask lo diseñaron para correr sobre múltiples servidores web, siempre y cuando estos soporten WSGI, lo que significa que podrá correr sobre Google App Engine, CherryPy o Tornado. He encontrado el post titulado "Volando con Flask y en Google App Engine" de Francisco de Souza muy útil y lleno de tips de como poner a trabajar flask en App Engine, debido a que usa como ejemplo el desarrollo de una aplicación para bloguear 100% funcional, aunque básica.

Ahora quiero comentarles sobre mi favorito, Bottle. Es el más pequeño de todos, el framework entra en un sólo archivo de 73KB. Una de sus ventajas es que al igual que flask en adición a poder funcionar en App Engine, este framwork también puede funcionar de manera independiente o dentro de otros servidores web que soporten WSGI, así que si uno es un paranoico y cree que Google puede ir fuera de servicio, este framework nos permite desplegar la aplicación en servidores propios. Aunque el sistema de templates que usa por defecto es muy simple, eso no quita que sea ultra versátil, pero si se desea algo más sofisticado este framework puede integrarse con otros sistemas de templates como mako, Jinja2 o cheetah. Un muy buen tutorial que explica como crear y desplegar una aplicación en Google App Engine lo he encontrado en el blog de Rutwick Gangurde, el post se titula "Use el framework Python Bottle con Google App Engine", del cual estoy pensando hacer una traducción porque me parece muy didáctico y ayudaría a muchos a empezar a desarrollar aplicaciones en App Engine.

Finalmente, pero no por ello menos importante, tenemos al Django-norel que es una versión de Django que puede correr en bases de datos no relacionales como es el caso del Big Table que Google usa en App Engine. Django es mucho más que un framework es casi un CMS, el único problema que le veo es su tamaño. Un buen tutorial sobre como correr las aplicaciones Django puras en Google App Engine puede encontrarse aquí.

La hora pico del software

Un documental de la cadena pública estadounidense PBS filmado hace ya más de 10 años ha hecho su aparición como un proyecto creative commons, llamado Project Code Rush. El tema del documental muestra el stress emocional y físico al que fue sometido el equipo de desarrolladores de Netscape para liberar el código de su producto Netscape Comunicator, el 31 de marzo de 1998 y así dar origen al projecto Mozilla, considerado por muchos como el primer projecto del open source comercial.

Frases que quedan luego de ver el documental son por ejemplo "Dirigir programadores es como tratar de pastorear gatos" o "Vive rápido, muere jóven y deja muchos cadáveres en el camino". Yo viví esa época aunque desde otra geografía (el Perú) y recuerdo que de no haber sido por la existencia del proyecto Mozilla, no hubiera podido por ejemplo hacer viable el proyecto de tener cabinas de internet 100% basadas en Linux usando terminales ultra ligeros LTPS. La história sobre como implementé la primera cabina de internet con Linux en Chiclayo puede ser vista aquí.

El documental revela la ingenuidad romántica de la mayoría de los programadores que desesperadamente trataban de liberar el código de Mozilla, que luego sería la semilla del popular navegador Firefox, en su batalla perdida contra Microsoft en lo que se llamó la guerra de los navegadores (o browsers). La idea era ganar la suficiente ayuda de programadores externos que permitiera reestablecer el balance en la web, aunque como se puede ver al final del documental sólo sirvió de distracción para que los directores llegaran a un acuerdo con AOL que les permitiera hacer varios cientos de millones de dólares especulando con el valor de las acciones previo al momento de la fusión.

Aquí les dejo el documental, lamentablemente en inglés aunque como es creative commons, espero que pronto alguien pueda ofrecernos una versión traducida al español:

 

 

Es el iPad un producto de la era Post-PC

Cuando Steve Jobs anunción que el iPad2 es el tercer tipo de dispositivo de la era Post-PC como según él es el iPod y el iPhone, al parecer como siempre exageró un poco. Los que siguen este blog habrán notado que no soy parte del pueblo elegido que sigue a siegas al mesías salvador, por el contrario siempre he tenido una postura muy crítica respecto a Apple como compañía y a Jobs en particular como un ejemplo de como no debe actuar un ser humano. Pero este post es en particular sobre esa frase de Jobs de que los productos como el iPod, iPhone y iPad son de la era Post-PC, he encontrado un interesante post de C. K. Sample titulado "Querida Apple: Tu no estaras en la era Post-PC hasta que cortes el cable", en dicho post queda claro que para usar uno de estos productos se necesita una computadora personal (PC) ya sea esta una Mac o Windows para:

  1. Activación / Aplicar las actualizaciones del software.
  2. Hacer Back -Up / Restaurar los datos.
  3. Transferir documentos y sincronizar.

Para mi oir eso fue chocante, en mi Nexus One que es un celular Android no necesito en principio un PC para ninguno de los puntos mencionados arriba. Necesito un PC para desarrollo de aplicaciones, hacer un root del teléfono o experimentar con kernels no oficiales pero ninguna de las cosas que he mencionado es algo que un usuario común hace.

La mayor crítica que hace Sample a la afirmación de Jobs de describir a sus iPod/iPhone/iPad como dispositivos Post-PC se resume en este párrafo:

"Si tienes una Mac, los que hayan empezado a utilizar el nuevo Mac App Store y que estén acostumbrados a descargar actualizaciones para su software a través de Internet, al igual que la App Store para el iPad e iTunes. Puede que hayan notado una característica del Mac App Store que supera con creces las características de la App Store: la pestaña de compras. Desde aquí, puede iniciar sesión en cualquier equipo que usted posee y descargar todo el software que haya comprado para su Mac. Tanto en el iPad y el iPhone (e incluso en iTunes), usted tiene que saber lo que ha comprado en el pasado, para poder encuentrarlo en la App Store, y luego volver a descargarlo. No hay una lista de "Compras" que enumere todo lo que tiene derecho a descargar de nuevo sin tener que pagar por ello. Se trata de Apple efectivamente quitandonos los CD y DVD en nuestras computadoras. Si Apple realmente quiere ser de la era Post-PC, Apple necesita para cortar el cordón de iTunes en todos estos dispositivos."

Hasta alli todo parecería una crítica a Apple, pero aún consediendole el liderazgo en el sector de las tablets, lo que realmente me sorprendió fue la parte final del artículo en el cuál explica como él pudo en el tren subterráneo camino a casa, activar su Motorola Xoom, sincronizarla sobre la red celular (3G/4G) y poder usarla sin necesidad de tener una computadora personal al lado.

Por ello Sample termina su post con la frase: "Luego de lo dicho. El iPad todavía triunfa sobre Xoom. El iPad es un dispositivo más refinado. Pero, es el Xoom el verdadero dispositivo Post-PC".

El ocaso y caída del System Administrator

En un artículo aparecido el pasado lunes (28 de febrero) en InfoWorld, Paul Venezia  se pregunta si la era del administrador de sistemas (Linux/Unix o Windows) ha llegado a su fin gracias a la comoditización de la tecnología de virtualización que permite desplegar un nuevo servidor con una configuración limpia en cuestion de minutos. El punto clave es que si se disponen de imagenes de servidores básicos (web, db, mail) bien configurados por expertos y listos para usar en cuanto sea necesario, cual es el punto de tener un administrador de sistemas dentro de la empresa, si cuando algo falla todo lo que se debe hacer en copiar los datos a otro servidor listo para reemplazar al original en cuestion de minutos.

Como muchos de los que siguen este blog saben, yo soy un administrador de sistemas Linux y he ejercido el oficio desde mediados de los años 90. Obviamente mi opinion sobre el artículo puede ser tomada por muchos como parcializada, pero mientras se hagan las advertencias del caso creo que toda opinion puede ser expresada.

Bueno como finaliza el mismo artículo de Paul Venezia, "todos pueden manejar un automóvil, pero si este no enciende, uno no tiene más alternativas. Lo cual es muy malo si a uno le pagan por reparar autos". La virtualización y sobre todo los productos de fácil uso como VMware Workstation o VirtualBox dan la ilusión a los desarrolladores que ellos pueden ser un administrador de sistemas. Pero, de la misma forma que un Sysadmin no puede ser un desarrollador, lo contrario también aplica, sino revisen este antiguo post "Vampiros vs. Hombres Lobo". El problema viene cuando los que toman las decisiones (gerentes, directores, empresarios) creen que pueden ahorrarse el sueldo de los administradores de sistemas, haciendo que sus programadores desempeñen el doble papel, algo que en muchas ocaciones puede ser la receta para el desastre.

La tecnología de virtualización es poderoza y yo la uso desde hace buen tiempo, pero es tan solo una más de las herramientas en el cajón de todo administrador de sistemas. Hay servidores que por su rol o tipo de carga no es buena idea virtualizar (después de todo no interesa que tan eficiente sea la virtualización, siempre agrega latencia), ejemplos típicos son servidores de archivo de alto tráfico o servidores de base de datos (en este caso se requiere lo contrario a la virtualización, se necesita "clusters"). Pero como dice el refran si la única herramienta que se conoce es un martillo, todo problema se ve como un clavo.

Pero ser un administrador de sistemas es algo más que sólo instalar el sistema operativo, hacer los back-up y aplicar los parches de seguridad necesarios, el trabajo también incluye planeación de los recursos en base a la carga existente y su proyección a futuro, analizar los problemas de red, reducir el consumo de energía y mantener a raya el casi siempre pobremente diseñado software que los desarrolladores insisten en usar y que por lo general suele ser ineficiente y en muchos casos incluso infeficaz.

De la misma forma que Windows le da la ilusión a un usuario de que es una persona del área técnica sólo porque puede cambiar el fondo de pantalla, o instalar un programa de chat, el software de virtualización le da a los desarrolladores y el público en general la ilusión de que ellos pueden ser administradores de sistemas.

Instalando Gingerbread (2.3.3) en el Nexus One

Google finalmente ha terminado la preparación de un upgrade de Gingerbread (2.3) para el Nexus One y el Nexus S, en teoría en el transcurso de las próximas semanas esta actualización debería de aparecer en todos los teléfonos, pero el día miercoles pasado en el popular forum de hackers de móviles xda-developers, las imágenes oficiales se filtraron y desde ese momento un gran número de entusiastas comenzaron a probarlas. Obviamente como no soy de los más atrevidos y necesito mi celular funcionando sin problemas para poder recibir alertas de mi sistema de monitorización esperé hasta que un número aceptable de personas confirmaran que funcionaba sin problemas, es así como el día el viernes en la noche me decidí ha hacer el upgrade de mi Nexus One. Afortunadamente todo salió muy bien y ahora tengo mi Nexus One corriendo Android 2.3.3.

El tutorial que seguí fue el del blog Redmond Pie, que aunque está basado en otro que apareció primero en blog BlogsDNA presenta los pasos de una manera más clara a mi manera de ver. Un detalle importante para aquellos que hayan rooteado sus Nexus One en la version 2.2.2 o anteriores, si hacen el upgrade descrito aquí, el celular vuelve a su estado pre-rooted y el agujero anterior que permitía rootear el celular ahora ha sido reparado, sin embargo está en camino un nuevo hack llamado Gingerbreak que permitiría rootear el celular.

Aquí los pasos para aplicar el upgrade al Nexus One:

  1. Aseguresé de que tiene instalado Android 2.2.2 (FRG83G), si no tiene está versión por favor primero actualicé.
  2. Descarge la actualización oficial a Android 2.3.3 (Gingerbread) desde aquí a su PC (Windows/Mac/Linux).
  3. Renombre el archivo a "update.zip" (ésto es importante, si no se renombra no se producirá la actualización).
  4. Conecte el cable USB que viene con el Nexus One a su PC y siga el procedimiento regular para tener acceso a la tarjeta SD.
  5. Copie el archivo "update.zip" al directorio raíz de su tarjeta SD (es el lugar a donde copia la música).
  6. Desmonte la tarjeta SD del Nexus One de su PC y desconecte el cable USB.
  7. Apague su Nexus One.
  8. Ahora presione el trackball del Nexus One y mientras lo tiene presionado encienda el celular. No deje de presionar el trackball hasta que vea que el celular esta booteando.
  9. Ahora está en el BOOTLOADER, use los controles de volumen para mover el cursor hasta la opción RECOVERY y presione el botón de encendido (Power) para seleccionarlo.
  10. Ahora verá una imagen en medio de su pantalla de un triágulo con un signo de exclamación y un robotito verde al lado.
  11. Presione ahora el botón de encendido (Power) y mientras lo hace, presione el botón de subir el volumen.
  12. En este momento verá el menú de recuperación de Android, por favor usando el trackball vaya a la opción "Apply sdcard:update.zip" y cuando esté sobre ella presione el trackball.
  13. El celular iniciará el proceso de upgrade el sistema operativo, por favor no apague el celular o intente hacer nada más hasta que el celular vuelva por sí mismo al modo de operación normal, momento en el cuál ya tendrá Android 2.3.3 corriendo en su Nexus One.

Aquí unas capturas de pantalla de Gingerbread en mi Nexus One (a tamaño completo 480×800):

Android 2.3.3

 

Android 2.3.3 Home Screen

 

Android 2.3.3 Main Menu

 

Android 2.3.3 Applications Manager