‘ General ’ category archive

Amarok, Songbird y modelos de desarrollo

2008-Jul-30

Estaba investigando cómo instalar Amarok en MacOs, pero finalmente no hizo falta, pues encontré (mejor dicho, re-descubrí) Songbird. Es gratis, hay versiones para MacOs, Linux y Windows. Además de una interfaz pulida, Songbird, como Amarok, permite extensiones (por ejemplo, el LyricsPlugin, como el que hay para Winamp o para Windows Media Player, y similar al que mostraba en el post anterior sobre Amarok). Y Songbird, al igual que Amarok, respeta mi estructura de directorio: no se empeña en mover las canciones a “su” carpeta. Recomendado.

songbird.png

Cuál es el problema que quieres resolver

El post podría terminar con la foto de arriba, pero quería hacer unas consideraciones sobre dos enfoques distintos en el desarrollo de software.

Tanto Amarok como Songbird se proponen objetivos parecidos: ser una alternativa a los media players tradicionales, proporcionando una buena experiencia de uso. De sus respectivos websites:

  • Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it
  • Songbird is a highly customizable alternative to traditional desktop media players

La version 1.x de Amarok para Linux cumple bien este objetivo. Basta seleccionar Amarok en el instalador de paquetes para que Linux descargue Amarok y lo instale. Y funciona bien.

Desde hace algún tiempo el equipo de desarrollo de Amarok viene anunciando la versión 2.0, que correría también en MacOs (ver el wiki) y en Windows. Sin embargo, ahora que la versión 2.0 está en Alpha (es decir, se puede instalar, pero todavía tiene bastante por pulir), empiezan a decir que las versiones de MacOs y Windows no son una prioridad, porque la mayoría de sus desarrolladores trabajan con software libre. ¿Y antes no era así?

También están los cambios que se introducen en la versión 2.0 de Amarok. El FAQ explica sin empacho que no funcionarán los antiguos scripts (las extensiones); que lo más seguro es que los usuarios de la versión 1.x pierdan sus playlists y los ranking de las canciones… salvo que uno de sus desarrolladores logre terminar un programa para convertirlos. Y, lo siento, se podrán ver videos pero no habrá un manejador de video propiamente. Los videos serán un archivo más (¿sólo que sin ranking, etc.?).

Si la idea de Amarok es una mejor experiencia para el usuario, ¿por qué romper con todo lo anterior? Si el formato interno de los playlists y ranking cambia, ¿no sería una característica importante que Amarok 2.0 reconozca sin ninguna falla, de modo transparente para el usuario, los de la versión 1.x? No, lo que nos dicen es que un desarrollador está haciendo algo en esa línea, quizá lo incluyan, quizá no.

Mi diagnóstico es que el equipo de Amarok ha perdido de vista qué necesidad resuelve su programa. Están tan preocupados de que funcionen sus unhidden biases, que no se dan cuenta que la versión 2.0 quizá resuelva menos necesidades que la versión 1.x.

Songbird y Los Pioneros de lo Inevitable

