jueves, 13 de diciembre de 2007

¿Es conveniente el voto electrónico?

En base a las irregularidades denunciadas durante las últimas elecciones nacionales, se comenzó a hablar de impulsar el voto electrónico ya que teóricamente estos problemas no pasarían si se usara esta forma de votar.

Como contrapartida, también hay mucha gente que se opone argumentando que el voto electrónico no haría otra cosa que facilitar el fraude escondido detrás del misterio de la tecnología, ya que la mayoría de la gente no podría auditar que ocurre realmente dentro de una máquina de voto electrónico.

En este artículo voy a tratar de contar mi experiencia haciendo una máquina de voto electrónico que se utilizó en las elecciones de presupuesto participativo de la ciudad de Rosario en el año 2006, y cuales son mis opiniones personales sobre el (posible) fraude en las elecciones.

Desde 1995 hasta mediados del 2007, trabajé en una empresa (MSA) que a partir del año 1999 participó en varios procesos de recuentos de votos, en un par de ocasiones implementando algún método de voto electrónico. Aclaro que mis opiniones no son las de la empresa, y no tengo una postura definida sobre si el voto electrónico es mejor o peor que el sistema tradicional (boleta y sobre).

Recuento de votos

Como primer punto, me gustaría comentar que en ninguno de los procesos electorales que hicimos recibimos ningún tipo de presión de partidos politicos, entidades gubernamentales, etc, para influir de alguna forma en el resultado del proceso.

Durante los procesos de recuento, constantemente hay fiscales informáticos de los diferentes partidos políticos pidiendo todo tipo de información, y luego del proceso, generalmente se les da una copia de la base de datos para que crucen los datos con sus propios recuentos. Por ende, no sería una buena idea hacer fraude en este punto ya que sería descubierto tarde o temprano.

Emisión del voto

En el caso de las máquinas de voto electrónico, no es tan fácil auditar todas las máquinas ya que seguramente van a estar distribuidas geográficamente, y se necesita personal capacitado para controlar que no haya fraude. En esto estoy de acuerdo, pero...

Algo que generalmente se deja de lado cuando se ennumeran las características negativas del voto electrónico, es que en realidad el voto electrónico puede ser tan seguro y secreto como se quiera hacer, y por otro lado, el sistema de voto tradicional tampoco asegura que los votos sean registrados correctamente.

Haciendo una analogía un poco apresurada, es como decir que viajar en avión es más peligroso que viajar en auto, porque si se cae no hay muchas chances de salvarse. Es verdad. Pero hay más accidentes de autos que de aviones. De echo, en Argentina cualquiera de las dos cosas son peligrosas... y ese me parece que es la base de ambos problemas: que estamos en Argentina. :(

La máquina de voto electrónico


Cuando hicimos la máquina de voto electrónico, tratamos de hacerla lo más segura, secreta y accesible que pudimos:
  • La máquina era un LiveCD que podía funcionar en cualquier PC. De esta forma nadie tenía acceso al software antes de iniciar las máquinas, a excepcion de los auditores del juzgado electoral. Es más fácil mantener seguros unos cuantos CDs no regrabables, firmados fisicamente, que la misma cantidad de máquinas.
  • Al votar se emitía una boleta de papel con la selección impresa. La boleta era ingresada en una urna tradicional, y en el peor de los casos se podía hacer el recuento manualmente.
  • Los votos no se registraban en la PC. Tampoco en medios remobibles. En la misma boleta de papel se almacenaban los datos del voto en un medio elecrónico no reescribible. No se si la empresa terminó patentando esto, pero a fines prácticos supongamos que imprimimos un código de barras con la información de los votos.
  • El elector podía verificar el voto emitido. Aparte de leer el texto impreso en la boleta, ingresando la misma en un lector el sistema le muestra las opciones almacenadas, que deberían ser las mismas que están impresas.
  • Se podían leer los fuentes del software en ejecución. Dado que el sistema estaba totalmente escrito en Python (que no necesita ser compilado) se daba la posibilidad de auditar el sistema de la máquina leyendo el CD desde cualquier PC.
  • Accesibilidad. Gracias a la facilidad de integración de las herramientas que disponemos en el software libre, los usuarios con problemas de visión podían utilizar un modulo especial que leía las opciones sin mostrar nada en la pantalla. Por primera vez, una persona ciega tuvo la posibilidad de votar sin alguien que lo asista, simplemente usando auriculares y un teclado numérico con etiquetas braille.
Una vez terminada la elección, el recuento se hizo con el mismo software. Todos los CDs tenían un modulo de recuento, con el cual se juntaban los resultados y se enviaban al centro de computos.

Como se puede ver en una foto que anda dando vueltas por la red, me comí todo el día en uno de los centros de votos asistiendo a la gente en la operación de las máquinas. Algunas de las cosas que pude observar:
  • Curiosamente, la gente mayor era la más contenta estaba con el sistema. Los abuelos estaban fascinados, y nos pedían por favor que utilicemos este mecanismo para las elecciones presidenciales (como si fuera nuestra desición :) )
  • Al igual que en el sistema tradicional, llegaban micros con gente para votar a quienes les habían dado un papelito con los números que tenían que votar.
En mi opinión, en esto último esta el principal problema, y no tiene mucho que ver con que método se use. Me resultaba increíble ver con que desinterés votaba esa gente. Si bien no se trataba de elegir cargos, votaban sin chistar los números que les habían dado. Parece que les daba absolutamente lo mismo votar, no votar, o que voten por ellos.

En el sistema tradicional, se acostumbra a utilizar otros métodos como el voto cadena o las boletas dobladas de una forma determinada, o sea que este tipo de corrupción no se puede evitar.

Conclusión

Lamentablemente, cualquiera de los dos métodos permite más o menos los mismos métodos de fraude, ya que no hace falta que se hagan en el momento del voto, sino que el fraude ya viene hecho de antes, o se hace después, modificando las planillas de recuento antes que sean procesadas. Esos son los momentos donde es más dificil hacer una auditoria.

Por otro lado, si bien una persona sin conocimientos técnicos no puede auditar una máquina de voto electrónico, tengo entendido que tampoco puede estar presente cuando se abre la urna, se cuentan los votos, y se escribe la planilla de resultados en el sistema tradicional.

En este momento, me parece que la única gran diferencia entre un método y otro es el costo y la velocidad de proceso. Ambos son superiores en un sistema electrónico que en el tradicional: más caro pero más rápido. Supongo que para saber cual es mejor, habría que ver de cuanto dinero se dispone, o cual es el apuro para obtener los resultados.

Más allá de estar o no en contra, pienso que en el futuro el voto electrónico va a ser la norma, ya que toda la sociedad apunta al camino de la tecnología. En este punto me parece que la solución más acertada sería que las organizaciones promotoras de software libre se encarguen de proponer sistemas/máquinas de voto electrónico de código libre. Es sabido que el software libre tiene entre sus ventajas los miles de ojos que lo auditan, imaginense cuantos ojos van a querer auditar el código de una máquina de voto electrónico!!!

Por supuesto esto no asegura que el último código que se ejecute sea el mismo que se escribió, a menos que se usen lenguaje como Python, que permiten leer el mismo código que se está ejecutando.

La comunidad del software libre debería interesarse seriamente en este tema, antes que se haga moneda común que las máquinas de voto electrónico sean algo cerrado y propietario como las que existen actualmente. Ahí si que estaríamos en problemas. Si el único que puede ver que pasa dentro de la máquina es el que la hizo, estoy totalmente de acuerdo... el voto electrónico no sirve.

Gabriel E. Patiño

Creative Commons License
This
work is licensed under a Creative Commons Attribution-Share Alike 3.0 License.

miércoles, 28 de noviembre de 2007

Posts SEO friendly desde Blogger

Para los que no sepan que es SEO, básicamente es optimizar un sitio para que los buscadores lo indexen de la mejor forma posible. Como resultado, cuando alguien usa un buscador, es más probable que encuentre lo que busca en sitios que sean "SEO friendly".

Uno de los pilares de SEO es que las urls tengan información útil, y no sólo un nombre o código que no signifique nada.

