javisantana.com

Python para Nokia

Hace tiempo queya había leído que para algunos terminales nokia se podían hacer scripts en python, pero últimamente estoy leyendo bastantes más cosas interesantes al respecto. Empezando por el este post en el blog del creador de python Guido Van Rossum en el que habla de forma bastante optimista de python sobre un nokia. Imagino que parte de esta alegría será debida a que nokia ha decidido hace unos días sacar al público la versión de python para la serie 60. Lógicamente la liberación no es fruto de la casualidad, en palabras del Guido:

“Opening up the platform makes the phones accessible, and will inevitably lead to cool new applications, as well as to third-party improvements to the port itself.”

Lo cierto es que usar python es algo bastante interesante, sobretodo cara a la programación de software para móvil que parece que es lo que se lleva y va a llevar. Es un lenguaje simple y con un montón de API que por si fuera poco puede extenderse para nokia con C++. Lo cierto es que es muy parecido a java, no sé realmente la razón por la cual nokia no ha tirado por el camino de java…

Tengo unas ganas locas de que salga algún API similar a pygame para nokia y empiecen a hacerse cosillas. De momento solo he visto una aplicación ( no he mirando demasiado la verdad), aunque bastante jugosa eso sí, con python sobre nokia. Se trata de una aplicación para registrar las posiciones durante el senderismo: pytrek

De momento si tienes un nokia puedes empezar por las serie de tutoriales para S60. Viendo algunas cosas como esta da miedo pensar en si una persona malintencionada te cuela un .py en tu móvil.

Programación de juegos en linux

Em linuxjuegos leo un artículo muy interesante que enlaza a una web, losersJuegos. La web habla sobre videojuegos, tanto los que crean ellos, como los que te enseñan a crear gracias a una serie de tutoriales bastante bien ilustrados y fáciles de seguir. Además he visto algo que nunca había visto, en los juegos que tienen colgados creados por ellos mismos dejan la documentación del código generada con doxygen.

Además, en linuxjuegos hace tiempo que empezaron una serie de tutoriales sobre programación de juegos en linux usando python (sí!): presentación, tutorial 1, tutorial 2 y tutorial 3 , creación de un space invaders. Además en su foro hay algunos post interesantes sobre programación de juegos.

De regalo un uso para python: añadir un marco a una foto.

PD: y otro regalo más: pyspacewar

Reflexión sobre el software libre

En estos momentos estoy programando un mecanismo de protección para el ejecutable que surgirá de la compilación de todo mi trabajo con el PFC. Es un sistema clásico de “license-key” en el que no estoy empleando mucho tiempo porque está claro que si quieren sacarte el sistema de protección, lo harán.

Pensaba yo que qué ganaría si en vez de usar un sistema de este tipo pusiera el código de la aplicación bajo GPL y la colgara en una página web. Siempre he leído que libre es distinto de gratis, pero no acabo de pillarle el tranquillo. Qué hago, vendo los fuentes?, vendo la aplicación ya compilada pero dejo libres y gratis los fuentes, vendo todo junto?.

Pongamos el caso de que dejo libres y gratuítos los fuentes, nada impediría a un agricultor bajarse los fuentes, compilarlos e instalarlos en su pocketpc. Es muy posible que nisiquiera llamara al servicio técnico, es decir, yo, para solucionar algún problema, instarle la aplicación o enseñarle a manejar.

Mejor voy a pensar con números. Imaginemos que la aplicación la vendo por 100€ por poner un coste, por la ley de la oferta y la demanda habría X compradores dispuestos a pagarlo. En caso de dejarla libre y gratuíta, esto es, distribuyera los fuentes, por la ley de la oferta y la demanda tendría muchas más personas dispuestas a consumir el software y asumo que un porcentaje de esas personas me llamarían para pedir soporte, instalación o cualquier otra cosa relacionada. Qué porcentaje de personas lo harían? a cúanto debería cobrar el servicio para que fuera tan rentable como venderlo?. uf.

Ahora introduzco otro factor, el HW. La aplicación debe correr en pocketpc cuyo coste actual supera los 250€, con lo cual la ley de la oferta y la demanda en el caso de darlo gratis ya no sería tan favorable, se complica la cosa.

Por tanto no entiendo de donde puede venir el dinero de la gente que se dedica a programar software libre, es más, si yo sacara mi software libre, qué impediría que otra personas cogiera mi código, lo mejorara y lo vendiera, haciendo un 10% del trabajo que yo he empleado. Eso está muy bien cara al usuario, pero no me parecería bien si la persona no me diera la parte correspondiente a mi trabajo del precio de venta del producto.

