Proyecto Pico: Idea para Tesis

July 12, 2008

Tal vez el título del post sea algo extraño. Debido a un cambio de políticas de en la USAT, es requerido proponer con antelación el tema de Tesis, justamente para evitar el tráfico de Tesis ya hechas y demás perlas.

No obstante estoy en III y IV ciclo de Ingeniería de Sistemas, por lo que pensar en una tesis es muy prematuro todavía. Sin embargo algunos profesores ya nos exigen tener una idea, por lo que pasando una noche en vela pensando, se me acaba de ocurrir una: El Proyecto Pico. (Personal Identity Comunication)

Partimos del problema de las comunicaciones celulares. Muchos jóvenes, como el que les habla, necesitan el envío de Mensajes de Texto para coordinar asuntos personales y académicos. Sin embargo, por lo general la mayoría de SMS son los siguientes:

¿Donde estás [nombre_alguien]?

¿Estás en [tal_lugar]?

Muchas veces perdemos el poco saldo del que disponemos para estos propósitos. No olvidar que los SMS son la gallina de los huevos de oro de las operadoras de telefonía, y que al menos en algunos países su cobro es arbritario.

A su vez, he visto la proliferación de dispositivos Bluetooth en teléfonos celulares de última generación. Generalmente se les usa para transferir archivos de celulares a celulares o música de celulares a PC. Algunos los usan para operar audífonos de mejor calidad que los alambrados. Según Wikipedia el Bluetooth posee alcances que van desde 1 m a 100 m. Incluso hay aparatos que aumentan el alcance a 45 km. (Aunque por lo general son aplicaciones industriales)

100 metros para una Universidad es algo razonable y si usamos los equipos de aumento de señal… podemos cubrir toda una manzana. Es una forma fácil y barata de transmitir (Barata no tanto, porque gasta más batería al móvil). No obstante es de locos querer abarcar con un sólo móvil todas esas distancias. A lo máximo podremos un par de decenas de metros.

El Proyecto Pico (Personal Identity Comunication), es una idea para mi proyecto de Tesis que pretende crear un protocolo de comunicaciones que tenga todo lo que cualquier estudiante necesite para comunicarse de sus labores académicas. Se incluye: SMS y Localización de Personas (Algo así como un GPS muy básico)

Sobre el SMS, es importante la privacidad de los usuarios, pero a la vez la capacidad de procesamiento de un celular es muy baja como para usar algún Algoritmo de Cifrado fuerte como AES. Supongo que usare Base64 para encriptar en parte el SMS y luego se aplicará un cifrado simple. La información debería ir compresa para garantizar la máxima eficiencia.

Pero un móvil no puede cubrir todo un Campus. La señal se atenúa debido a la resistencia con el aire y demás fenómenos. Es aquí donde entra un concepto muy importante: El P2P. Nos basamos en la idea de que los celulares pueden emitir y transmitir señales ajenas. Antes de describirlo, llamaremos a los celulares que emiten "nodos" y a los que transmiten "super-nodos".

Todo celular tiene un identificador único dentro de la Red Pico. A este lo llamaremos "PNID" (Pico Network ID). Todo dato enviado posee una cabecera en la que indica el PNID origen y el PNID destino. Acto seguido lleva otros detalles, como tipo de encriptación, etc. Cuando un nodo emite un "paquete" de datos, este puede ser recibido por cualquier otro nodo que esté disponible. Si el nodo es el destino especificado, se muestra en pantalla del móvil. Si no lo es, ese nodo se convierte en un super-nodo y vuelve a emitir el paquete a otros celulares. Estos seguirán enviando el paquete hasta que den con el nodo destino. Si hay que responder, el paquete será envíado de regreso por todos los nodos que encuentre. (No lo hace por los mismos que envió, ya que pueden apagarse).

En el caso de la Identificación personal, se presupone que todos los móviles pueden enviar un paquete indicando su alcance. (De 1 a 100 m, por ejemplo), por lo que basta crear una lista de contactos que tenga relacionado un PNID específico por cada entrada. Luego se emite un paquete de búsqueda, que registre por donde pasó el paquete en cuestión. De esta manera el usuario buscado puede saber al menos a cuanta distancia aproximada se encuentra del que quiere buscar. Si no encuentra a nadie en un tiempo de espera… se asumirá de que el usuario está fuera de cobertura.

