martes, abril 19, 2011

book review: Programming Python de Mark Lutz

Este es un análisis de la cuarta edición del libro "Programming Python" de Mark Lutz, publicado en Diciembre de 2010 por O'Reilly. Este análisis está dentro del programa de O'Reilly para bloggers (básicamente con algunos títulos, O'Reilly te ofrece el ebook si haces una review en tu blog y en una web de venta como la suya o la de Amazon; en tu blog no hace falta que sea en inglés).

Antes que nada, como recomendación personal, posiblemente los cuatro lenguajes de interés para que un programador sea versátil, son C/C++ (al menos a nivel básico), Java, Javascript y Python. Python es el único que no tiene sintaxis basada en C, pero no es complicada.

Acerca del libro (o sea análisis antes de valoraciones personales)

El gran cambio de esta edición respecto a la segunda es que trata Python 3. La versión 2.6 de Python no se considera en el libro salvo a efectos de migración, es decir, cuando algo se hace de forma distinta en la versión 3 que en la versión 2, se dice que ha cambiado pero sólo se explica cómo hacerlo con la versión 3. Dado que hay varios módulos que no se han migrado aún de la versión 2.6 a la 3, hay desarrolladores que todavía pueden verse obligados a programar con la versión 2.6 y tendrán que recurrir a documentación adiccional: la tercera edición del manual de referencia de Python del mismo autor por ejemplo cubre tanta la versión 3 como la 2.

Este libro no es para aprender los fundamentos del lenguaje, sino el cómo aplicarlo (a través del API disponible) en tres dominios en los que se usa mucho Python: scripts de programación de sistemas (lo que antes era el dominio absoluto de Perl), programación y prototipado de interfaces gráficas y programación de aplicaciones de red, tanto en el lado servidor (web) como en cliente. Estas partes no las trata el libro de forma totalmente independiente, por lo que se recomienda leer el libro secuencialmente. En la parte de programación de sistemas se entra en temas avanzados no habituales cuando sólo se habla de programación de scripts, como los hilos. Se añaden capítulos para tratar temas como persistencia de datos, procesado de texto (uno de los fuertes de los lenguajes de script especialmente Perl y Python) y la integración entre C y Python.

El enfoque del libro es práctico, con numerosos ejemplos incluidos el desarrollo de algunos programas completos de relativa complejidad como un programa de correo.

Este libro es la pareja de "Learning Python", que cubre el aprendizaje del lenguaje pero sin entrar en su aplicación práctica ni en el rico API disponible, objeto de este libro. No hace falta leer "Learning Python" para abordar este libro (yo de hecho no lo he leído). Pero sí al menos algún buen tutorial de Python (por ejemplo aquí hay en español) porque aunque se repasen algunos conceptos al comienzo del libro, en algunas partes el texto no se sigue fácil si no se tiene una base previa.



Valoración personal

El libro está bien escrito, no en vano su escritor tiene gran experiencia en formación con Python. Es muy didáctico y se entiende bien.

El libro tiene nada menos que 1632 páginas en su versión impresa. He analizado la versión digital (obviamente con mismo contenido que libro impreso), que he leído en parte en el Kindle (son demasiadas horas de lectura para usar un ordenador). La edición para este lector de ebooks está bastante bien hecha, con algunas excepciones como el no haber reformateado los listados para poner los comentarios arriba de las línea a comentar en lugar de a la derecha, que hacen que a veces se salgan y salten a la siguiente línea por ser menos ancha la pantalla del Kindle que el libro impreso.

A quien se plantee comprar el ebook, le recomiendo que lo haga en la web de O'Reilly, pues además de no tener DRM se  puede descargar en varios formatos tanto de ebook como PDF, sin tener que pagar de nuevo, además de potencialmente actualizarse las erratas (por cierto, extraño que autor mantenga su propia página de erratas en su web al margen de la página de la editorial y no las sincronice, con lo que algunas se pierdan en las reimpresiones). El PDF es conveniente cuando se quiere leer a la vez que se práctica en el ordenador (más sobre multiples formatos en este mismo blog). Si lo compras en la web de O'Reilly, para tener el 50% de descuento registra tu usuario y compraló conjuntamente con algún otro título (puede ser uno de los más baratos, aunque se hable de 2x1, afortunadamente no es el más barato gratis sino los dos al 50%). Por supuesto otra razón es para evitar intermediarios.

En mi opinión, un factor negativo en el libro son sus 1632 páginas (si además leemos Learning Python para aprender antes el lenguaje son otras 1216 páginas). No es que el libro se haga aburrido, pero posiblemente muchas personas no tengan tanto tiempo y prefieran un libro más directo que en menos páginas explica tanto el lenguaje como su uso. En ocasiones la mayor extensión además no es por explicar mejor o introducir más conceptos, sino por reiteración, explicar variantes sin mucho interés y por hacer comentarios que unas veces son útiles e interesantes pero otras veces no.

En cuanto a los contenidos abordados en el libro, encuentro útiles toda la parte de sistemas y la de procesado de texto, pero por ejemplo no tanto la dedicada a programación de aplicaciones gráficas ni la de clientes de Internet como el de correo. Aquí entran temas de apreciación personal sobre para lo que es útil o no Python, por lo que otra personas pueden valorar de forma distinta los contenidos. Mi visión de Python es que es útil para scripts (remplazando a los shell scripts y Perl), para prototipado rápido y para aplicaciones de escritorio como alternativa a usar GTK+ desde C o Qt desde C++, pero no para aplicaciones de servidor que tengan que escalar para muchos usuarios o alcanzar cierta complejidad y extensión, para lo que está mejor preparado e incluso con las últimas versiones, con frameworks como Spring, es más productivo Java.

A mi entender ahí el libro no ha envejecido del todo bien (¡la primera edición es de 1996!); aunque el autor haya hecho un gran esfuerzo de adaptación en cada edición, tal vez los ejemplos como el programa de correo o el de FTP eran atractivos en su origen pero no tanto ahora. Así mismo no encuentro útil entrar en tanta profundidad en Tkinter para interfaces gráficas. El tema es que aunque Tkinter tenga la ventaja de estar instalado casi siempre que lo está Python, para hacer aplicaciones con apariencia nativa son mucho más útiles los bindings de wxWidgets, Qt o GTK+; Tkinter tendría su papel, pero para dar interfaz gráfica a scripts, no a aplicaciones complejas. Como he dicho, esto es un tema de apreciación personal sobre la idoniedad de Python para unas tareas u otras, por lo que recomiendo analizar la tabla de contenidos y juzgar acorde lo que cada uno espera usar del lenguaje.

En definitiva, si tuviera que resumir si recomiendo o no comprar este libro, diría que depende. Para quien tenga poco tiempo, le recomendaría que buscaran otro libro más breve, sin tanta parte de Tkinter ni por ejemplo la parte del programa de correo o del cliente FTP. Ahora bien,  si a una persona la tabla de contenidos, el precio y la extensión le convence y su única duda es si luego el texto va a estar a la altura, entonces  le diría que sí.

El libro que sí recomiendo, sobre todo para tener en el Kindle, es "Python Pocket Reference", también de Mark Lutz. Incluso si se tiene experiencia con otros lenguajes, se ha leído un tutorial básico y uno se pone muy burro (al ser obra de referencia no hay orden secuencial de lectura y aparecen conceptos que se definen en partes posteriores) es posible aprender directamente con él ;-)

