el blog de cHagHi

(el rejunte on-line de todo aquello que deseo compartir)

 

PHP

Estos últimos días tuve que lidiar bastante con PHP, para hacer el plugin que quería para mostrar artículos del año pasado en el contexto de los que voy escribiendo este año.

Por un lado, hay dos trabas grandes, que son que no sé mucho de PHP, y por otro, que no  conozco a fondo la API de LifeType, el software con el que funciona este blog.

Pero aún teniendo en cuenta esas dos importantes limitaciones mías a la hora de ponerme a programar con PHP, hay una cosa que me molesta bastante y es como el lenguaje se interpone en lo que yo quiero hacer, con sus propios glitches. Y tiene que ver mucho con la legibilidad del código. Es un buen momento para postear algo que creo que nunca llegué a poner en mi blog:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>

Hay muuuuuuuuchos de los items del Zen de Python que se me vinieron a la mente mientras escribía el "ayearago" plugin.

 

Tercer caso de éxito

(los dos primeros, léanlos acá)

Además de que nuestro entorno de trabajo nos haga las cosas fáciles, es bueno saber que, cuando todo se va al carajo, nos puede ayudar a no perder el trabajo realizado.

Hoy estaba investigando en la web sobre un tema que necesito resolver en el laburo. Tenía un mail a medio escribir, con varios links y ejemplos de código copypasteados, que iba creciendo a medida que iba encontrando información. Y tenía como 6 o 7 páginas web abiertas, en distintas solapas y ventanas del navegador, de info que había encontrado, y que aún no había "procesado" (es decir, decidido si me servía o no).

Uno de los links, era un documento de MS Word. Se inició la descarga, y cuando terminó, empezó a abrirse OpenOffice (que sigue siendo un monstruo, por lo pesado...). Y mientras estaba cargando, se colgó todo. Mal. En forma completa. No más mouse, se congelaron las applets de Gnome, se congeló el monitor de tráfico de red, dejó de responder el teclado, no pude conmutar a una ventana de texto, el sistema no respondió a un CTRL-ALT-BACKSPACE para reiniciar en forma "dura" el entorno gráfico... nada. Cuelgue total.

Esto es *muy* raro que pase... y como al menos dos de los coolers de mi gabinete se que no están andando del todo bien, sospecho de un cuelgue por temperatura... pero también podria haber sido OpenOffice.

El asunto es que no me quedó más remedio que apretar el botón de reset. Y resignarme a perder el mail que estaba escribiendo, y lo que era peor, toda la info que había encontrado.

Reinicié la máquina, y al volver a loguearme, obtuve dos agradables sorpresas:

  • Cuando abrí Evolution, me avisó que tenía un mail a medio escribir, y si quería recuperarlo. Le dije que sí, y ahí apareció mi e-mail, con el cursor titilando donde lo había dejado, y hasta la última letra tecleada. Y esto no es gracias a una función tipo "autoguardar" que yo haya activado en las preferencias. No es un "snapshot" del mensaje que se toma cada X minutos y se guarda como borrador, sino que es la capacidad de Evolution de recuperar en forma completa todos los mails que estaban en proceso de edición si se produce un cierre anormal de la aplicación.
  • Cuando abrí Epiphany, me dijo si quería recuperar las páginas que estaba browseando cuando se produjo el crash. Le dije que sí, y recuperó todas las ventanas, con todas sus solapas (el tipo no solo "recuerda" que tenía N páginas abiertas, sino que llega al punto de saber cuales estaban en solapas en que ventanas, y cuantas ventanas abiertas había)
  • Bonus track: La solapa del documento Word no se cargó, y en su lugar, apareció un mensaje de Epiphany diciendo que esta ventana no estaba totalmente cargada al momento de producirse el crash, con lo cual era probable que fuera la causante del problema. En realidad no, porque lo que crasheó fue algo de bastante más abajo de Epiphany que colgó todo... de hecho pude abrir luego esa ventana sin problemas, y pude abrir el documento MS Word con OpenOffice (lo cual refuerza mi sospecha de un problema de hardware...). Pero eso no quita que me pareció sumamente interesante el approach que tomaron los desarrolladores de Epiphany para manejar estos casos: "Mirá, esta página no la voy a cargar, porque sospecho que es la que me mató antes. Si querés cargarla igual... apretá recargar... bajo tu propia responsabilidad". Interesante. Muy.