Finalmente, esto puede implementarse dentro de un software escrito en algún lenguaje como Java o C++ (Caso de móviles con Symbian) e usarse como programa o como un driver. Se puede usar el IMEI como PNID para evitar suplantaciones.

Propondré este proyecto a mis profesores responsables. Si es aceptado, lo llevaré a cabo cuando llegué a mis ciclos finales. A su vez prometo liberar todo lo relacionado con Pico.

El nombre de Pico viene del editor pico de UNIX y de las siglas Personal Identity Comunication.

Actualizacion (19 -  06  - 08): Gracias a Volkan Rivera y a Vicky, he visto que esta idea mía tiene puntos flojos como el alcance y la seguridad. Si no hay celulares Bluetooth, la idea se vuelve inútil y todavía este tipo de celulares son un lujo en el Perú. Me propusieron además que el móvil envíe la señal a una antena ubicada en el Campus, por si no hay receptores cerca. Seguiré perfeccionando la idea.

Abelia Process Manager

July 6, 2008

Habiendo terminado mi curso de Sistemas Operativos con la Profesora Karla Reyes, me dispongo a publicar para mis lectores y demás, el programa que hice para fin de ciclo: Un Administrador de Procesos para Cygwin.

Cygwin es una capa de emulación entre Windows y “POSIX” (Entre comillas lo pongo porque sigue siendo Windows), para poder correr aplicaciones escritas para sistemas operativos compatibles con esa norma.

Dado el carácter “Linux” de mi programa, decidí trabajarlo con la consola y usando las ncurses como librerías para los menúes “gráficos” de mi aplicación. Al programar descarté a C por los problemas que me daba, y finalmente opté de nuevo por Python.

Decidí que mi programa tendría 3 partes: Un Menú, un creador de procesos y un eliminador de los mismos. Sin embargo deseaba algo más original que el simple “Menú”, “Creador” y “Administrador”. Buscaba nombres originales para mis componentes.

Para los interesados en la programación, los procesos bajo Cygwin se alojan en el directorio /proc (Al igual que en Linux), leyéndose algunos archivos para obtener información de los procesos. Pueden leer un buen recurso aquí. Para matar procesos se usa el comando kill() y para crearlos fork() y execv(), todos ellos definidos en el módulo OS de Python.

En esos días de programación terminaba de ver la serie Ima soko ni Iru Boku (Ahora y entonces, aquí y ahora, en japonés) en la que el argumento principal es el horror de la guerra infantil. De esta serie me llamaron la atención un par de personajes: Abelia, una comandante muy estricta, Shu, un chico que se negaba rotundamente a las acciones militares y Tabool, un sujeto cuyo único deseo era escalar en el poder generado por la guerra.

Como pueden notar, mi título ya hacía referencia a uno de esos personajes, es decir que decidí llamar a mis componentes usando a los citados personajes. El asunto quedó así:

  • Menu Principal (Abelia Process Manager): Es el componente principal que llama a los otros dos.
  • Creador de Procesos (Shu’s Process Creator): Creador de Procesos. El nombre Shu también es un acrónimo de Shell Utility.
  • Administrador de Procesos (Tabool Process Manager): Administrador de procesos. Permite la eliminación de procesos.

Decir que al exponer este programa y al explicar los nombres me llevé algunas miradas extrañas de mis compañeros e incluso de mi profesora, no acostumbrados a estos extraños asuntos (Para ellos, del Anime)

Los interesados en ver el código fuente, pueden obtenerlo aquí. Todo el código está licenciado bajo Licencia MIT. Debo advertir que el código tiene algunos errores aún y sólo se ejecuta en Cygwin, debido a unas “características” propias de la emulación. Si se animan a portarlo a Linux completamente les estaría muy agradecido, siempre y cuando respeten el nombre de los programas.

Podría decirse que ese fue mi otaku-trabajo del ciclo. Dado que la reacción no fue del todo desfavorable, quizá planee otra referencia en algún trabajo futuro.

PDF ya es estándar ISO

July 4, 2008

Leo en Barrapunto, que ISO ha ratificado la estandarización del formato PDF, por lo que ya posee un ISO propio, en este caso el ISO 32000-1.