I review for the O'Reilly Blogger Review Program

viernes, abril 15, 2011

¡Promocionar la web de la película, no un portal, almas de cántaro!

González Macho, el nuevo director de la Academia de Cine, ha comentado:
Estamos en un modelo obsoleto y hay un modelo que está por llegar en el que, indudablemente, internet jugará un papel muy importante, pero no se sabe exactamente muy bien cuál va ser aún.
Hay que reconocer que al menos González Macho es un empresario que  ha tratado de moverse. Creó un portal para alquilar el visionado de películas por streaming, que no está resultando bien económicamente. Y de esto va la entrada de hoy de este blog: si el futuro del cine para evitar las descargas puede estar en promocionar este tipo de portales o tiendas en que puedes ver una película por streaming tras pasar por caja.

Desconozco si el alquiler de películas vía streaming va a ser un buen negocio en España en el futuro, pero tengo una cosa clara: la mejor opción para la industria del cine no está en promocionar que haya un portal de cine de pago, sino lograr que toda persona dispuesta a pagar por ver la película por Internet  acuda directamente a la página web de la película.

Un portal hace de intermediario y eso supone perder un porcentaje (veremos si el portal aporta un valor que lo justifique o no). Aún si el portal lo promociona la propia Academia o el gobierno para que el porcentaje que se pierda sea menor, sigue habiendo un problema: ¿puede ese portal competir a la hor a de atraer usuarios con los auténticos profesionales de la intermediación 2.0, como las telecos, Amazon, Google o Apple? Por ejemplo, Telefónica cuenta con la ventaja de tener la red de comunicación, facilidad para cobrar fácilmente las películas (a través de la factura normal), experiencia con Imagenio y capacidad para ofertar hardware al cliente conectado directamente al televisor. Amazon cuenta con base de clientes con medio de pago ya registrado, Apple lo mismo y además dispositivos y clientes acostumbrados a comprar en su tienda multimedia. Puede que fabricantes de televisores también se planteen en el futuro poner sus propias tiendas.

Si la gente se acostumbra a los portales en lugar de ir directamente a la web de la película, la industria del cine perderá su oportunidad de ahorrar vendiendo por Internet frente al canal tradicional: simplemente lo que antes se llevaba el distribuidor (que al menos pertenecía a la industria del cine) y la tienda (en la que al menos trabajaba mucha gente si sumamos todas), ahora se lo va a llevar otro que a lo peor es una multinacional sin apenas infraestructura en España y pagando la mayoría de impuestos fuera, como el caso de la tienda de aplicaciones de Apple.