Conslusión: En un mundo ideal este tipo de cuelgues no deberían darse (y de hecho son RARÍSIMOS en Linux), pero es bueno saber que el OS y sus aplicaciones también pueden darnos una mano para no perder el trabajo realizado cuando todo se fue de control.

Tenemos que navegar con lo que los extraterrestres nos digan... ;)

Firefox Circle

Y ya que estamos, un año antes escribía: Percepción del color :: Bruce Willis x 2

Alocado Alocador

Con algunos miembros de PyAr (alecu, dave, lucio, facu, nubis y yo) armamos un equipo para participar del desafío Pygame.draw, organizado por la misma gente de PyWeek, que básicamente consistía en hacer un juego en menos de 64Kb de código Python, usando SOLAMENTE pygame y la librería estándar, sin recursos externos.

El resultado es Alocado Alocador, un juego en el que tenemos que "administrar" la memoria, ubicando en la misma los bloques de memoria de los procesos que van apareciendo en una cola. La idea es hacerlo rápido, porque si se tarda en ubicar los bloques, el sistema se vuelve menos responsivo, y el usuario va perdiendo la paciencia. Cuando la paciencia del usuario se agota... perdemos. Hay algunas variables más en el juego (la verdad, quedó divertido!), pero les propongo bajarlo y enterarse jugándolo y leyendo la ayuda.

En unos días iremos completando seguramente la página wiki del proyecto con algo más de info. El juego puede bajarse acá, y necesita unicamente el intérprete de Python y la librería pygame.

Fue muy divertido participar en este desafío... si bien me faltó tiempo y recién me pude enganchar a full estos últimos dos días. El finde me la pasé probando el juego, discutiendo cambios, tocando algo de código, y sobretodo, "afinando" el mini-sintetizador que hizo alecu para tocar las melodías, y transcribiendo archivos MIDIs a la notación de ese sintetizador para ponerle música a la cosa.

Ahora nos queda esperar el resultado de la competencia... estuve jugando el resto de los juegos enviados, y la verdad... ¡tengo esperanzas!

Panorámicas

Después de mucho tiempo, me puse a instalar y probar con paciencia tres herramientas con las que hacía rato quería experimentar:

Son tres herramientas que se complementan para "pegotear" de una manera inteligente fotos que están sacadas de forma consecutiva, para formar una única imagen panorámica. Tenía un par de fotos sacadas así de mis viajes... pendientes de pegar hasta el día que tuviera tiempo. Alguna vez investigué un poco, y llegué a la conclusión de que éstas eran las herramientas adecuadas, pero nunca las probé del todo, porque para Fedora Core no tenía RPMs disponibles, y compilarlas no era muy sencillo que digamos. Además, autopano-sift por ejemplo está desarrollado en Mono (C#), y hasta no hace mucho, el toolchain de Mono no estaba muy maduro (y menos aún en Fedora Core).

Ahora, con Ubuntu 6.06 LTS, tenía ya los paquetes para autopano-sift y enblend. Solo tuve que compilar Hugin, lo cual no fue tan complicado.

El proceso funciona más o menos así: Autopano-sift toma las imagenes, y calcula los puntos en común, guardando esta información en un archivo. Luego, se carga este archivo en Hugin, se toma la info EXIF de las imágenes (lo que proporciona metadata sobre lentes, distancia focal, luz, etc.), se aplican algunos patrones automáticos de alineación, y se reescriben las imagenes en formato TIFF, ajustadas, y con los datos necesarios para unirlos. Por último, se usa enblend para hacer el pegoteo final (Hugin también puede hacer este último paso, pero el tutorial que seguí decía que enblend lo hace mejor y... ¿por qué no creerle?)

El tutorial que estuve siguiendo es este: Create a Panorama (en inglés), que está redactado por un chabón que a juzgar por los ejemplos en su página, sabe un rato de panoramas :)