En Blogger, los nombres de página se generan automáticamente en base al título del post, pero con un problema no menor: los caracteres especiales, acentos y eñes son eliminados de la url, generando una dirección no muy SEO friendly. Por ejemplo, si el título de un post es 'Editando imágenes desde el Gimp', el nombre de la página va a ser algo asi: 'editando-imgenes-desde-el-gimp.html'.

Si bien algunos buscadores pueden buscar palabras similares, si alguien busca la palabra 'imagenes' no va a encontrarnos fácilmente.

Para evitar esto, encontré un workaround: primero escribir el título del anuncio en forma que sea útil para SEO. Una vez guardado el post, lo editamos y ponemos el título con sus acentos, eñes y cualquier otro caracter especial.

Una solución un tanto 'chapuzera', pero funciona :)

sábado, 24 de noviembre de 2007

Modificando imágenes desde Nautilus

Muchas veces es necesario cambiar varias imágenes a la vez, por ejemplo para rotarlas o achicar fotos antes de subirlas a algún sitio para compartirlas. Hacer esto es muy simple, pero generalmente hay que abrir algún programa que más o menos nos facilite el trabajo, o en su defecto abrir una terminal y usar la magia de Imagemagick que seguramente asusta a más de uno.

Hace un tiempo había leído un post en el Planet de Ubuntu donde se comentaba de unas extensiones para Nautilus que permiten hacer esto de forma más rápida y simple, lo probé y funciona muy bien. Acá van las instrucciones:

Instalación:

Para instalar estas extensiones, seleccionar e instalar el paquete nautilus-image-converter en el administrador de paquetes Synaptic, o desde una terminal ejecutar:
sudo aptitude install nautilus-image-converter


Uso:

Para que sea efectiva la instalación de estas extensiones, deben reiniciar la sesión. No el sistema, solo la sesión.

Una que se vuelvan a loguear, al hacer click derecho sobre una imagen o grupo de imágenes seleccionadas van a ver dos opciones:
  • Resize Images (redimensionar imágenes)
  • Rotate Images (rotar imágenes)
Al seleccionar una de estas opciones, nos muestra un dialogo con algunas opciones bien simples, y al confirmar ejecuta su tarea. Ni más ni menos.

Y después dicen que Linux es difícil...

Notificación de mensajes en Pidgin (popups)

Desde hace varias versiones de Gaim (hoy llamado Pidgin) vengo usando el plugin de guifications para ver los avisos de nuevos mensajes, usuarios conectados, etc. En alguna versión de Ubuntu habían hecho algún tema para guifications bastante bueno, pero por lo general es bastante austero.

Hoy encontré otro plugin para Pidgin que utiliza libnotify, el mismo sistema de notificaciones que el resto del sistema, lo que hace que se vea mucho mejor integrado:

(A la izquierda Guifications, a la derecha pidgin-libnotify)

Para activar este plugin solo deben instalar el paquete pidgin-libnotify y luego activar el plugin desde el menú Herramientas/Complementos del Pidgin.

Que lo disfruten.

miércoles, 14 de noviembre de 2007

FESTIVAL SOLIDARIO JUNTOS POR EZEQUIEL

Fecha: Martes 20 de noviembre a las 20 hs.
Lugar: EL CONDADO, Niceto Vega 5542, Ciudad de Bs. As.
Actuaran:

  • TERESA PARODI
  • EL TIERRAL
  • BRUNO ARIAS
  • Y OTROS ARTISTAS INVITADOS.
Entrada: $15, a la venta en Radio Nacional, o contactándose con Gigi (gigliolaszivos@hotmail.com)

El total de lo recaudado es a beneficio de Ezequiel Szivos.

Ezequiel es un amigo del alma, un hermano podría decir, que está pasando por un momento complicado debido a una enfermedad muy jodida, y necesita de la colaboración de todos para pagar un tratamiento muy caro.

Más información en el sitio de 'Ayudemos a Ezequiel'.

Gracias a todos.

sábado, 27 de octubre de 2007

Teclado en inglés, caracteres acentuados y comillas libres

Nota: Este post queda obsoleto desde la versión 8.10 de Ubuntu (Intrepid Ibex), ya que se puede tener la misma configuración seleccionando la distribución de teclado "EEUU Internacional (con teclas AltGr muertas)"


Hace rato que estoy acostumbrado a usar el teclado de la notebook en inglés, y seteado como inglés internacional con dead keys es aceptable para escribir en español, pero muy molesto para programar ya que las comillas hay que 'escaparlas' con un espacio.

Chateando con Damián estabamos hablando del problema y en menos de veinte minutos tengo el teclado configurado a la perfección:
  • Teclado en inglés
  • Caracteres acentuados y eñes usando la manzanita (o ventanita) derecha
  • Las comillas son solo eso... comillas, sin tener que usar la barra ni nada adicional.
El secreto estaba en hacer una pequeña modificación al archivo de mapeo de teclado, donde por default las teclas de comillas funcionan como dead keys (quedan a la espera de otra tecla para componer el acento). El archivo en cuestión es /etc/X11/xkb/symbols/us y hacer los siguientes cambios para el grupo de 'English International (with dead keys)' es suficiente para liberar las comillas (luego de reiniciar la sesión):

Original:
linea 76: key { [dead_grave, dead_tilde, grave, asciitilde ] };
linea 106: key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };

Modificado:
linea 76: key { [ grave, asciitilde, dead_grave, dead_tilde ] };
linea 106: key { [apostrophe, quotedbl, dead_acute, dead_diaeresis ] };

Los números de líneas son los que corresponden al archivo por default que viene en Gutsy. Lo que se hace es cambiar el orden de las teclas, entonces para seleccionar la comilla 'muerta' hay que usar un selector de tercer nivel (igual que para seleccionar vocales acentuadas).

Este tecla, en Gnome, se selecciona desde las preferencias del teclado, Opciones de distribución, y dentro de la sección Selectores de tercer nivel elijan el que más les guste (a mi me queda comoda la manzanita de la derecha, cerca de la n).

La solución no se me ocurrió a mi, sino que la encontré en los foros de Ubuntu donde hay un thread sobre el tema.


miércoles, 24 de octubre de 2007

Ubuntu Gutsy 64 bits en la Macbook

El fin de semana instalé la última versión de Ubuntu en la Macbook, y esta vez me decidí por la versión de 64 bits.

Como es de esperar de un sistema operativo como la gente, la instalación fue sin problemas: en menos de cuarenta minutos tenía la máquina lista para usar. Y con esto me refiero a tener un navegador de última generación, una suite de oficina comlpeta, programa de mensajería multiprotocolo, bla, bla, bla.

En el caso de la Macbook, lo único que tuve que hacer a mano fue instalar los drivers para la placa WiFi. Si... tuve que usar la consola:
sudo aptitude install build-essential
wget http://snapshots.madwifi.org/madwifi-trunk-current.tar.gz
tar -zxvf madwifi
cd madwifi
make
sudo make install
Curiosamente la webcam me la detectó de una, aunque en el wiki de Ubuntu dice que no la detecta. Más curioso fué que después de un par de días dejó de funcionar y tuve que seguir las instrucciones del wiki para hacerla andar.

Más allá de estos dos detalles, la máquina funciona diez puntos. Resultado: una máquina con un hardware excelente y un rendimiento espectacular. Todavía no noto la gran diferencia por los 64bits, pero todo parece un poco más rápido, aunque puede ser por las mejoras generales de Gutsy.

Totalmente recomendable Gutsy en 64bits, el gran problema en otras versiones eran los programas cerrados que no tienen una versión de 64bits, como el Flash, pero instalarlo fue cuestión de seleccionar el paquete nspluginwrapper. Y según me comentaron después, de haber elegido la opción de instalar plugins faltantes desde el mismo Firefox, todo hubiera sido automático.

Que esperan??? a aprovechar los 64 bits del micro!!!

viernes, 19 de octubre de 2007

Fiesta de lanzamiento de Ubuntu 7.10 Gutsy Gibbon

Ayer a la tarde nos juntamos un grupo de Ubunteros para celebrar el lanzamiento de la última release de Ubuntu, la 7.10 (Gutsy Gibbon). Bue... en realidad nos juntamos a tomar cerveza y parlotear hasta pasada la medianoche, no se si lo de Gutsy fué una excusa para justificar la salida :)