Con esto, el famoso formato de Adobe ya tiene una especificación formal y definida que podrá usarse para garantizar interoperabilidad con las aplicaciones que lo manejen.

La Norma ISO publicada, cubre la versión PDF 1.7, que es la que ha sido ratificada como estándar. Si bien es cierto que ya existían versiones del PDF como estándares ISO para la conservación de documentos… no llevaban todavía el rótulo de "PDF" respectivamente. Esta publicación es un estándar ISO rotulado como "PDF", por lo que no hay más ambiguedades respecto al formato.

Los interesados pueden ver los documentos enviados a ISO por parte de Adobe aquí, o bajar la Especificación PDF 1.7, aquí. (Aproximadamente 31 MB)

Con esto aprobado, esperemos que OpenOffice.org tomo despegue ya que por el momento puede exportar PDF de forma nativa y se planea que permita la edición de PDFs en sus futuras versiones. A la vez, hay que destacar la decisión de Adobe, ya que hasta antes del ISO 32000-1, el PDF era sólo un estándar de facto.

Firefox 3 Download Day

June 17, 2008

La Fundación Mozilla ha esta preparandose para lo que sería el lanzamiento de la versión 3 del navegador libre Mozilla Firefox. Por esta razón se prepararon con una idea que era registrar tal cantidad de descargas que Firefox entrase en los Record Guiness.

Este es el llamado Firefox 3 Download Day y fue programado para el 17 de Junio del 2008. Sin embargo, hay un comunicado del blog de Mozilla en el que se ha pospuesto la fecha al 18 de Junio.

¿Pero esto a que se debe? La respuesta es sencilla. La acogida ha sido tal, que en este momento algunos sitios de Mozilla se encuentran caídos.

Se puede bajar el navegador mediante FTP o BitTorrent, pero lamentablemente estas descargas no serán contabilizadas ya que hay muchos usuarios (Con buenas intenciones) que han creado bots para bajar más copias y lograr un número mayor en el record. Sin embargo Mozilla no contabilizará esas descargas. No sería algo justo para el Record Guiness.

Resulta irónico que Mozilla haya muerto de su propio éxito. Son las 10:47 pm en el Perú del 17 de Junio y sin embargo no he podido bajar Mozilla aún debido a la sobrecarga de servidores. Los interesados de saber como va la descarga a nivel mundial pueden consultar los medidores de Mozilla o si prefieren un contador más "en vivo", este otro de Mozilla.

Y como todo buen software libre, Mozilla se preocupa por su comunidad, al tener una plataforma donde las personas que deseen organizar una celebración con respecto a este evento. Este es el caso de Mozilla Party. Lamentablemente no existe ninguna fiesta registrada para el Perú, pero ya me encargaré de hacer yo una no oficial.

Finalmente para los interesados en dejar constancia de su participación pueden imprimirse un atractivo .pdf con un certificado de participación en la propia página del evento. Y como extra, dejo un botón de Mozilla para promover el evento.

Download Day

 

 

 

 

 

 

 

 

Feliz descarga de Firefox 3. Si no lo haz usado… ¿¡Qué esperas!?

Algoritmo de Kamaleon2

May 1, 2008

Otra vez tiene que ser el Anime y las preferencias de algunos uploaders las que me hacen toparme con un programa curioso, al cual tengo a veces que "reescribirlo" por simple gusto, o por simple incompatibilidad con algún sistema operativo que uso.

En este caso, el afortunado a sido Kamaleon2, un programa de camuflaje de archivos, cuyo algoritmo estudiaremos, ya que lo necesitaba para bajar la serie Noir, que por cierto la recomiendo si les gustan las historias de sicarias y organizaciones secretas. (Noir en francés quiere decir ‘Negro’).

Pues bien, instalándome las extensiones GNU para Windows, crearemos un archivo llamado prueba.bin y lo llenaremos con la cadena ‘Noir’, para poder estudiar el algoritmo. Ejecutamos el siguiente comando:

yes "Noir" > test.bin

Tras unos segundos, pulsamos Control + C y ya tenemos un archivo que pesa 5 MB. Ahora abrimos el programa con un editor hexadecimal. Fhred para los usuarios de ventanas o hexdump para los usuarios de consola (Ambos son libres). Todo el archivo dice "Noir" línea por línea.