La verdad que estos tres programitas son una masa. Se obtienen resultados MUY buenos, como la foto que dejo de ejemplo al final de este artículo, con fotos tomadas el año pasado durante la travesía Lacar/Lolog. Es una vista del lago Lacar desde el Cerro Colorado. Está armada uniendo tres fotos. Hagan click sobre la imagen para poder verla y/o descargarla en tamaño real.

Lago Lacar

Código abierto. Cuando sí, cuando no. Mi visión.

Lo que sigue es el texto de un e-mail que envié a la lista de correo de PyAr, a partir de una discusión que se generó sobre el usar software libre (Python) para desarrollar software propietario, a partir de un mensaje que se envió invitando a la presentación de un producto desarrollado en Python.

Creo que el texto así como está es entendible, pero agrego un poco de contexto: El núcleo de la discusión era por un lado la postura de que todo el software tiene que ser libre, y otras opiniones donde la gente resaltaba el modelo de servicios de Red Hat (y otros) para ejemplificar como podía ofrecerse sin problema el código fuente, al mismo tiempo que los ingresos se generaban no por la venta del software en sí, sino por los servicios anexos al mismo (instalación, configuración, etc.)

Esta fue mi elucubración al respecto:

El modelo de código abierto funciona perfecto en determinado software que o bien se ha "comoditizado", o está camino a comoditizarse, o *debería* comoditizarse.
Un sistema operativo. Un compilador. Un editor. Una base de datos. Un servidor web. Un framework... ¿ven el patrón? Las herramientas de base.

Ahí el modelo de código abierto está perfecto, porque esas aplicaciones son muy valiosas como HERRAMIENTAS para hacer alguna otra cosa, pero por si solas, no son nada. A nadie le sirve una base de datos sin datos adentro, por excelente que sea, o el mejor servidor web sin una aplicación web que lo use.

Y por otro lado, son herramientas muy costosas de desarrollar y mantener, en tiempo y en recursos. Y entonces el modelo colaborativo del código abierto está excelente. Para desarrollar software de ese tipo de forma cerrada, tenés que ser una empresa enorme (Oracle, Microsoft, IBM, ...)

El modelo de servicios de Red Hat, Novell, etc., también es particular: El producto es estándar (es casi un commodity), muchos de los recursos de desarrollo no tienen que ponerlos ellos (o los pone un desarrollador de la comunidad como hobby, o los pone otra empresa (ej., Red Hat paga más empleados para laburar en GCC, quizás Canonical tiene más empleados en GNOME... a la larga, ambas empresas necesitan de los dos aportes)).

Además, un sistema operativo (que es sobre lo que "venden" servicios), es algo que cuando se quiere deployar en una empresa, genera una miríada de costos: de instalación, de capacitación, de certificación, de integración, de mantenimiento, etc., etc. Si yo tengo una empresa, y quiero que mis usuarios usen Linux, tengo dos alternativas:

  • Instalo un Debian (por poner un ejemplo de uno libre 100%), y me hago cargo yo de todo lo que viene atrás, de buscar ayuda en mailing-lists, foros, artículos en slashdot y demás;
  • Instalo un RHEL (por poner un ejemplo de uno pago), y pago una suma para siempre tener un 0800-Red Hat que me solucione la vida, me de mantenimiento, me de un ciclo de desarrollo predecible sobre los cambios que se efectúan en el SO, etc., etc.


Una PyME probablemente pueda usar Debian. Una empresa con 500 empleados, probablemente no.