Veamos el modelo de Songbird. Para comenzar, vale la pena darle una mirada al About Us de Songbird (click en la foto) y en general a la página. Con ver las oficinas ya me caen bien estos señores. Además del look profesional de la página, tienen “algo” de experiencia en desarrollo de software y productos terminados (entre otros, Winamp y el Yahoo! Music Engine.

Songbird's nest

Songbird ni siquiera está en la versión 1.0, y ya ofrece instaladores para Linux, MacOs y Windows. Las tres distribuciones están siempre disponibles. Las tres funcionan. Las tres usan las mismas extensiones. Las nuevas versiones no destruyen tus playlists, ni malogran tus rankings.

Por supuesto, quizá no puedo conectar Songbird a un servidor PosgreSQL… pero ¿hace falta?

Songbird tiene dos websites distintos: uno para los usuarios finales, otro para desarrolladores. Cada página tiene su propio enfoque, porque pretende resolver distintas necesidades. Si lo que te interesa es hackear un poco (que me parece es lo que les intersa a los desarrolladores de Amarok), o colaborar con el proyecto, la página de desarrollo de Songbird tiene tutorials, documentación de los APIs, explica cómo desarrollar extensiones… tienes un website que resuelve eso sin complicar a los demás usuarios, la gran mayoría.

Amarok, en cambio, empieza ofreciendo una página para usuarios finales, pero termina siendo una página para desarrolladores… esperemos que no pase lo mismo con la versión 2.0 de Amarok.

Como encontrar el libro más barato

2008-Jul-05

Me topé con BookBurro, una extensión para Firefox que compara automáticamente precios de libros de distintas librerías. El funcionamiento es muy sencillo: busca un libro en Amazon, por ejemplo, y BookBurro busca los precios del libro en otras tiendas, para que uno pueda comparar.

Tiene otra funcionalidad, que aquí en Perú no sirve de mucho (por lo menos todavía): BookBurro nos dice en qué bibliotecas se puede encontrar el libro y, si le hemos dicho dónde estamos ubicados, las ordena de más cerca a más lejos.

Se puede descargar de la página de BookBurro.

winload.exe is missing or corrupted…

2008-Jul-04

Hace unas semanas cambié el disco duro de la laptop por uno más grande. Como no estaba dispuesto a instalar todo el Windows Vista ni tampoco el Linux de la otra partición desde cero, lo que hice fue copiar las particiones de un disco a otro, y luego instalar el disco nuevo. Sin embargo, cuando reinicié la laptop, aparecía en la pantalla el horrible mensaje: winload.exe is missing or corrupted.

En realidad, no ha ocurrido nada malo, ni hay nada “corrupto”. Es una mala broma de Windows.

Una mejor forma

Quizá hubiera sido mejor usar CloneZilla o Norton Ghost para duplicar los discos. Estos programas sacan copia exacta del disco. Pero como no tenía el Ghost, y para usar Clonezilla necesitaba unos cincuentaitantos gigas en algún sitio para crear la imagen del disco duro de la laptop… simplemente conecté el disco nuevo via USB a la laptop, y usé GParted[1] para copiar las particiones de Windows y Linux de un disco a otro.

winload.exe is missing or corrupted

El problema es que GParted no copia la tabla de particiones del disco original, sino que crea una nueva tabla y luego copia. Después de buscar un poco en Google, gracias a Hazard’s Stuff descubrí que lo único que quiere decir Windows con ese mensaje es que el número de serie del disco duro ha cambiado, y que por eso se niega a funcionar.

La entrada en Wikipedia sobre el sector de carga (MBR)/en español[2] explica que en el offset $1B8 del primero sector del disco duro hay un número entero de 4 bytes que es la firma del disco, un número de serie. Es un campo opcional, pero cuando se crea la tabla de particiones por primera vez el programa escribe allí un número. (No me he detenido a averiguar cómo lo genera.)

Si Windows descubre que este número ha cambiado, muestra el famoso mensaje, winload.exe is missing or corrupted y se niega a seguir. Menos mal, como este numerito realmente no sirve para nada, basta reemplazarlo por el número del disco viejo para que Windows funcione.

El procedimiento que usé seguro que no es el más amigable. Pero igual lo recojo, porque funciona. Si a alguno se le ocurre algo más amigable (aparte de usar el disco de instalación de Windows para corregir el problema), bienvenidas sean las sugerencias.

Cambiar el número de serie del disco duro

Antes de seguir, advierto que este procedimiento, si sale mal, puede hacer que se pierda toda la información del disco. Tampoco sé si esto viola de algún modo la licencia de Windows.

  • Arrancamos la laptop desde un Live CD con Linux. Conectamos el disco antiguo a través del cable USB. En mi caso, /dev/sda es el disco nuevo, y /dev/sdb el disco antiguo.
    En un terminal:
  • Instalamos hexedit, un programa muy liviano que nos permitirá editar el contenido del archivo en formato hex.

    $ sudo apt-get install hexedit
  • Copiamos el MBR (el sector 0) del disco nuevo al archivo mbr.bin

    $ sudo dd if=/dev/sda of=mbr.bin bs=512 count=1
  • Copiamos el MBR del disco viejo al archivo mbr_old.bin

    $ sudo dd if=/dev/sdb of=mbr_old.bin bs=512 count=1
  • Abrimos el MBR del disco antiguo con hexedit ($ hexedit mbr_old.bin) y tomamos nota en un papel de los 4 bytes en la posición $1B8 del archivo. Estos cuatro bytes son la firma del disco duro antiguo. Por ejemplo, A0 00 A1 00.
  • Salimos de hexedit, y ahora abrimos el MBR del disco nuevo, también usando hexedit ($ sudo hexedit mbr.bin). Vamos al offset $1B8. La firma de este disco es E1 F5 63 EC, la reemplazamos por la del disco viejo (A0 00 A1 00) y guardamos el archivo.
  • Reescribimos el MBR modificado al disco nuevo:

    $ sudo dd if=mbr.bin of=/dev/sda bs=512 count=1
  • Listo, reiniciamos la PC. Windows debe cargar sin problemas.

Algunas aclaraciones

  • El procedimiento que seguí es un poco distinto al que he descrito. Lo primero que hice fue reinstalar GRUB, el boot loader de Ubuntu, en el sector 0, de modo que pudiera cargar Linux en la portátil. La modificación del sector de carga no la hice desde el Live CD, sino desde Linux instalado en la portátil.
  • Estoy escribiendo los números en hexadecimal con un $ por delante: por ejemplo, $1B8 en vez de 0×1B8 o 1B8h. Costumbres de la época de la Apple IIe… call -151.

Notas:
[1] GParted es una especie de Partition Magic, pero Open Source. Aunque corre en Linux, puede copiar también particiones de Windows (FAT32 y NTFS), de Mac (HFS) y otros tipos. Gracias al Live CD no hace falta instalar Linux para usarlo.

[2] El Master Boot Record (MBR) es el primer sector del disco duro. Contiene la tabla de particiones y otra información adicional. Es esencial para el arranque de la PC. Ver Wikipedia sobre el MBR/en español.