La verdad que la pasé muy bien, nos reímos a carcajadas de los chistes de Miguel (el apellido te lo debo): no me quedó claro si es realmente bueno como comediante, o supo esperar a que estemos entonados para empezar con su batería de chistes. De todas formas fue efectivo.

Como siempre, es interesante compartir experiencias con todos, y me llamó la atención que un porcentaje considerable de los asistentes no hayan estudiado cosas relacionadas con la informática. Evidentemente no hace falta ser un científico para usar Linux (y mucho menos para juntarse a escabiar un rato)

A todos los que asistieron, un abrazo, y a los que no... traten de venir para la próxima. Les dejo el link a las fotos que sacó Lipe acá.

Ahora me voy a dormir una siestita porque estoy viejo y la resaca me está matando... :(

lunes, 8 de octubre de 2007

CaFeConf 2007

Hace rato que no escribo nada, así que aprovecho para escribir algo sobre las charlas que fui a ver al CaFeConf 2007. Si, seguramente ya leyeron algo sobre esto, y no soy el primero, pero algo es algo.

Mi visita a la conferencia comenzó el día sábado, ya que el viernes tuve que laburar. Como hace rato que no programo nada importante en Python (como lo extraño... ) por la mañana asistí a dos presentaciones de la gente de PyAr:
  • PyWeek: Un juego en siete días - Una charla muy entretenida sobre la experiencia de los grupos pythoneros de Capital y Córdoba en la competencia PyWeek, donde el objetivo es desarrollar un juego en sólo siete días. Cada vez que escucho algo sobre el tema me dan ganas de participar, pero cuando llega el momento siempre surge algo que me lo impide.... (cobardía quizás?). Felicitaciones a los integrantes de todos los equipos que participaron, y que nos hacen quedar tan bien en el exterior. Para los que todavía no conozcan Python... bueno... que les puedo decir... es hora de salir de la cubetera :) Deberían ver la calidad de los juegos que hicieron, y sólo en siete días. Pueden ver los resultados de las competencias y descargar los juegos desde el sitio de PyWeek.
  • Python más rápido que C - Esta charla me encantó. Felicitaciones a Lucio y Facundo, hicieron un trabajo muy interesante tratando de comparar que tan lento es Python al lado de C, arriesgándose a ser lapidados por herejía. Algunas conclusiones fueron muy interesantes y la charla fue por demás entretenida. Fanáticos de C, abstenerse ;)
Al mediodía me fui a comer con Marcelo y un amigo de él. La pasamos bien charlando sobre... si... informática, trabajo... lo de siempre. A ver si nos ponemos las pilas y hacemos algo sobre las experiencias con Python en procesos de misión crítica. Después de comer estuve charlando un rato con Alecu, y me quedó pendiente presentar a Marcelo al resto del grupo de PyAr, pero se me escapó y cuando lo volví a encontrar era tarde.
Después de navegar un rato por internet, leer un par de mails y todas esas cosas que uno hace compulsivamente cuando hay wi-fi disponible (como si no tuviera suficiente internet durante la semana), volvía a las charlas:
  • Modelos de negocio con Software Libre - Una charla bastante interesante de Román Gelbort (el profe) sobre las posibilidades de montar un negocio en base al software libre, y de yapa unos cuantos consejos muy útiles, más que nada para los técnicos como yo que nunca pensamos en las betas comerciales.
  • Aulas libres - La Universidad y el bien común - Esta charla para mi fue casi obligatoria, ya que tiene mucho que ver con el tema de la tesis que estoy preparando (si, todavía no me recibí, y que?). Por momentos Franco Iacomella estaba un tanto nervioso... y no era para menos: se salía de la vaina para decir un montón de cosas que tuvo que recortar sino le iban a cortar la luz... jeje.
  • ¡Liberemos las Universidades! - Segunda charla obligatoria para mí, más que charla fue una reunión de presentación de alumnos y profesores de diferentes casas de estudio que están involucrándose con el software libre. Lamentablemente, sacando un par de excepciones, todo se hace a pulmón por parte de alumnos y profesores, nada a nivel institucional. Es increíble que las Universidades prioricen pactos comerciales a la educación abierta... pero bueno, estamos en Argentina. Si en tu Universidad hay un grupo de entusiastas del Software Libre, pegate una vuelta por la página de Gleducar, ahí van a encontrar una lista de correo de Universidad Libre.
Esa fue la última charla, que fue seguida de un poco de cotorreo generalizado en el hall del 2do subsuelo. Conocer a algunos que no conocía personalmente, posar para una foto de Ubuntu-ar (no se olviden de gimpearme ;).

Por último, el cierre... espectacular el Sr. Pingüino jaja... aunque me parece que tiene que hacer un poco más de ejercicio porque daba la sensación de que le faltaba un poquito el aire... ;) En el cierre se sortearon unos cuantos libros muy interesantes, pero con la suerte que tengo no me gané nada. Es más, cuando revolearon gorras y remeras, una gorra me cayó en la cabeza, y el de al lado me la manoteó... por favor... abstenganse de comentar al respecto.

Cerrando, aunque no pude ir el viernes a un par de charlas que me interesaban, la pasé bien. Me dió la sensación que este año hubo mucho más gente que el año pasado, pero puede ser porque era sábado. De todas formas, mis más sinceras felicitaciones a todos los que colaboraron en la organización del evento... son unos grosos.

PD: Me olvidaba... Los muchachos de PyAr tenían un pare de OLPC par probar... muy interesantes los bichitos. Ya se que están orientadas a los niños pero me sorprendió que sean tan chiquitas... y yo que quería una para mi.. :)

miércoles, 29 de agosto de 2007

Firebug: Un excelente plugin para el Firefox

Seguramente muchos de ustedes ya lo conozcan, pero para los que no, y sean desarrolladores de sistemas web, les va a ser de suma utilidad.

Estaba acostumbrado a usar el plugin de Firefox WebDeveloper para todo lo que sea debug de páginas web. La semana pasada, Damián (pasame tu blog) me comentó sobre el Firebug (otro plugin para el Firefox)... y quedé alucinado.

Las funciones en general son similares a las del WebDeveloper, pero esta muy bueno como se puede navegar por los componentes de la página mientras se ven marcados de celeste en la pantalla principal, y ni que hablar de poder visualizar variables y expresiones javascript a medida que se va a actualizando la página.

Puede ser que no se emocionen tanto como yo, pero para quien desarrolle web puede ser una herramienta de suma utilidad. Pruebenlo y comenten que les pareció.

lunes, 27 de agosto de 2007

Ñoquis caseros aptos para celíacos

Inagurando una nueva categoría, comparto con ustedes la receta para hacer ñoquis de ricota aptos para celíacos. Más o menos sale una cantidad como para cuatro personas, y eso que soy de buen comer ;)

Ingredientes:
  • Ricota - 500 grs
  • Premezcla 3 harinas - Mas o menos 500 grs
  • Huevos - 1
  • Queso rallado - 2 cucharadas
  • Sal, pimienta, nuez moscada - a gusto
Preparación:
  • Mezclar la ricota con el huevo y el queso rallado. Agregar sal, pimienta y nuez moscada a gusto.
  • Ir agregando la premezcla (yo usé la de Kapac) y mezclar (o amasar) hasta que la masa no se pegue en los dedos.
  • Hacer cilindros de uno o dos centímetros de diámetro, cortar en pedacitos y 'enroscarlos' para que tomen la forma de los ñoquis.
  • En una olla con mucha agua hirviendo, añadir un puñado de sal, y tirar los ñoquis. Cuando empiecen a flotar, sacar los que flotan y esperar al resto :)

Para hacer la forma de ñoqui, yo pongo el pedacito de masa en la palma de una mano, y con el índice de la otra lo aplasto mientras arrastro el dedo. Con un poco de práctica salen como tiro :)

Sí... los de la foto son los que hicimos este sábado... les iba a sacar otra foto con la salsa de estofado de pollo... pero no duraron mucho en el plato :)

sábado, 25 de agosto de 2007