Brindar ese servicio, no es fácil. No hay muchas empresas del tamaño de Red Hat y Novell e IBM que puedan darlo. Y cuando un consultor independiente viene y dice que brinda soporte para Linux, yo lo invitaría a detenerse a pensar como sería Linux si las grandes empresas no hubieran invertido tanto en él. ¿Habría soporte para tanto hardware? ¿Tendríamos gestores de paquetes y herramientas de administración avanzadas? ¿Tendríamos documentación? ¿Tendríamos localización, internacionalización, subsistemas de soporte para personas con capacidades reducidas, etc., etc.?

Creo que si no fuera por esas empresas (que son ENORMES), Linux no estaría donde está, y el consultor independiente tendría que dedicarse a otra cosa.

Y alguien dirá: ¡Red Hat nació con Linux! ¡No siempre fue grande! Es cierto. Lo mismo que Suse y otros. Pero justamente son fenómenos que se dieron mientras Linux estaba creciendo. Hoy, ya no es posible para nadie más ocupar esos lugares. Salvo que seas un Novell, que tengas el cash para comprar Suse. O que seas un multimillonario africano con muchísima plata, y seas tan atípico como para querer gastarla en fundar Canonical (y Ubuntu) y volar por el espacio, en lugar de gastarla en un yate y acciones de Microsoft.

Si Debian *hoy* quisiera volverse un Red Hat, no podría. Esa ventana de oportunidad, se cerró.

El asunto es que cuando dejamos de lado las herramientas, el toolchain de desarrollo, y los frameworks y toolkits de más bajo nivel, llegamos a las aplicaciones que brindan un servicio agregado. A las verdaderas "obras de arte" (lo otro, es la pintura, el pincel, el lienzo y la paleta). Y ahí nos encontramos con tres caminos:

  • Te lo tomás como hobby, y participás de un grupo muy grande de desarrolladores que tienen el mismo hobby que vos, y en ratitos libres van implementando la aplicación. Sería el ejemplo de Totem, Gaim, o cualquier aplicación de las que hoy instalamos sobre Linux.
  • Te lo tomás como laburo, y lo hacés vos solo o con un equipo de gente mucho más reducido en una empresa. Como por ejemplo GTalk, Photoshop, etc.
  • Le pagás a alguien para que te lo haga.

Si lo hacés como hobby, ¿quién te da de comer? O profesionalmente te dedicás a otra cosa (no a producir software), o trabajas en una empresa de software que necesita VENDER para pagarte el sueldo.

¿Y vender qué? Bueno, o es una empresa grande con un producto masivo y podemos hablar de generar y vender todos los servicios que hay alrededor del software (sería el caso de Red Hat), o es una empresa chica (o un producto chico) que no puede darse el lujo de ofrecer el código abiertamente, porque pierde su única ventaja competitiva, y en definitiva, todo el fruto de su trabajo, que es el software en sí.

En el caso de que pagues para que te hagan un software a medida, podrías llegar a exigir como parte de las condiciones que te entreguen los fuentes. Es algo a medida. Es algo para vos. Tenés que cubrirte si al desarrollador original le pasa algo. Pero hay una diferencia entre comprarle a alguien un software "a medida", o comprarle un producto. Hay una diferencia entre entregarle a alguien el código fuente de algo hiciste a medida para él (le sirve a él solo, o a poca gente más), o darle el código fuente de algo que haces para muchos más clientes potenciales.

La conclusión es (en caso de que alguien siga leyendo todavía :p) que si TODO el software fuera libre, no habría una industria de software, y no podríamos vivir de escribir software. Y si no pudiéramos vivir de escribir software (que asumo que es el trabajo o la industria que nos gusta), ¿estaríamos motivados para escribirlo? ¿habría llegado el software hasta donde llegó? ¿estaríamos discutiendo esto?

El concepto de código abierto y software libre está muy bueno. Podríamos decir incluso que es necesario. Pero, no es el único camino. Y necesita del software propietario para tener sentido.

Y ya que estamos, un año antes escribía: Actualizando pLog

Windows Vista, ¿innovación?