Por supuesto, un portal puede ofrecer algunas ventajas. Pero la mayoría se pueden conseguir
mediante una plataforma común, que el usuario estará usando desde la web de la película de forma transparente en lugar de desde la web del portal. Por supuesto por usar los servicios de esa plataforma común también se paga, pero al ser transparente para el usuario realmente las productoras pueden negociar quién lo ofrece más barato porque pueden cambiar cuando quieran: los clientes son suyos, no de la plataforma, cosa que no ocurre con el portal.

Por ejemplo, mediante una plataforma a modo de servicio transparente para el usuario y sin necesidad de portal, es posible:
  1. ofrecer a las web que lo deseen toda la infraestructura del pago y del streaming
  2. hacer ofertas especiales del tipo 2x1, aunque las películas las hayan producido empresas distintas que simplemente se van a repartir al 50%.
  3. Si hay un sistema de pago común, es posible ofrecer un control "neutral" de una funcionalidad interesante de las tiendas y portales: las estadísticas de más vendidos y las valoraciones de los clientes comprobados (que al haber pagado a través de la plataforma se sabe que realmente han pagado por la película).
¿Y qué hay de la ventaja promocional que ofrece un portal? a ver, no aporta lo mismo un portal para enterarte que existe un juegecillo para el iPhone que para saber que existe una película sobre un tal Harry Potter. A tu página web de la película puedes llegar por publicidad de muy diversos modos: campañas publicitarias tradicionales, en Google Ads, o dar comisión a las webs de cine que te traigan clientes. Hasta los propios torrents son publicidad de las películas.


Esto me lleva a otro punto: la web de una película debería ofrecer la posibilidad de convertirte en un "micropatrocinador" de la película, donando por ejemplo un mínimo de un euro. Reconozco que si me descargo una película y no me gusta no pienso donar ni un duro, pero sí si me gusta. Puede que mucha gente que descarga no done nada (pero es más inteligente hacer campaña para que donen que llamarlos ladrones) pero lo que se saque es dinero limpio y sin gastar realmente nada en infraestructura para el streaming porque la película la han conseguido ellos por su cuenta Si una donación mínima de un euro parece poco ¿qué margen queda por copia alquilada a través de un intermediario con un portal de streaming, o de un alquiler en un videoclub?

lunes, abril 04, 2011

intolerancia religiosa y derecho a ridiculizar religiones

Para que nadie se queje y no pierda el tiempo si no le interesa, adelanto que esta entrada es para cuestionar el supuesto "derecho" a ridiculizar religiones. Richard Stallman es un tío al que aprecio muchísimo por lo que ha hecho por el software libre y siempre trataré de disculpar sus excesos, pero eso de que ridiculizar a las religiones es un derecho, no trago.

El tema de las creencias personales es muy delicado. Hay gente a quien la religión se la trae al pairo, gente con una actitud similar al paganismo romano (dedico un poco de tiempo a honrar a los dioses con la esperanza de que me favorezcan o para no cabrearles), personas que creen en el más allá y aunque les preocupa ante todo "el más acá"  porque el futuro lo ven lejano, sí tienen cierta sensibilidad religiosa. Y finalmente personas para las que la religión es el tema más importante de su vida (y no son sólo el cura o la monja que deciden no casarse y apostar todo a que Dios existe y es como creen).

A lo que voy es que una persona de bien no se dedica a tocar las narices (por no decir otra parte) a la gente en temas que le importe y además es bastante cuidadoso en todo lo que se refiere a raza, origen, taras físicas, sexo y religión.

Hay personas que les duele cuanto se meten con sus creencias religiosas. Si crees que aún así debes hacerlo, aunque les duela, porque es lo mejor para ellos, puede ser una razón, aunque piensa en lo que haces porque estás metiéndote en terreno pantanoso y puedes justificar que otros como los fundamentalistas apliquen el mismo criterio por tu supuesto bien para curarte de tu increencia ¿qué es la vida al lado de la eternidad?. Pero lo que es de hijos de puta, con perdón, es que creas que puedes hacerlo sólo por divertirte.

Por otro lado, hay unos pocos ateos, afortunadamente minoría entre los que no creen, que han hecho del ateísmo otra religión, tremendamente proselitista. Con estos "creyentes en el ateísmo", a veces me río con su ingenio (como con unos predicadores evangélicos que desde un coche radiaban una locución que contaba un chiste y al poco paraban y decían: "qué pasa, ¿te interesa un chiste y no la palabra de Dios?") pero otras veces resultan más plastas que los testigos de Jehová cuando llamaban a las puertas de las casas.

La diferencia es que mientras que el resto de religiones, al menos en el mundo occidental, han aprendido como mínimo a tolerarse y vivir más o menos pacíficamente, estos neoyihaidistas creen que hay que aniquilar toda forma de idolatría y buscan la confrontación. Eso sí, como estos no creen en las nosecuántas  vírgenes para quien muere en guerra santa (menos mal, porque a veces me parece demasiada cierta la coña de Chesterton "Cuando la gente no cree en Dios, termina creyendo cualquier cosa"), por si acaso sólo van a por los católicos que los musulmanes tiene muy mala leche.