Cómo pasar un DVD a MP3 (u Ogg)

Hace rato que vengo fanatizado con un DVD de un recital espectacular (Concert for George), y tenía ganas de pasarlo a mi reproductor de MP3 y grabarlo en un CD de audio para el auto.

Supongo que habrá una forma más fácil de hacerlo, algún programa gráfico que lo resuelva, y probablemente sea uno de los que probé, pero siempre tengo paciencia para buscar opciones en pantallitas y termino en la linea de comandos.

Como siempre, Google es buen compañero y me llevó a este artículo, donde se explica como bajar el audio directamente del cd. Como ya tenía los videos en el disco de otras pruebas que había hecho anteriormente, modifiqué un poco los comandos y quedo algo así:


gabriel@rocinante:~$ mkfifo soundpipe
gabriel@rocinante:~$ num='01'
gabriel@rocinante:~$ oggenc -b 128 -o ${num}.ogg soundpipe & mplayer -quiet -ao pcm:file=soundpipe -vo null -vc dummy ${num}.mpg


El primer paso crea un archivo fifo para pasar los datos de un programa a otro (mplayer -> oggenc). Luego defino una variable con el numero de pista (tengo los videos nombrados como 01.mpg, 02.mpg, etc). Y por último la línea que ejecuta todo junto, generando como salida un archivo 01.ogg.

Por supuesto, esto hay que ejecutarlo por cada archivo, pero les dejo como tarea hacer un script para esto.

Si alguien conoce una forma gráfica de hacerlo, avisen... para mi la consola es muy cómoda pero no va a faltar el que diga que linux es difícil porque tuvieron que escribir un par de líneas... jeje

sábado, 18 de agosto de 2007

Instalando Ubuntu en una MacBook

Si, ya era hora de jubilar a mi vieja Toshiba Portege 7400 (Pentium III, 192Mb de RAM, y disco de 6Gb). Hace varios meses estoy viendo máquinas, y como me cansé de esperar a que Dell traiga sus laptops con Ubuntu a Argentina, me compré una MacBook.

El principal motivo para comprar una MacBook fué, aunque parezca ridículo, el precio. Yo era de los que piensan que las Macs siempre fueron caras por cuestiones de estética, pero comparando precio y prestaciones, al menos en el caso de ma MacBook, no es para nada cara. Es más, una máquina similar de Sony o Toshiba sale bastante más cara.

Aparte del tema del precio, por supuesto que buscaba una máquina "Linux friendly". Por lo que leí en el último número de Full Circle, las MacBooks son supercompatibles con Linux en general y con Ubuntu en particular. En base a esto me decidí a buscar de estas bellezas. Hoy al mediodía puse mis dedos en mi nueva notebook (rocinante), y por supuesto empecé a toquetear el Mac OSX. En otro post comentaré como me fué con el sistema de Apple, pero resumiendo, me aburrió a las dos horas.

De entrada pensaba tener dual boot para mantener el Mac OSX, pero había que bajar 300 megas del BootCamp, y la verdad que no le ví mucha utilidad al OSX, así que fuí un poco más allá y le instalé solo Ubuntu (Feisty) y limpié el resto del disco. La instalación fué de lo más simple:
  • Inserté el desktop cd de Feisty.
  • Inicié la máquina presionando la tecla C para que bootee del CD.
  • Una vez en el escritorio de la sesión Live, desde el gparted cambié el tipo de la tabla de particiones a DOS.
  • Le dí al iconito de Instalar, y mientras se instalaba jugué un poco con los efectos de escritorio (mi vieja dulcinea no tenía aceleración)
  • Después de instalar hay que hacer un último paso a mano: marcar la partición raiz como partición de booteo. Desde el gparted, seleccionando la partición raíz, hay que ir a Partición/gestionar flags, y marcar el de boot.
  • Cuando reinicia la máquina la primera vez, hay que mantener la tecla option presionada para que entre a un selector de booteo. Ahí aparece una opción con un dibujo de un disco. Irónicamete, la etiqueta del dibujito es Windows... parece que Apple piensa que lo que no es Mac es Windows, pero bueno... que le den por culo :)
Eso es todo, ya tengo la MacBook funcionando con Linux. De entrada la resolución se ve mal (la placa es Intel) pero esto se soluciona instalando el paquete 915resolution y reiniciando la sesión gráfica. La aceleración funciona de diez, el touchpad funciona mejor que en OSX: en Ubuntu se puede hacer click en el area del touchpad, y presionando con tres dedos es como hacer click derecho. Me queda para otro momento configurar la placa inalámbrica y la cámara, pero en el wiki de Ubuntu está bastante bien explicado, así que mañana le dedicaré tiempo a eso.

En resumen: una máquina que por ahora parece ser buenísima, y corriendo Ubuntu como único sistema operativo, y aun precio muy atractivo para una notebook de estas prestaciones.

jueves, 9 de agosto de 2007

Radiografía de un swing de golf

Este es mi primer post en al categoría Golf. No tengo mucho para decir porque no estoy ni cerca de ser un buen jugador, pero nunca faltan las anéctodas, chistes, etc.

Para empezar, quiero compartir con ustedes algo escencial: una radiografía de un swing de golf (gracias a Diego Salama). Sí... estamos de acuerdo... el swing es algo complicadísimo, más cuando uno está empezando o no tiene la constancia de ir a jugar seguido.

Estoy seguro que les va a servir para tener a mano como referencia, pero bueno... una imagen vale más que mil palabras:

lunes, 6 de agosto de 2007

Una gloriosa tarde de TEG

El domingo nos juntamos a comer un asado en la casa de Pau con unos "colegas del curro". Después de comer en forma abundante y haber matado algunas botellas, apareció el esperado tablero de TEG, en su versión "La revancha".

Como eramos ocho, y algunos no conocían bien el juego, formamos cuatro parejas hombre-mujer de la siguiente forma:
  • Rojo: Gaby y Gus
  • Verde: Rocío y Pau
  • Amarillo: Mariana (Grilli) y Pablo (Panete)
  • Negro: Vale y yo
La partida fue larga, como suele suceder en este juego, y muy entretenida. Después de varios turnos donde la suerte no nos ayudó a cumplir nuestro objetivo (dos turnos seguidos de nieve, seguidos de uno con fronteras abiertas) la "peste negra" cumplió su objetivo en el último turno pactado. Llegamos con el tiempo justo pero de forma contundente.

La partida fue bastante peleada, y en ningún momento hubo un dominante absoluto, aunque los rojos estuvieron a un paso de dominar Europa (todavía no entiendo por que se descuidaron), y al final los verdes hicieron una carnicería en latinoamerica.

La victoria no fue fácil. En el último turno teníamos la olbigación de conquistar los dos territorios que nos faltaban en América del Norte, y dos países de Europa. Europa no fue complicado porque venía de una saga de combates sangrientos que dejaron muchos países con las defensas bajas. Como dice el refrán: a río revuelto, ganancia de pescadores. :)

La que nos complicó las cosas al final fue la teniente Grilli con su ejercito de temibles grillos Californianos. Estaban rodeados por ordas de morochos, y aguantaron hasta que solo nos quedaban dos tropas para atacar. En el momento adecuado la suerte, o mejor dicho la increíble habilidad de Vale con los dados, nos volvió a acompañar y logramos conquistar nuestro objetivo en el último turno de la partida.

En cuanto a las habilidades "dadisticas", cabe destacar la performance de Gaby y Vale. Increíble la cantidad de seis y cinco que sacan estas niñas. Una batalla entre Gaby y Vale nos dejó a todos boquiabiertos (corrijanme si le pifio a los numeros), Gaby atacando y Vale defendiendo:

Primer Ataque: Gaby: 6-5-5, Vale: 6-5
Segundo Ataque: Gaby: 6-5, Vale: 6-6

Nunca había visto una batalla con armas tan grueso calibre. :O

En un momento, Panete "el astuto" intentó una treta que casi le sale bien: apareció con su botella de whisky. Me di cuenta que algo iba mal cuando dejó la botella al lado mío, pero él ni siquiera amagó a servirse un trago. La vieja táctica de embotar los sentidos del enemigo... no muchacho... no voy a caer tan fácil. Me quedé con las ganas del whisky, pero con el sabor de la victoria ;)