Después de casi 3 años de usar prácticamente en forma exclusiva Linux (en mi casa no uso otro SO, y Windows solo lo uso en el trabajo), uno se va olvidando las cosas que sufren a diario los usuarios de Microsoft.

Quizás eso suene un poco contradictorio (¿cómo? ¿lo usás a diario en el trabajo y te olvidás?). Entonces aclaremos: El uso en el trabajo es sistemático, es siempre un mismo set (reducido) de aplicaciones, en un ambiente controlado, donde un montón de configuraciones ni siquiera dependen de mí, ni tengo que ocuparme de ellas.

Ahora sí, al tema que nos ocupa.

Estuve leyendo sobre las "innovaciones" de Windows Vista. XP está por cumplir 5 años. Hace 5 años que los usuarios (asumiendo que hayan migrado, porque hay muchos que aún tienen Windows 2000 (o peor: Me o 98)) usan la misma tecnología (en varios aspectos) obsoleta.

Y después de todo este tiempo, miren las cosas que Microsoft recalca como "novedades" para Windows Vista:

  • Grabación de DVDs integrada
  • Filtro de SPAM en el cliente de correo
  • Miniaturas de los archivos de una carpeta, sean del tipo que sean
  • Navegación por internet con "tabs" (pestañas)
  • Buscador integrado
  • Galería de fotos que permite catalogar las imágenes por fecha, autor, nombre y etiquetas que ingresa el usuario
  • Una barra lateral en la que se pueden agregar herramientas, tales como calendario, fotos, lectores de RSS, etc.
  • Posibilidad de lanzar un programa o abrir un documento con solo tipear las primeras letras del nombre
  • Mayor seguridad y estabilidad (perdón, pero esto último habrá que verlo...)

¿Sigo? Mejor que no. ¿Eso es innovar? ¿Tienen idea hace cuantos MESES, o incluso AÑOS que TODAS esas características están disponibles en otros sistemas operativos? (o incluso como herramientas de terceros para Windows). Algunas de ellas dan risa, porque ya estaban incluso antes de XP, incluso antes de Windows 2000 (y no me extrañaría que más atrás también).

¿Qué nos queda por mencionar? Un juego de íconos nuevo. Ventanas traslúcidas. Poder hacer un montón de jueguitos 3D con las ventanas y menúes. Por lo que vi en las fotos y videos de las presentaciones, NADA, absolutamente NADA que no esté en OSX desde hace bastante tiempo, y nada que no sea posible hacer hoy también en Linux, con las últimas innovaciones de GNOME, KDE, Freedesktop.ORG y las últimas tecnologías desarrolladas por Novell y Red Hat.

Y tenés que pagar por eso (asumiendo que quieras hacer las cosas legalmente...) cientos de dólares. Y seguramente necesitás hardware más nuevo que el que tenés en tu casa. Y te tenés que bancar con eso una miríada de controles policíacos con los que Microsoft, tan solo por ser una corporación perteneciente a la ultrapacata sociedad norteamericana (que se jacta de libre y democrática al mismo tiempo que inventa leyes y controles para TODO, para absolutamente TODO), está obligado a meter en el sistema. Y entonces por este lado del mundo también nos "ganamos", como características "nuevas", los controles sobre la música que escuchás, los videos que reproducís, las fotos que sacás, etc., etc., en resumen, toda la serie de idioteces que se alumbraron con el DMCA (Digital Millenium Copyright Act).

¿Y después? Los virus. El spyware. Un escritorio totalmente DESintegrado, en el que las aplicaciones de terceros hacen cada una lo que quiere (una te alerta con esta burbujita, la otra con este cuadro de diálogo, una con este ícono, otra con otro...), que después tenés que estar actualizando cada una por su lado (entrar a este sitio para actualizar Flash, este otro para el antivirus, este otro para Windows, este otro para el firewarll, este otro para el Acrobat, etc., etc.), mientras que otros sistemas operativos tienen una interfaz MUCHO más consistente, con componentes MUCHO más integrados.