Miremos desde el punto de vista de la venta del código. Si yo vendo el código, puede darse el caso anterior, una persona me lo compra (como un agricultor más), lo mejora y me jode mi negocio. Supongamos que nadie hace eso, esto es, por cada copia que vendo yo doy los fuentes, los binarios, instalación y cierto soporte, qué mejora que yo entregue el código fuente al agricultor?

Mire por donde lo mire no encuentro cómo funciona el negocio del software libre. Tal vez la gente de consultux pueda explicarmelo ya que tiene área específica de desarrollo de software. Quizás Mario(por cierto, interesante y jugoso artículo sobre creación de meta distros en llaves USB) o Jorge puedan hacerlo, o espero que alguien de planet augcyl.

Usa python por favor

En mi serie de artículos sobre “usa %s por favor” % cosa no puedo por menos que exponer por qué una personas de la calle _debe_ usar python en el día a día de su relación con su máquina (no hablo de PC, ojo).

Joder, quién no ha querido cambiar un montón de ficheros de una vez, procesaor ficheros de texto, modificar imágenes, capturar imágenes de una webcam, hacer un juego, abrir una hoja de excel y modificarla, hacer una web, dar de comer a tu gato de forma remota, hacer un sistema distribuído, hacer una aplicación de contabilidad, manejar el puerto paralelo/serie o símplemente que querido librarse de crear la típica tarea que sabes que se puede hacer automáticamente pero que realmente no sabes como o eres demasiado vago para ponerte a programarla.

Todos estas cosas y muchas más las puedes hacer con python. Para el que no sepa ni de lo que estoy hablando te diré que python es un lenguaje de programación simple y potente y que en no demasiado tiempo te puede permitir hacer cosas que ahora mismo piensas que son imposibles de hacer para tí. Para abrir boca puedes leer la página de wikipedia sobre python. Si ya sabes lo que es python, no sé qué haces que no estás usandolo pero ya.

Qué tiene python de bueno:

- Es simple de usar y de aprender.
- Permite hacer desde programas de una línea hasta el infinito.
- Permite hacer prácticamente de todo en casi cualquier dispositivo.

Basta con bajarse la última versión para tu SO preferido (windows, en linux suele venir con la distribución, aunque puedes bajarlo y compilarlo tú mismo) y empezar a echar un vistazo a la documentación, en concreto al tutorial (inglés, español) y empezar a hacer cosas. Cuando digo cosas no digo el típico printf(“hola mundo”), hablo de cosas que pueden resultar útiles. En mi caso lo uso casi siempre para ahorrarme trabajo en la edición de código, extraer datos de cabeceras… por ejemplo, en mi proyecto fin de carrera lo uso para generar un fichero de texto con la simulación de una trayectoria de un tractor en una tierra. Es totalmente posible hacerlo en C/C++ o cualquier otro lenguaje, pero Python ofrece un montón de herramientas, por ejemplo , en este caso me permite manipular las cadenas con facilidad, usar perlin noise (para hacer variar la trazada suavemente), grabarlo a fichero, etc.

Lo que más me gusta de python es que cuando llevas un tiempo usándolo puedes empezar a hacer verdaderas virguerías. Por ejemplo, puedes capturar imágenes de tu webcam y procesarlas y todo esto con poquísimas líneas de código:

_
from VideoCapture import Device

cam = Device()
cam.saveSnapshot(‘image.jpg’)
_

Simple no?, pues con esa extensión y, por ejemplo, PIL (python image library) puedes crear listas de las capturas tomadas en pequeñín. Seguro que hay muchísmas cosas que se te puede ocurrir y que fácilmente se pueden hacer con python.

Pero no solo hay esto, puedes hacer juegos con pygame (por ejemplo como este de r3d de rgba XDD) o como makefight (pronto noticias), puedes embeberlo para usarlo desde tu aplicación en C++ con las facilidades que da swig, puedes usarlo en tu nokia, en tu pocketpc… qué más se puede pedir?.

Como lenguaje se puede decir que tiene un API brutal, que es interpretado, que es orientado a objetos incluídas las facilidades del garbage collector y que prácticamente te obliga a mantener un código limpio. No voy a enumerar algunos de sus problemas para no ensuciar el post :/.

Nada más, solo que visites la página oficial de vez en cuando, alguna página de noticias para saber lo que hay de nuevo o el weblog del creador… Ah! y que no dejes de practicar :).

XGL, toma !

versión reducida de XGL para windows. Breve pero intensa.