Abrimos Kamaleon2 y cortamos el archivo. Hay que aclarar que lo que hace Kamaleon2 es crear archivos .jpg de tamaños iguales al corte y les inserta una imagen JPEG de reducido tamaño y luego inserta una parte del archivo cortado, como Hj-Split. Al menos tras analizar las partes con un editor hexadecimal me di cuenta de esa situación.

¿Pero no se supone que si pongo un JPEG y añado más cosas ya no se lee el archivo? No necesariamente. Aunque actualmente no poseo la documentación pertinente, he visto en varios JPEG los mismos 2 bytes de final: ‘FF D9′ en hexadecimal. Según Wikipedia, esos bytes indican el final del propio archivo JPEG.

Probe cortar y pegar la zona comprendida entre el inicio del archivo y los bytes ‘FF D9′. Si se genera la imagen JPEG completa, por lo que la marca de fin de imagen es correcta. Supongo que se hará por informacional adicional que se adjunta al JPEG, como cabeceras EXIF.

Pues bien, entonces simplemente para cortar y camuflar una imagen, simplemente abrimos un archivo nuevo .001, le adosamos un JPEG y justo después un "pedazo" de archivo a partir. Luego creamos otro archivo .002, le adosamos un JPEG y la siguiente parte de la imagen y así sucesivamente hasta acabar.

Para pegar los archivos lo tenemos un poco más complicado. Hay que separar el JPEG del archivo y empezar a unirlos. No estoy seguro si la cabecera de final se repite dentro del JPEG mismo, así que hay que buscar todas las aparariciones de ‘FF D9′ y elegir la última. Sin embargo en el último archivo hay cierta información de control que está "pegada" al archivo, y que debe ser eliminada antes de procesarlo, ya que de no ser así no se recrearía el fichero exacto. Eso es algo que está por verse.

Por otro lado, Kamaleon2 usa protección por contraseña en sus cortes. Sin embargo es totalmente inútil ya que la estructura es la misma que la explicada anteriormente. No se usa encriptación para proteger el archivo, de mod que la clave sea la que descifre. Así que simplemente leyendo más allá de ‘FF D9′ podemos saltarnos la contraseña.

Igual que con HJ-Split, pienso hacer una implementación en Python pronto. Ojalá en solo 24 horas, porque tengo inquietud del episodio de Noir.

FUSE: Sistema de Archivos para todo gusto

April 23, 2008

Quienes lleven tiempo en esto de la informática, muchas veces se han visto forzados a trabajar con archivos remotos, protocolos de red o grandes archivos que pueden ser .tar.gz o .iso, o hasta imágenes de máquinas virtuales.

En el caso de los FTP, SSH y demás el proceso es bajar los archivos a modificar y volver a subirlos al servidor. En el caso de trabajar mucho con hosting remoto esta solución puede ser desesperante. Hay aplicaciones que intentan paliar esto, pero o funcionan erráticamente o son costosas.

Ni que decir SMB (Protocolo de Red Windows) bajo Linux, usando Samba, hay que bajar los archivos para verlos, mientras que en Windows se pueden ver y hasta modificar "on-line" sin bajar nada al disco duro.

O también poniendo el caso de SSH en el caso de que usemos Sourceforge. Es desesperante estar modificando algo y subirlo a cada rato.

También pensemos en los .iso. No es agradable descomprimirlos para modificar algo (En el caso de querer ISOs propias de ISO ya existentes).

Y finalmente pensemos en si queremos ver un preview de esos inmensos directorios de descargas de distribuciones Linux y demás.

Alguno que me leyera pensará que estoy siendo demasiado sarcástico o burlón. En parte lo esta siendo, pero también hay buenas noticias… ¡Todos esos problemas tienen solución usando FUSE

FUSE, es un acrónimo para "Filesystem in Userspace" (Sistema de archivos en espacio de usuario), el cual permite crear sistemas de archivos sin necesidad de ser root para montarlos.

¿Cúal es la necesidad de implementar en espacio de usuario algo que se supone que debe estar en el Kernel? se preguntarán algunos… la respuesta es muy simple. Facilita muchas cosas e instalar diferentes programas sin necesidad de cargar módulos o recompilar el Kernel, cosas que sólo puede hacer un usuario root.