Bueno, espero que se repita este tipo de reuniones, la pasamos muy bien y quedamos a la espera de las fotos. Mientras tanto sigo leyendo mis apuntes de estrategia para la revancha :)

PD: Por supuesto que si no hubieramos ganado, este post no existiría. :P

viernes, 3 de agosto de 2007

Oferta laboral - Sysadmin Junior


Estimados,

En la empresa donde estoy trabajando (OLX) están buscando un sysadmin nivel junior para mantenimiento de servidores (todo Linux, hasta donde sé). El ambiente es de lo mejor, y si no entendí mal el cargo es para llevar el mantenimiento de los servidores de MundoAnuncio, el equipo donde trabajo yo.

Los interesados, manden CV, pretensiones, etc (lo de siempre) a Isart Montané (isart arroba olx.com)

Nos vemos.

viernes, 13 de julio de 2007

Instalación de Linux por control remoto

Si alguien dice que instalar Linux hoy en día es difícil, es simplemente porque no lo intentó.

Tengo bastante experiencia en instalaciones extrañas, pero lo de ayer fue el colmo de la simpleza.

Tanto le hice la cabeza a un amigo que pruebe Ubuntu, que me dijo 'listo, ya me bajé el cd y lo grabé, ahora que hago'. Ups... como soy un colgado, siempre le debo una visita, y el andaba con ganas de instalarlo, pero no se animaba por lo peligroso que suena la frase particionar el disco. Si bien es un usuario que se defiende bastante en el manejo de PC, no es para nada técnico en esta área. Si a veces nosotros los técnicos cruzamos los dedos durante un proceso de este tipo, un usuario normal directamente se moja los pantalones ;)

El método de instalación fue el menos ortodoxo que escuche hasta el momento: le dije que bootee con el livecd, y que lo primero que haga sea entrar a gmail, y desde ahí lo guié via chat.

La instalación fue increíblemente simple, la mayoría de los pasos los resolvió solo, hasta llegar al redimensionado del disco. En este punto solo le tuve que aclarar que es lo que iba a pasar, y que ayuste el tamaño deseado para la partición de windows. Luego, clicky clicky... Ubuntu se está instalando. :)

Termina la instalación, le pido que saque el cd y reinicie... esos minutos de verlo desconectado fueron interminables. Esperaba que suene el celular en cualquier momento, pero no... de repente apareció conectado, desde el Ubuntu recién instalado.

Lo fácil de la instalación de Ubuntu Feisty me sorprendió. Mi máquina está instalada desde el desaparecido Warty, y nunca más volví a reinstalarla, así que no conocía bien el instalador.

Desde este humilde post, felicitaciones a todos los que hacen de Ubuntu un sistema operativo 'para seres humanos'. :)

martes, 10 de julio de 2007

Cambio de trabajo

Después de haber trabajado en la misma empresa (MSA) durante más de una década -doce años para ser más preciso- decidí que era momento de un cambio de ambiente.

Un amigo que pasó el dato de que en una empresa estaban haciendo una búsqueda que me podía interesar. Luego de algunas entrevistas y reuniones, llegamos a un acuerdo y el lunes 16 de Julio comienzo a trabajar en OLX.

Estoy bastante ansioso por empezar a trabajar con este nuevo equipo. Las personas que tuve la oportunidad de conocer en OLX me parecieron geniales, y pienso que va a estar muy bueno trabajar con ellos. Si a esto le agregamos que hay personas de varios países, el trabajo promete ser de lo más interesante.

Desde acá les mando un gran saludo a todos los compañeros (y ex-compañeros) de MSA, seguramente nos mantendremos en contacto.

Cómo instalar/actualizar paquetes en Ubuntu sin banda ancha

Es notorio como se incrementó últimamente el uso de Linux, y en particular de Ubuntu que es la distro que sigo más de cerca. Entre los nuevos usuarios hay muchos que no tienen acceso a banda ancha en sus casas, y para ellos es un gran problema poder actualizar o instalar paquetes. La alta dependencia de internet no es algo muy conocido en el mundo de windows, donde las cosas se actualizan muy cada tanto, y generalmente requieren una reinstalación (o cambio de maquina) ;)

En Ubuntu es muy fácil mantenerse actualizado o instalar cosas sin disponer de banda ancha todo el tiempo. Yo estuve actualizando mi máquina de esta forma durante el ultimo año.

El procedimiento es el siguiente:
  1. Entrar al gestor de paquetes (synaptic)
  2. Hacer la actualización de la lista de paquetes con el botón Recargar (esta es la única parte que no se como hacer sin conexión).
  3. Seleccionar las actualizaciones a aplicar, o
  4. Seleccionar los paquetes nuevos a instalar.
  5. Desde el menú Archivo, seleccionar la opción 'Generar un script de descarga de paquetes'.
  6. Con este script en un disquete (soy viejo :) o un pendrive, van a un locutorio o a algún lugar donde tengan banda ancha.
  7. Si consiguen una maquina con Linux, el script funciona de una ya que usa wget para bajar los paquetes seleccionados (y todas sus dependencias)
  8. Si no tienen Linux, editen el archivo y van a ver la lista de paquetes a bajar. Generen una lista para un manejador de descargas, o copien y peguen las direcciones en el navegador.
  9. Guardan todos los archivos bajados en un pendrive o CD (esta vez el disquete no va a alcanzar :)
  10. De vuelta en su máquina sin conexión, abren el synaptic y desde el menú Archivos seleccionan la opción 'Añadir paquetes descargados'
Eso es todo, la instalación de los paquetes es automática así que no hay mas que hacer.

Espero que les haya sido útil.

lunes, 9 de julio de 2007

Nieve en Buenos Aires

A esta altura ya no debe quedar nadie en el país que no se haya enterado que está nevando en la ciudad de Buenos Aires. Según dicen, la última vez que nevó fue hace unos ochenta años.

No solo es curioso ver nevar en la ciudad, sino ver el ícono del applet de clima de gnome...


Para los que viven en climas más fríos, esto no debe tener nada de novedad, pero esta bueno ver la nubecita con nieve en el panel... algo que pensé que no iba a ver, ya que no acostumbro a llevarme la compu de vacaciones :)

jueves, 5 de julio de 2007

¿Ubuntu infiltrado en CQC?

En la sección de las cucarachas del programa de CQC del 3 de Julio, estos simpaticos insectos estaban paseando dentro de la heladera de Sofovich mientras masacraban a todo el mundo, como de costumbre.

De repente, me pareció ver un logo familiar en una de las latas que hay en la heladera... no se ve completo, pero a buen entendedor pocas palabras:

El video ya está disponible en la red, la lata en cuestion aparece dos veces, siempre en la parte izquierda de la pantalla.

¿Habrá algun Ubuntero infiltrado en el equipo de Pergolini?

viernes, 29 de junio de 2007

Un buen servicio de DNS

Esta semana contraté un servicio de banda ancha (Flash), y la verdad que los DNS que me asignaron dejan mucho que desear. Sólo resuelven direcciones cuando se les canta y para los dominios que se les canta.

Le comenté esto a Marcelo quien me recomendó OpenDNS. Santos remedios Batman!

No sólo es un buen servicio de DNS (por lo menos, hasta ahora) sino que si uno le pifia a un nombre de dominio, te devuelve una busqueda de dominios similares, por supuesto agregando algo de publicidad, pero dentro de todo el servicio es bueno.

En el sitio hay instrucciones para configurarlo en varios sistemas operativos, en Ubuntu recomiendo que los agreguen al archivo de configuración del cliente de DHCP, así usan siempre los mismos DNS sin importar la ubicación (útil para los que andan con la notebook de un lado al otro). Pueden acceder a las instrucciones para configurar Ubuntu directamente desde acá.

miércoles, 27 de junio de 2007

Linux en una Dynapos PST-5000


Estuve haciendo algunas pruebas sobre una máquina de Dynapos, la PST-5000. Si bien la máquina es algo bastante estándar (un Celeron de 650 con 256Mb de RAM), uno nunca sabe que se va a encontrar al intentar instalar/usar Linux en uno de estos aparatos. La distribución seleccionada fue Ubuntu Feisty (7.04)