Puedo entender que una empresa use Windows, por las aplicaciones de backoffice, porque desarrolla en esa plataforma, porque a optado que Windows sea su plataforma de negocios, porque le gusta más SQL Server que otra base de datos... por lo que sea. A ese nivel, a nivel de servidor o estación de trabajo de una empresa, lo entiendo. Lo podemos discutir. Podemos discutir sobre el soporte, sobre la documentación, sobre interoperabilidad, sobre capacitación, sobre un montón de cosas (así y todo, CON PINZAS (cada mes que pasa, con mas pinzas...)).

Pero, ¿en tu casa? ¿Me querés decir en tu casa para QUE usás un Windows muy probablemente encima truchado, en lugar de otra cosa? ¿Realmente pensás que para navegar, para chatear, para enviar y recibir mails, para hacer los TPs del cole o de la facu, para llevar tus gastos, para escribir una carta, un fax, una planilla de cálculo, para manejar tus fotos, para escuchar y componer música, para editar o ver videos, para programar, para aprender, para experimentar, ganás algo usando Windows? A mi me parece que no.

Son pocos los motivos por los que te lo acepto:
  • Porque sos fanático de [reemplazar-por-tu-juego-preferido], y VERIFICASTE que en otro sistema operativo no corre (si hace mucho que no investigás al respecto, te sorprendería saber cuantos "engines" ya están disponibles para Linux por ejemplo, o cuanto mejoraron los emuladores que te permiten instalar el juego en su versión para Windows), y realmente no podés vivir sin jugar a eso.
  • Porque sos un profesional independiente que necesita determinada herramienta específica, que no corre en Linux y que (aún) no tiene un equivalente en esa plataforma.
  • Porque desarrollás software para la plataforma Windows.

Sinceramente no se me ocurre otro "caso de uso" que justifique Windows por sobre Linux para un usuario hogareño, un profesional o una PyME. Y me parece que la mayoría de la gente que usa Windows fuera de una empresa, lo hace por costumbre, porque es lo que le instalan, y NO porque caiga en alguna de esas categorías de usuario que mencionaba.

Si dentro de algunos meses decidís instalar Windows Vista, te deseo mucha suerte sorprendiéndote con todas las cosas "nuevas" e "innovadoras" que Microsoft ha tardado 5 años en copiar.

Microsoft se está volviendo un dinosaurio LENTO. No voy a negar que muchas de las cosas que hoy están en los entornos de escritorio de Linux no fueron innovaciones de esa plataforma, sino un "catch up" (puesta al día) respecto a los estándares que había. Pero la comunidad open source está teniendo un ritmo de desarrollo muchísimo, pero muchísimo más acelerado. Cuando salió XP, corría el año 2001. Vayan y vean en que estado estaba una típica distribución de Linux en ese año. Mírenla hoy.

Es como que la comunidad de desarrollo finalmente se puso "al día", y ahora va por más. En los últimos tiempos se han empezado a vislumbrar, y lo que es más importante, CONCRETAR, ideas realmente innovadoras.

Además, la integración, el que todos los proyectos trabajen coordinadamente, permite introducir cambios MUCHO más disruptivos. No hay que estar pensando en si tal servicio va a mantener la compatibilidad con cual, porque de última un proyecto le da una mano al otro y lo ayuda a actualizar su código. Y listo. En la siguiente actualización se actualiza TODO, y si de repente cambió completamente algún aspecto interno de una librería crítica del sistema operativo, el usuario ni se enteró. Solo sabe que se instaló una nueva versión del programa que ya venía usando. Siempre se avanza.

Microsoft, en cambio, se ve limitado por su propia historia. El próximo Internet Explorer 7 es un caso típico: Originalmente iba a estar disponible solo para Windows Vista. Todo el mundo se quejó, y MS tuvo que dar el brazo a torcer. Y ahora estará para WinXP también. Y estoy SEGURO que va a ser peor browser de lo que hubiera sido, porque internamente va a tener que adaptarse a las limitaciones de una tecnología (WinXP) vieja. Y entonces MS destina recursos a adaptar MSIE7 a WinXP. Y el costo es que saca recursos de Windows Vista, que de otra forma hubieran estado ocupados en hacer cosas nuevas para esa plataforma, y no en backportar código a XP.