Usando esta librería FUSE, muchas personas han hecho "puentes" entre servicios web y demás hacia carpetas, permitiendo que muchos usuarios puedan facilitarse la vida. FUSE es software libre y está disponible para casi todos los derivados de UNIX (Linux, Solaris, MacOS y demás). No he conseguido información sobre una versión libre para Windows. Hay un port propietario aquí

Sobre las carencias que mencioné al inicio, todas ellas son solucionables con FUSE. Vamos a mencionarlas:

  1. SshFS: Un programa que "monta" un directorio vía SSH como un directorio local. Útil si se trabaja con SourceForge y similares. (http://fuse.sourceforge.net/sshfs.html)
  2. SMB for FUSE: Un programa que "monta" las redes Microsoft como directorios locales usando Samba. Útil si se integrase con las distribuciones o con el propio código de Samba para evitar descargar manualmente archivos. (http://www.ricardis.tudelft.nl/~vincent/fusesmb/)
  3. GmailFS: Un programa que usa una cuenta de Gmail como disco duro. Hay que advertir que ese uso está prohibido por Google en sus reglas de uso, pero sirve para lo que sirve. (http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html)
  4. HTTPFS: Un programa que monta un directorio HTTP dando la impresión de descargar "a la velocidad de la luz" cuando realmente descarga si el usuario realiza alguna operación con el archivo o los archivos online. (http://httpfs.sourceforge.net/)
  5. HTTP-FUSE-KNOPPIX: Un proyecto Japonés muy curioso y extravagante. Es una ISO de Knoppix de muy reducido tamaño (Varía entre los 5 MB a los 290 MB) que contiene sólo el sistema base mientras que el resto lo obtiene por Internet, montando lo que descarga en la raíz. Esto es útil para no descargar la ISO completa de 3.9 GB. (http://unit.aist.go.jp/itri/knoppix/http-fuse/index-en.html)
  6. CurlFtpFS: Un programa que monta un directorio FTP como si fuera un directorio local. Muy útil si se descarga de sitios FTP o se trabaja con webs. (http://curlftpfs.sourceforge.net/)
  7. FUSEISO: Un programa que monta una imagen ISO y demás formatos de imágenes de CD como .nrg. (https://sourceforge.net/projects/fuseiso/)
  8. BtSlave: Es un proyecto que permite "bajar más rápido" de BitTorrent al dejar montada como directorio el .torrent, por lo que sube el ratio de Upload y se beneficia la descarga. Está en Alpha.  (http://btslave.sourceforge.net/)
Según la propia web de FUSE es relativamente sencillo crear los sistemas de archivos (Un sistema de ejemplo posee menos de 100 líneas) y existen bindings a varios lenguajes como C++, C#, Java, Python, etc).

Aclarar que me enteré de la existencia de FUSE através del blog de Necudeco

bxSplit: HJ-Split en Python

March 29, 2008

Habíamos hablado una vez en este blog sobre HJ-Split y su algoritmo, el cual describimos y dejamos pendiente la implementación. Pues bien, que este corto post sea para informarles que he terminado mi propia implementación del algoritmo a la que llamo: bxSplit, es decir ‘BrunoxSplit’.

bxSplit está escrito en Python y está liberado bajo la MIT License.

Pueden descargarlo aquí. Renómbren el .py.txt a .py si desean ejecutarlo. Lo pongo así para que sea más facil a algunos, leer el código antes de bajarlo.

Aquí les pongo la ayuda del archivo:

Modo de uso:
    -h: Muestra la ayuda
    -s [MB] [File]: Divide el archivo [File] en trozos de [MB]
    -j [File.000]: Une el archivo [File.000] en el archivo [File]

Ya he actualizado el post del algoritmo para que vean el código por aquí.

Tengo que finalizar mencionando que este programa lo escribi debido a que se me pedía el programa HJ-Split en algunas descargas de Captain Tsubasa. ¡Ahora podré unir los archivos! 

Rectángulos con bordes redondos con Pygame

March 16, 2008

Los hemos visto en todos lados. Los rectángulos con bordes redondeados invaden el escritorio, los videojuegos y demás. Es la nueva moda. Y sin embargo muchos no sabemos que ese efecto muy llamativo es en realidad un simple truco de geometría.

Como tenía una aburrida tarde, me dediqué a programar con Pygame una clase que permita dibujar esta clase de figuras. Pueden ver el código fuente aquí

Si ejecutan el .py obtendrán el siguiente resultado:

Rectángulo con bordes redondos 

Pero aún no hemos hablado de como es el efecto. Bien, lo vamos a explicar.

  1. Obtenemos las cordenadas del rectángulo a dibujar
  2. Pedimos un radio para los bordes (A más radio, más redondo es el rectángulo)
  3. Restamos a las líneas que forman el rectángulo el doble del radio
  4. Dibujamos el borde redondo usando un arco. Para esto, atentos a lo siguiente:

Ur rectángulo es una figura de 4 lados y cuyos ángulos son de 90º. Sin embargo, para dibujar el arco, sabremos bien que un arco es simplemente un "pedazo" de círculo, por lo que especificamos los ángulos de inicio y fin del mismo. Entonces ocurre una curiosa correlación.

Si tenemos que un rectángulo originalmente tiene ángulos de 90º, 90 x 4 = 360º. Lo que significa que los arcos de los bordes son "1/4" de círculo. Por esa razón se usan los siguientes valores:

  • Borde Izquierdo Superior: 90º - 180º
  • Borde Derecho Superior: 180º - 270º
  • Borde Izquierdo Inferior: 270º - 360º
  • Borde Derecho Inferior: 0º - 90º 

Con eso tenemos todo un círculo perfecto. Por razones de imperfección de las pantallas y los ángulos se le han sumado +1 al borde izquierdo inferior. 

Ya tenemos una clase que dibuje rectángulos con borde. Sería deseable que alguien más entendido de Python analize el código para ver si es factible incluir esto dentro de Pygame. Al menos para mí, una función así sería muy útil.

El código es libre y puede usarse para lo que se desee. (Licencia MIT para los interesados)

He tomado ejemplos e ideas de la página LoserJuegos: Este y este.

El código fuente de la función __arc__ ha sido un mero porte de la función Arco() en C, de un código fuente de fhenix tomado de la página LoserJuegos. El código original es este

Cualquier error o mejora que propongan a este código favor de reportarlo en los comentarios. 

Evento Involúcrate: Día 2

March 8, 2008

Continuando con el anterior post en el que describíamos al evento Involúcrate, que es un intento de mejorar el nivel de apoyo que da el Perú a proyectos de software libre como GNOME y demás.

El evento del día 2, debió comenzó a las 10:00 am con una ponencia sobre OpenOffice.org, que no se realizó porque no llegó el ponente, o bien eso fue lo que escuché…

Tras el inconveniente empezó Pedro Villavicencio, un chileno, con su tema Cómo participar en el Bugzilla (QA) de GNOME [QA = Quality Assistance] en el que mencionó que hay muy pocos encargados de ordenar y clasificar los bugs que a diario se reportan en GNOME. Mencionó además que la tarea es en realidad sencilla y se reduce a saber GNOME a nivel usuario y tener un promedio de 30 minutos para lidiar con el ordenamiento de los bugs. También invitó a los interesados al Bug Days de GNOME que se realiza los Jueves en el canal #bugs de irc.gnome.org.

Acto seguido vino German Poo, un chileno, con su tema Cómo Involucrarse en GNOME extendiendo las aplicaciones. Explicó dos cosas: Los fundamentos de Python y como podemos usarlo para crear plugins para Nautilus y Gedit. El ponente también hizo hincapié en escribir documentación para facilitar el desarrollo de los plugins, ya que no hay tal documentación a la fecha.

Después hubo cierta descordinación de horarios, lo que provocó que entrara a la sala equivocada y escuchara a Nicolás Valcarcel, un peruano, con su tema Parchando paquetes de Ubuntu / Debian, en lugar de oír a Diego Escalante, otro peruano, con su tema Cómo usar GNOME versión de desarrollo: descargar, compilar y probar. En este caso oí a Nicolás Valcarcel, el cual habló de las 3 alternativas para crear paquetes .deb para Debian y para Ubuntu: Usando dh-make, quilt y cdbs. El ponente sólo habló de dh-make, la manera común de paquetes en Debian, quilt para parcharlos y simplemente mencionó a cdbs como una forma automatizada del proceso. También mencionó a lintian, un programa que verifica que no hayan errores en los paquetes .deb.

Con esas ponencias se acabó el turno de la mañana. Menciono que hubieron otras a las que no pude ir, por ser en paralelo: Dokeos e-learning: Cómo participar en el desarrollo y las pruebas, de Yannick Warnier, un belga, Participando en el Launchpad (QA) de Ubuntu, de Pedro Villavicencio, un chileno y Proyecto PEAR: Distribuyendo y mejorando tu código PHP, de Jesús Castagnetto, un peruano.

En la tarde se reanudaron las ponencias a las 3:00 pm. Se comenzó con Genghis Rios, un peruano y su tema Software Libre en la PUCP: Implementación, difusión y desarrollo [PUCP = Pontificia Universidad Católica del Perú] en la cual se habló de como implementar un aula virtual con software libre, usando TightVNC para control remoto, wbapplet para una pizarra virtual, xpdf para manejar el upload de .pdf, Imagemagick para ver previews y finalmente lame y mencoder (Parte de Mplayer) para subir mp3 y convertir .avi y demás a .flv. Aunque la última parte no es del todo libre: Flash Player, som embargo se usó Streaming con un proyecto libre que no logré apuntar, pero sospecho que sería Red5. También dijo que la PUCP planea liberar en el 2009 el Aula Virtual, más que nada por prestigio.

Acto seguido vino Fernando San Martín, un chileno, con su tema de Python y GTK, en el cual habló de como usar Python y GTK para crear aplicaciones sencillas e inclusive crear aplicaciones que manejen base de datos con la librería Kiwi. También habló de Django un framework en Python para desarrollo web. También mencionó su entorno favorito de Python: iPython.

Acto seguido vino Manuel Cerón, un colombiano, con su tema Desarrollo de Aplicaciones GNOME con MonoDevelop (C#), en el cual mostró como crear una aplicación GTK con MonoDevelop, como corregir errores, subirla por CVS, traducirla y demás. También mencionó a Stetic, un diseladir tipo Glade para Mono. Excelente ponencia.

Después, continuó Manuel Cerón, con otro tema: MonoUML y MonoHotDraw: Desarrollando herramientas CASE libres, en el cual mostró como se intenta crear una librería de gráficos orientada a trabajar con UML y una aplicación para modelado UML y eventualmente de Base de Datos. 

Luego vino Francisco J. Morosini, un peruano, con su tema: Un ERP adaptado al Perú: Xendra [ERP = Enterprise Resource Planning, Planificación de Recursos Empresariales], en el que habló del Proyecto Xendra, un fork de Adempiere, que a su vez es un fork de Compiere, un ERP libre que tuvo problemas porque la empresa que lo desarrolla no tomó muy en cuenta a los desarrolladores. Morosini se justifica de su fork en que ningún ERP libre contempla la realidad peruana.

Siguió Ricardo Supo, un peruano, con su tema Python como un lenguaje de programación: Caso escuela San Rafael, en la que habló de como usan tanto Python y Pygame para ayudar a cambiar la lógica de pensamiento de los estudiantes, haciéndolos más ordenados. Mencionó que también usan Panda3D, aunque ya hemos advertido en el post anterior que su licencia no es libre, aunque realmente por sencillo detalle de reportar cambios a Disney.

Luego siguió German Poo, un chileno, con su tema: Intentando Cambiar el mundo: Porqué me involucré en el Software Libre, en la que rebatió mitos del Software Libre y dió ideas sobre su visión que puede en un futuro cambiar totalmente al mercado del Software. Tras hacer unas preguntas sobre Ubuntu regaló unos CD.

Finalmente vino Fernando San Martín, un chileno, con su tema: Cómo convertirse en un desarrollador de Software Libre y no morir en el intento, en la que explicó en términos económicos que el modelo del software propietario no es viable para el 99% de los desarrolladores que viven de vender servicios [Palabras textuales del ponente]. El problema que tiene el software propietario, es que vive de un monopolio artificial, en este caso la propiedad intelectual y cerrar el código poniendo barreras que dificultan la competencia. Muy buena ponencia.

Mencionar que hubo una ponencia a las que no pude asistir por ser en paralelo con otras, esto fue el caso de Sergio Aguayo y su tema AMILDA: Linux peruano para Routeres

Con la ponencia de Fernando San Martín, se terminó el evento Involúcrate. Espero que sirva para traer a más usuarios al mundo del software libre y podamos apoyar a proyectos como GNOME. Lo que sí noté fue una ausencia de KDE, pero en fin… supongo que también esa es la libertad de elegir. 

Evento Involúcrate: Día 1

March 7, 2008

El software libre siempre ha necesitado de voluntarios. Lamentablemente el Perú no es un país que destaque a nivel de desarrollos libres. Sólo hay que decir que Perú, por ejemplo, sólo tiene 1 desarrollador GNOME oficial, cuando Chile tiene 4 en promedio. Debido a esta necesidad es que se organiza este evento llamado Involúcrate, que según su web ya tiene 2 presentaciones realizadas.

El evento del que les voy a hablar, es el Involúcrate de Marzo 2008. Pueden ver el programa oficial aquí y se realizó en la Universidad Inca Garcilazo de la Vega en Lima (Lo que también significa que por primera vez viajé a esa ciudad).

El evento empezó a las 5:00 pm y como primera ponencia estuvo Fernando San Martín, un ponente chileno, con su tema: GNOME, 11 años de Libertad. Habló de como surgió GNOME en el año 1997 y de todos los avances que ha tenido el escritorio hasta llegar a sus versiones actuales como la 2.20. En lo personal he de mencionar que comentó funcionalidades de GNOME que no conocía, como efectos de cubo y demás. También habló de la siguiente versión de GNOME 2.22 a lanzarse el 12 de Marzo.

Acto seguido, Manuel Cerón, un ponente colombiano, dió inicio a su ponencia: Creando Juegos con Python. Habló de Pygame y de Panda3D, el último es un motor de 3D liberado por Disney. Sin embargo, aclararemos que la licencia si bien es libre en espíritu, tiene el problema de incluir una cláusula de control de exportación y obliga reportar todos los cambios hechos en Panda3D a Disney. Se lo comenté a Cerón y me dijo que la licencia tiene el problema de ser poco conocida, pero que de todos modos es libre. En realidad, la primera versión de la licencia si era libre, según este post, ya que se parece a la Apple Public Source License. Además según la FSF, la Apple Public License 2.0 es libre, aunque incompatible con la GPL. Salvando ese detalle, la ponencia fue muy buena.

Después, vino German Poo, también chileno, con su ponencia ¿Porqué liberar mi código?: Software Libre desde la Perspectiva de un desarrollador. En esta ponencia, se habló de cómo puede beneficiar al desarrollador liberar el código y construir una comunidad alrededor del mismo para poder tener una ventaja frente a otros modelos de desarrollo.

Concluido German Poo, siguió Nicolás Valcárcel, un peruano, que es desarrollador oficial de Ubuntu con su tema: Colaborador al Software Libre, ¿Yo?, en la que habló de que hay muchas maneras diferentes de ayudar al Software Libre, aparte de programar, como traducciones, arte y demás.

Finalmente, Pedro Villavicencio, un chileno, también desarrollador de Ubuntu, presentó su tema ¿Blueprints, control de versiones, freezes, ciclos de desarrollo? El detrás de cámaras de Ubuntu. Aquí mencionó como Ubuntu sigue un proceso de comprobación de errores y añadir funcionalidades para liberar una nueva versión cada 6 meses, preferentemente después de una nueva versión de GNOME. También nos informó que la próxima versión de Ubuntu sale el 26 de Abril. Entre las mejoras que no pudieron ser incluidas por tiempo, nos mencionó GDM Face Browser, una mejora a GDM que consiste en hacer un inicio de sesión basado en imágenes. También confirmó una de mis dudas: Ubuntu toma paquetes de Debian testing.

Esto fue todo el evento realizado el día Viernes 07 de Marzo, y las ponencias descritas son las ponencias que escuché. Hubieron algunas ponencias en paralelo con las que describí, como el caso de Gustavo Picón y su tema Feedjack: Un agregador de feeds con Django.

Actualización (10 - 03 - 08): Parece que los desarrolladores de Panda3D están dispuestos a liberar su código, eliminando la controvertida cláusula de enviar todos los cambios a Disney. Sin embargo, deberemos esperar hasta que se resuelva todo el papeleo de esta librería en la propia Disney. Cuando Panda3D sea Software Libre, tacharé las partes en las cuales mencioné lo inverso.