El primer tema fue la instalación del sistema operativo. La máquina que probé venía con un disco rígido de 40Gb, pero como la máquina no tiene disketera ni cdrom, había que buscar otra forma de instalar.
El primer intentó fue de la forma que me recomendó el proveedor: usando un adaptador ide-usb e instalando desde otra máquina. Lamentablemente la única máquina que tenía disponible para hacer esto tenía USB 1.0 y no era suficiente para instalar el sistema operativo usando debootstrap.
Descartada la opción recomendada, decidí probar con el booteo por red. La máquina tiene placa de red, y sólo fue cuestión de bajar el instalador de red de Ubuntu y hacer unos retoques a nuestro servidor DHCP (ver este howto).
Por ansiedad, durante la instalación no seleccioné ningun grupo de paquetes, por lo tanto la instalación fue rápida y pude probar si el kernel podía iniciar sin problemas.

Luego de la primera instalación, probé que el hardware haya sido detectado, la placa de red funcionaba, todo ok, asi que después de un 'apt-get install ubuntu-desktop' (y casi dos horas de espera) tenía el gdm esperando el usuario y contraseña.

La gran duda era si iba a funcionar el touchscreen, según las especificaciones es un Elo, y debería funcionar bien en Linux. Lamentablemente el Ubuntu no lo configura por default, así que tuve que 'ensuciarme las manos': a editar el xorg.conf a mano...

Este debe ser uno de los archivos más temidos, y la verdad que no hay nada por que temerle. En este archivo se definen los dispositivos que se van a usar desde el entorno gráfico, de qué tipo son (teclado, pantalla, placa de video, etc), y como se relacionan en una configuración determinada. El miedo popular viene de que al romper uno de estos archivos no vuelve a levantar el entorno gráfico, y en estos casos hay gente que llega a reinstalar el sistema completo. La solución es muy simple: 'sudo dpkg-reconfigure xserver-xorg' desde una consola. Tampoco es una mala idea hacer una copia antes de modificarlo, por supuesto.

Para levantar los módulos del touchscreen tuve que crear una sección para el dispositivo:


Section "InputDevice"
Driver "elographics"
Identifier "touchscreen"
Option "Device" "/dev/ttyS2"
Option "Type" "cursor"
Option "MinX" "4000"
Option "MaxX" "50"
Option "MinY" "4000"
Option "MaxY" "100"
EndSection


Como pueden ver, los valores de MinX y MaxX, y MinY, MaxY están invertidos, eso es porque este modelo viene con el touch invertido (?) Los valores que muestro son para una pantalla de 15" y 1024x768. Para calibrar bien el touch, hay que usar el viejo método de prueba/error, otra opción no encontré (si alguien sabe como configurarlo de forma mas facil, que avise :))

Luego, en la sección de Layout, donde se combinan todos los dispositivos para el entorno gráfico, agregué lo siguiente:


Section "ServerLayout"
...
InputDevice "touchscreen" "SendCoreEvents"
EndSection


Por supuesto, hay que reiniciar el X, en el caso de Ubuntu, es suficiente con reiniciar el gdm: 'sudo /etc/init.d/gdm restart' y ya está: un Ubuntu con touchscreen en una máquina de POS. Para ejecutar un Gnome completo es un poco lenta, pero para aplicaciones customizadas, sin cargar un entorno completo, lo veo más que factible.

Espero que le sirva a cualquier que esté pensando en usar una máquina de estas o al menos para configurar un touchscreen en Linux. No eran tan difícil...

jueves, 14 de junio de 2007

Traducción curiosa

Estaba escuchando música con el Rhythmbox cuando me percaté de un botón un tanto gracioso:


La traducción está perfecta, ya que la función del botón es limpiar la cola de reproducción. Pero no deja de ser gracioso ver el texto con ese icono de escobita.

Algunos se divierten con tan poco... :)

miércoles, 13 de junio de 2007

Vuelve Soda Stereo, y tengo entradas!!!

A esta altura no es ninguna noticia, pero en Octubre toca Soda Stereo en la cancha de River.

Dicen que se vendieron 90.000 entradas en los primeros dos días (menos mal que era una preventa :) y para variar, el sistema de Ticketek se 'cayó' a los cuarenta minutos de estar funcionando.

Mi hermana se portó, fue a hacer la cola y consiguió entradas para el 20 de Octubre!!!

Ahora a tener paciencia, y guardar las entradas bajo llave... no sea cosa que uno se tiene de ponerlas en MercadoLibre ;)


PD: los jóvenes vamos al campo, no como otros... jeje...

PD2: Que Ticketek se ponga las pilas, no puede ser que se les caiga el sistema cada vez que venden algo más grande que Chiquititas.

lunes, 11 de junio de 2007

Using Ubuntu and Python in elections systems

Since 1999, Magic Software Argentina (the compay I worked for until mid 2007) was responsible for providing information systems related to electoral processes in several provinces in Argentina. Some of these proyects included some form of electronic voting. Usually the main function is to provide the results of the election before midnight.

I've been involved in the design and development of every system used since the first one, that was implemented using only propietary software and tools. On May 20th, 2007, we carried out the first implementation of the system running absolutely on free software and tools: the elections in the province of Río Negro were made using Ubuntu, Python and PostgreSQL.

A quick introduction to the case

The process takes place at the end of the election day, that is 6:00 p.m., and it's based on the data provided by the marshalls at the voting places in official paper forms wich are sent to the datacenter by some means (fax, courier mail, etc). Data in these forms are fed to the system by a group of dataentries, while another component of the system adds up this data generating reports and charts served in the results site.

The software used in this process must be both reliable, secure and overcome any contingency in less than half an hour and fast enough to process at least 90% of the forms before midnight. The information provided by the system is what public media (newspapers, tv channels, radios) take as a basis for next morning headlines.

Getting to know the penguin

The first time we made an electoral process, it was based absolutely in preopietary software and tools. All machines were running Microsoft Windows, the programming language used was Magic and the html reports were made in a batch process and then uploaded to the official results web site.

At that time, I was taking my firsts steps in the world of GNU/Linux and open source. I had some experience in AIX and SCO, but wasn't so confident in OSS tools to put it forward for that critical application.

It was in mid 2000 when we first used Linux in a process realated to elections. We where using Compaq Tru64 for the main servers, the pie-charts generating program we used only run on Windows, and the performance wasn't acceptable. Since we needed the sources to be compiled in Tru64, the options where open source software or spend a lot of money. Whe choose open source, and found ploticus, a superb charting program that helped us since that election took our testing Linux server to the datacenter, and that was the first work we gave to Linux: it spent all the night drawing pie charts without problem. The conclusion was that Linux was stable enough to be used in critical applications. We -the technical staff- already knew that, but management not always trust tools that are not backed up by a company. In the following elections in which we were involved, we included more free/open tools: Linux became the main operating system for servers, apache was used as web server and PHP was used to generate reports.

Some times the options were limited by some propietary software we still used, like Oracle. Since Oracle only supported Red Hat (and maybe SuSE), we didn't have a choice for the distro to be installed on the database server. For the data entry application, we still used Magic on Windows.

The final evolution: Ubuntu, Python and PostgreSQL

In 2006 we made an electronic vote experience for the city of Rosario. It was a turning point since for the first time we didn't use Magic as the main programming language. The solution was based on Ubuntu LiveCDs, and the voting system was absolutely coded in Python + Gtk.

From that experience we learnt that Ubuntu was a stable Linux distro, and python is an awesome programming language that let us focus more on the functionality that in the problems related to the language. Programming in python is easy and fast, sometimes you have the feeling that you're just typing what you're thinking, it's amazing.