Y MS deja de lado completamente WinFS, y esa SÍ que iba a ser una innovación interesante de ver, por todas las posibilidades que abría. Y encima, comercialmente es un juego peligroso: Si le doy a los usuarios de WinXP la posibilidad de bajarse los mismos programas de WinVista, ¿qué argumento tienen para convencerlos de migrar (y pagar)? Y MS vive de la venta de nuevas licencias de WinVista, no de la cara feliz de un usuario de WinXP (que ya pagó...) al instalar gratis MSIE7.

En fin. El tema da para largo. Basta por hoy. La conclusión de este largo artículo (que empezó siendo una cosa, y terminó otra, y quizás quedó un tanto mezclado...), es que si bien MS tiene cuerda para rato, si no hace algo por AGILIZAR su proceso de desarrollo, y tirar un poco de lastre, en el futuro va a tener cada vez más problemas. Como mínimo en el segmento hogareño.

Sudoku y actualización GNOME

Ayer me bajé una versión del juego geek de moda, Sudoku, para GNOME. Es... ¡adictivo! A full. Estuve jugando con los niveles más fáciles (los que de entrada proporcionan más givens, y el modulito de IA del juego que genera los patrones necesitó menos iteraciones para resolverlo), y así y todo cada partida me entretuvo un buen rato.

Muy interesante. Es un juego de lógica, y cada patrón (partida) tiene una única solución. Las reglas son muy sencillas.

Hablando de GNOME, ayer actualicé mi instalación de Fedora Core 4 a GNOME 2.12. FC4 había salido con GNOME 2.10. Como el ciclo de desarrollo de FC5 se hizo de 9 meses, se perdió el sincronismo con GNOME, y la versión 2.12 pasó de largo. Ya tomé la decisión que en mi próxima actualización de Linux me paso a Ubuntu (ya habrá más comentarios al respecto...), pero resulta que el lanzamiento de Ubuntu 6.04, "Dapper Drake", se está demorando también 6 semanas.

¿Entonces? Entonces que voy a tener que postergar la actualización de Linux para la vuelta de las vacaciones. Así que mientras tanto, peor es nada, me actualizo a una versión de GNOME más nueva. Los paquetes que usé para la actualización no son del todo oficiales, pero son de un repositorio que ya había estado usando sin problemas para instalar algunas cosas más bleedin' edge en Fedora. Y hasta ahora, todo parece funcionar bien.

Para terminar, compilé las últimas versiones de Beagle y Deskbar-applet (las versiones precompiladas que tenía en nrpm no eran las últimas, y a mí me interesaban particularmente los últimos fixes en el uso de memoria). ¡Excelente! Me bajé la Google API, me generé una licencia, e incluso ahora puedo buscar en Google desde deskbar-applet, sin abrir el navegador. Deskbar-applet también tiene un plugin que permite buscar dentro de todos los engines configurados en la barra de búsqueda de Firefox, y hasta encontré e instalé uno que busca dentro de mis bookmarks en del.icio.us.

Es impresionante todo el laburo de uso de tags, indexación y búsqueda integrada que se estuvo haciendo en GNOME en los últimos meses. Con la versión 2.14, ya es posible ponerle cualquier tag arbitrario a cualquier archivo con Nautilus, y junto con este, hay varias aplicaciones que se modificaron para que se les pueda cambiar el backend de búsqueda (en lugar de usar el suyo propio), y ahora pueden usasr Beagle. GNOME 2.14 tiene muchos cambios interesantes... a la vuelta de las vacaciones, los probaremos.

Novell presentó XGL y Compiz