In these projects time is always short, but thanks to python (and Marcelo Fernandez's work) we managed to finish a module that helped people with sight disabilities to cast their vote in secret, using festival to read them the available options, and confirm the vote to be casted (using headphones).

For the elections in the province of Río Negro on May 20th, 2007, we chose to use the same tools that had been so satisfactory in Rosario, Ubuntu and python. The only problem here was that Oracle is not officialy supported in Ubuntu yet, and for the servers we should have to use Red Hat.

Since we are more experienced in managing Debian like systems, and didn't have much time to fully test our applications running on Red Hat, we took the last step left to make an election process only on open/free software: if we wanted to have our servers running Ubuntu, Oracle was not an option, so we moved to PostgreSQL.

After some quick tests, we were confident in PostgresSQL's performance. Instalation was just an 'apt-get install' away, and the online documentation was enough to set ready the database for the process.

For the data-entry application, made in python+gtk, we'd had to install Ubuntu and the application in a dozen rented machines the day before the elections day. To avoid such amount of work, time being was such a limited resource, we chose to set a Ubuntu + LTSP server, and used the machines as thin clients. This way all the configuration was made on only one server, and the deploy was reduced to net-boot the client machines.

Many technologies and products where used in the solution provided. The results where faxed from the voting centers to a datacenter in the city of Viedma. These faxes were sent to a posftix mail server by the Cisco appliances that received them. The fax images where extracted from the mails (using python and imagemagick) and sent to Buenos Aires (970 km away) through a VPN to be processed by the data entries. The results web site was running Apache + mod_python, as well as a workflow management system (only accesible in Viedma, through the VPN). Every machine involved in the process was running Ubuntu Edgy or Feisty.

Some pics of the datacenter in Buenos Aires: http://picasaweb.google.com/gepatino/EleccionesRioNegro2007

Conclusion

Many people, including IT pros, use to think that community supported free software tools or distros are not 100% reliable in mission critical applications, and they end up usign comercial distros and/or propietary software. After this project are able to state not only that this vision is erroneous, but also that in some cases productivity was greatly improved.

Using Ubuntu as the main (and only) distribution allowed us to install and configure the bunch of servers that took part in the process. The Debian package system is unvaluable, and we found any piece of software we need in the Ubuntu repositories. It wasn't necessary to download or compile a single program.

In terms of programming, Python has anything we could need for this project. Python support on Ubuntu is great, anytime we needed a specific library, we found it on the repositories. Thanks to the power of python and the programming speed you can develop, only two skilled programmers were necessary to program the whole system, when using other tools we always needed more than four. Productivity in python is awesome.

Free software tools mantained by the community are absolutely reliable for mission critical applications like the one presented in this article. If they are so valuable in this kind of sensible proceses, why not use them in your next project? ;)


Gabriel Ernesto Patiño
https://gepatino.blogspot.com


Creative Commons License
This
work is licensed under a Creative Commons Attribution-Share Alike 3.0 License.
Special thanks to Maria Laura Schibber for her review on this translation.

miércoles, 6 de junio de 2007

Soy famoso! :)

Hace un rato viene mi jefe y me dice 'buscá "voto electronico" en Google Images, y fijate quien aparece en la primer página'.

Por supuesto, pensé que iba a aparecer él... pero no... Google vuelve a sorprenderme. Esta vez el famoso soy yo :D

Pueden ver los resultados de la búsqueda desde este enlace, y por si Google decide eliminarme, desde acá pueden ver la foto.

Esta nota es totalmente irrelevante, pero es curioso verse a uno mismo en la primer página de resultados para un tema tan interesante. Y bueno... el que sabe, sabe ;)



La busqueda termina apuntando a una nota de un sitio de Rosario, y yo no soy el que está votando, sino el que controla en actitud solemne :)

viernes, 1 de junio de 2007

El Blog de Marcelo!: Ubuntu GNU/Linux + Python en Rio Negro

Marcelo Fernández, un compañero del laburo, escribió algo más sobre cómo trabajamos y que herramientas usamos para el sistema de recuento de votos de Río Negro.

Si... soy un 'duro'... programo sólo con el vim... ;)

El Blog de Marcelo!: Ubuntu GNU/Linux + Python en Rio Negro

miércoles, 30 de mayo de 2007

Ubuntu, Python y Software Libre en procesos electorales

Desde el año 1999, MSA - Magic Software Argentina, la empresa donde trabajé hasta mediados del 2007, fue seleccionada para llevar a cabo varios procesos electorales en diferentes provincias y localidades de la República Argentina. Recientemente algunos de estos proyectos incluyeron alguna forma de voto electrónico, pero generalmente se trata de hacer el recuento de votos del escrutinio provisorio.

Desde la primer elección en que la empresa fue seleccionada, fui parte del equipo de diseño y desarrollo del sistema. Inicialmente el sistema estaba basado 100% en tecnologías privativas. El 20 de Mayo de 2007 hicimos el primer sistema de recuento de votos basado totalmente en software libre para las elecciones provinciales de la provincia de Río Negro, usando Ubuntu como distribución de Linux, y Python como lenguaje de programación.

Introducción al problema

El escrutinio provisorio es el que se hace rápidamente tomando en cuenta los datos que registran los presidentes de mesas en un formulario determinado. Éstos son los datos oficiales que generalmente están disponibles a la medianoche del día de las elecciones, y los que vamos a consultar en todos los medios de prensa al día siguiente.

Para el escrutinio definitivo, el juzgado electoral resuelve algunos votos que no fueron tomados en cuenta en el escrutinio provisorio como los votos recurridos e impugnados, y determinan si son o no votos válidos. Como este proceso puede tardar varias semanas, es de suma importancia obtener el resultado del recuento provisorio lo antes posible para dar transparencia al acto electoral. A menos que la elección haya sido muy pareja entre dos o más candidatos, no hay diferencias entre el escrutinio provisorio y el definitivo ya que los porcentajes de votos recurridos e impugnados son muy bajos, y generalmente no deciden ninguna elección.

En base a los requerimientos implícitos del recuento provisorio (velocidad y confiabilidad) el sistema que se encargue de tomar la información generada por los presidentes de mesa y genere los reportes «minuto a minuto» que van a ser consultados públicamente debe ser extremadamente confiable, estar diseñado como para permitir resolver cualquier contingencia (desde cortes de luz, hasta daños en el hardware) en menos de media hora, y como si todo esto fuera poco, tiene que ser lo suficientemente rápido como para procesar más del 80% de las mesas antes de la medianoche.

Conociendo al pingüino

El primer proceso electoral que hicimos fue basado completamente en herramientas y software privativo. Todas las máquinas corrían el sistema operativo de Microsoft (no recuerdo las versiones), el lenguaje de programación era Magic (una herramienta de desarrollo post 4GL) y los reportes (html) eran generados en lotes que luego eran subidos al sitio web de publicación de resultados.

En esa época estaba dando mis primeros pasos en el mundo de GNU/Linux, y aunque ya había utilizado sistemas AIX y SCO, no tenía el conocimiento ni la confianza como para proponer el uso de herramientas de software libre.

Rápidamente fui aprendiendo a relacionarme con el pingüino, en gran parte gracias a la comunidad de LUGAr y su maravillosa lista de correos. Gracias a toda la gente que participa de la lista aprendí mucho, primero haciendo preguntas, luego respondiendo las preguntas que estaban al nivel de mis conocimientos.

Desde el año 2000, Linux empezó a acompañarnos en los procesos electorales. Su primer colaboración fue trabajar como generador de gráficos para los reportes de resultados. Inicialmente habíamos seleccionado una herramienta que corría sobre Windows, pero la performance no era aceptable. Las bases de datos (Oracle) corrían sobre Compaq/Tru64, así que buscamos alguna herramienta de código abierto que cumpla con los requerimientos y encontramos a ploticus que desde ese momento siempre nos acompaño. La idea era compilar ploticus para que corra sobre Tru64, ya que Linux no estaba visto como algo confiable por los «no-técnicos». Por problemas de librerías y compiladores, no pudimos hacer compilar el programa para que corra en esa plataforma, así que directamente nos llevamos nuestra máquina de pruebas en Linux, y esa fue la entrada en escena del pingüino. Se realizó el proceso sin problemas, y quedó comprobado que podíamos confiar en Linux para procesos importantes.

En procesos posteriores, fuimos incorporando gradualmente más Linux y software libre dentro del sistema. Configuramos nuestros propios servidores web (Apache), hicimos la generación de reportes con PHP, las bases de datos Oracle fueron instaladas sobre RedHat, de a poco íbamos ganando conocimiento (y confianza) en la utilización de herramientas libres.