¿Quieren ver como el próximo Novell Linux Desktop (y Linux en general) no va a tener nada que envidiarle en lo que respecta a la interfaz gráfica a otros sistemas operativos que hasta ahora llevaban bastante ventaja? E incluso a versiones "por salir" de otros sistemas operativos... si es que algún día salen... jeje.

Entren acá y bajen el video en el link que dice "Download the new XGL Video". Mírenlo (aviso que es pesado (casi 60Mb), y dura como 12').

Algunos puntos notables:

  • Eso no es una "demo". No es un prototipo hecho con flash. No es una promesa. Existe. Ahora. Y funciona.
  • Para hacerlo andar, no necesitás el super hardware. Mientras tu placa de video tenga drivers OpenGL para Linux, ya está.
  • Esto no es exclusivo de Novell y SUSE. Tanto el nuevo XServer (XGL) como el nuevo compositor son tecnologías Open Source, que Novell desarrolló in-house, pero que ahora están disponibles públicamente en Freedesktop.ORG. A partir de ahora, todas las demás distros van a poder usar esta tecnología, y colaborar en ella, mejorándola.
  • Es una tecnología extensible, para la que se pueden escribir plug-ins que permiten aprovecharla en diferentes escenarios.

Se puede decir que muchos de los efectos son innecesarios, y no agregan nada de funcionalidad. Pero (tal como hoy me comentaba Facundo en un mail), es una cuestión de poder. Hay un segmento del mercado bastante importante al que esos chiches visuales le interesan. Mucho. Y a Linux hasta ahora le costaba penetrar en ese segmento.

Por otro lado, fíjense como ya hay varios efectos más que interesantes (algunos exclusivos, no vistos hasta ahora, ni siquiera en MacOS), que le dan una vuelta de tuerca a la usabilidad. Es una tecnología que abre puertas, que abre un abanico de posibilidades que hasta ahora eran inimaginables, porque no existía una base sobre la cual apoyarse.

Ahora sí, no solo que esa base está, sino que nos eleva el punto de vista, ampliándonos el horizonte.

Y ya que estamos, un año antes escribía: ¡30 pirulos!

SiGeFi otra vez...

Después de varios meses, hoy hice otra vez un par de commits en sigefi. Tras haber estado hiper-activamente involucrado en el proyecto desde su inicio, y durante todo el desarrollo del core de la aplicación, resultó que las múltiples complicaciones inútiles de wxWidgets (el toolkit que elegimos para desarrollar la interfaz gráfica) terminaron inclinando la balanza para el otro lado: de pronto era mayor el tiempo que perdíamos luchando contra una estupidez, que el tiempo que invertíamos logrando un resultado CONCRETO, visible, en la aplicación.

Mi historia con wxWidgets es larga, y quizás algún día escriba sobre ella, no lo sé. La cuestión es que Facundo quedó virtualmente solo en el desarrollo, porque yo nunca más junté motivación suficiente para tocar una sola línea de código. El core estaba hecho, y básicamente todo el trabajo se limitaba a pelear con wxWidgets.

Por suerte, Facundo tiene mucha más paciencia que yo, y el proyecto siguió adelante.

Ahora que la GUI está más madura, otra vez empiezan a aparecer oportunidades de hacer cosas divertidas (al menos, divertidas para mí). y entre ayer y hoy, romí el hielo arreglando dos pequeñísimos bugs, retocando un detalle mínimo de la configuración, y... [trompetas] ¡hasta volví a bucear por la documentación de wxWidgets! ¡y logré hacer lo que yo quería!

Como siempre pasa con wxWidgets, perdí 3hs tratando de encontrar como hacer lo que yo quería. Tres horas. Tres preciosas horas. Lo que yo quería hacer, se resolvía con UNA miserable línea de código. Pero wxWidgets tiene esas cosas: Al menos que ya seas un experto en el toolkit, pareciera que la idea de sus desarrolladores es que pierdas tu tiempo buscando en Google, en lugar de desarrollando. En fin.

Nada. Una mínima contribución a SiGeFi otra vez. Espero ir recuperando la motivación, como para contribuir más seguido.