Muchas veces la selección de las herramientas libres estaba limitada a las herramientas no libres que también formaban parte del sistema. Generalmente usábamos Red Hat como distribución ya que Oracle sólo brindaba soporte para esa distribución, para el módulo de ingreso de datos seguíamos utilizando Magic sobre Windows.

Al final, Ubuntu y Python

En el año 2006 hicimos una experiencia con voto electrónico para la Municipalidad de Rosario. Ese fue un punto de inflexión ya que utilizamos por primera vez un ambiente de desarrollo abierto para desarrollar las interfases de usuario. La solución utilizada se basaba en LiveCDs de Ubuntu modificados para contener el software de voto que usaban los electores. Dado que Magic no tiene un cliente GUI para Linux, decidimos utilizar Python + Gtk.

La combinación funcionó a la perfección, y nos sirvió para sentar precedentes que no solo las distribuciones comerciales son estables y confiables. Ubuntu corriendo desde un LiveCD fue sumamente confiable, y sólo tuvimos problemas con los módulos de un touch screen cuyo fabricante sólo nos facilitó una versión beta de los mismos.

Por otro lado comprobamos que Python es un lenguaje de programación extremadamente poderoso. Sin la velocidad de programación que brinda Python, no hubiéramos tenido tiempo de hacer un módulo especialmente diseñado para que puedan votar las personas con capacidades de visión disminuidas, utilizando 'festival' para que asista al elector durante el proceso de emisión del voto (gracias a Marcelo Fernández)

En base a la experiencia recogida en la ciudad de Rosario, para el proceso de recuento provisorio de las elecciones de Río Negro, el 20 de Mayo de 2007, queríamos utilizar la misma plataforma (Ubuntu + Python) pero se imponía el problema de que Oracle sólo brinda soporte si se ejecuta sobre Red Hat Enterprise Linux.

Para el sistema de reportes y el sistema de carga de datos, ya habíamos seleccionado Ubuntu como plataforma, dado que es la distribución que usamos para trabajar diariamente. Si todo el software era desarrollado y probado en una plataforma, no era muy convincente cambiar de distribución par el día del proceso. La base de datos podría haber corrido sobre un RHEL, pero necesitábamos que los dos servidores principales puedan cumplir con las funciones del otro en caso de una caída inesperada. Tener un RHEL por un lado y un Ubuntu por el otro no nos permitía estar totalmente seguros que la aplicación se comporte igual, y si había que levantar el Oracle en Ubuntu, no íbamos a tener soporte.

Dado que los tiempos estaban muy ajustados, no podíamos hacer pruebas de compatibilidad de la aplicación en diferentes distribuciones, con diferentes librerías y versiones de programas. Entonces se tomó la decisión que tanto tiempo tardamos en tomar. Dado que Oracle no soporta Ubuntu, y necesitamos Ubuntu en los dos servidores principales, seleccionamos a PostgreSQL como base de datos.

Luego de un par de pruebas rápidas, quedamos totalmente convencidos que era lo que necesitábamos. La instalación fue más simple de lo que pensábamos: un simple apt-get install. Para la configuración no tuvimos que tocar demasiados parámetros ya que el volumen de datos no era demasiado grande. Lo importante era que los inserts y las consultas sean rápidos, y consistentes.

Para la parte de carga de datos, teníamos que instalar la aplicación en doce máquinas alquiladas para la ocasión. Si bien nos permitían hacer una instalación e instalar Ubuntu en todas las máquinas, hacer esto nos hubiera llevado un par de horas largas. Para resolver el problema, configuramos un LTSP sobre Ubuntu, y utilizamos las máquinas como clientes delgados. En consecuencia la instalación de la aplicación sólo se hizo en una máquina, y el resto fue arrancar las máquinas desde la red.

Descripción de la solución utilizada

El funcionamiento del sistema es, en forma sintética, el siguiente:

  • Luego de hacer el recuento manual de votos, el presidente de mesa llena un formulario con los resultados del recuento para esa mesa.
  • Los formularios son enviados físicamente al juez de paz más cercano.
  • Los jueces de paz son los responsables de transmitir los formularios por fax al centro de cómputos de la ciudad de Viedma.
  • Tres equipos Cisco reciben los faxes y los envían a un servidor de correos dentro de la red local.
  • Un proceso en python se encarga de desempaquetar las imágenes y procesarlas para que puedan ser utilizadas en el resto del circuito.
  • Mediante una aplicación GUI, varios operadores confirman que los faxes recibidos sean verídicos, legibles, etc.
  • Las imágenes aprobadas son transmitidas a través de una VPN al centro de computo de Buenos Aires.
  • Los dataentries ven las imágenes en un programa que muestra la imagen y los campos para ingresar los votos.
  • Las imágenes son cargadas por dos personas distintas, si los datos de las dos cargas no coinciden, se resuelve la incidencia en la ciudad de Viedma mediante un sistema de carga web (apache + mod_python) que sólo es accesible mediante la VPN.
  • Las planillas que fueron cargadas correctamente son publicadas en el sitio web de reportes públicos (apache + python).

En la ciudad de Viedma, se utilizaron las siguientes herramientas:

  • Ubuntu 7.04 (mailserver, aprobación de faxes)
  • postfix
  • Python + Imagemagick (proceso de imagenes)
  • Python + pygtk + glade

En la ciudad de Buenos Aires:

  • Ubuntu 6.10 (servidor de base de datos, servidor web, servidor LTSP)
  • PostgreSQL 8.1
  • Python + pygtk + glade (programa de carga de datos)
  • Apache 2.2 + mod_python (consulta de estado de proceso y resolución de incidencias)
  • Apache 2.2 + python (cgi de generación de reportes públicos)
  • ploticus (generación de gráficos para los reportes)

Pueden ver algunas imágenes desde este enlace.

Conclusión

Generalmente se piensa que las herramientas de software libre mantenidas por la comunidad no son 100% confiables en aplicaciones de misión crítica, y se termina recurriendo a distribuciones comerciales, bases de datos propietarias, etc. Durante el desarrollo de este proceso, no sólo pudimos comprobar que esta visión es errónea, sino que en algunos casos se incrementa la productividad.

Usar Ubuntu como única distribución nos facilitó muchísimo la instalación y configuración de los múltiples servidores que participaron del proceso. El sistema de paquetes apt-get (y sus derivados) son una ayuda invaluable, y en los repositorios pudimos encontrar todas las herramientas que necesitamos. No necesitamos bajar programas o librerías de sitios no oficiales, y no fue necesario (re)compilar ni un sólo programa.

En cuanto a la programación, Python nos brindó todo lo que necesitamos, y al momento de necesitar instalar algunas librerías en particular, siempre las encontramos en los repositorios de Ubuntu. Python, al ser tan potente y rápido para el desarrollo, nos permitió desarrollar el sistema completo solamente entre dos personas (Marcelo y yo). Cuando usábamos otras herramientas de desarrollo nunca fuimos menos de cuatro desarrolladores.

En definitiva, las herramientas libres mantenidas por la comunidad, por lo menos las utilizadas en este proyecto, son totalmente confiables en aplicaciones de misión crítica como el caso presentado. Si son confiables para este tipo de procesos tan delicados, ¿por qué no usarlas en su empresa? ;)

Gabriel E. Patiño

Creative Commons License
This
work is licensed under a Creative Commons Attribution-Share Alike 3.0 License.

Presentación

Tarde, pero seguro, decidí dar de alta un blog para ir publicando una que otra cosa.

Soy analista de sistemas, y aunque hago diseño e ingeniería de software, lo que más me gusta es la programación y administración de sistemas Linux (o unixes, en su defecto)

Trabajo en esto desde 1994, y aproximadamente desde el 1998-1999 empecé con Linux y software libre.

Cuando tengo tiempo participo de varias listas de mail sobre Linux y Python, y he colaborado en Ubuntu con traducciones y algo de bug traking. Pueden ver mi perfil en Launchpad desde este enlace.

Espero poder subir notas interesantes, nos vemos.

Gabriel