Wednesday 29 April 2009

Linux is NOT Windows

Estaba boludeando el otro día en slashdot, y de alguna manera terminé en una página en la que había un artículo que trataba ese mismo tema: Linux NO es Windows.

Parece algo estúpido decir esto, ya que parece obvio, ¿no? No. No es para nada obvio, al menos no para los usuarios de Windows que deciden probar este sistema libre del que tanto habla el mundo (tal vez cansados de la lentitud, inestabilidad, falta de robustez, etc.) y piensan que Linux es 'una versión libre, más segura de Windows.' Los que creen eso tienen un solo destino: a los meses aman Windows nuevamente y odian Linux.

La gente que espera que Linux sea una versión mejorada (pero igual) de Windows obviamente no está usando mucho la cabeza: es lógicamente imposible que algo sea mejor e igual. Si esperás que sea mejor, estás esperando que sea diferente, no hay vuelta atrás. Y más si entendés que la mayoría de los problemas de Windows son de diseño (las cosas están mal ideadas en un primer lugar), la única manera de mejorarlas es cambiar el diseño, ergo: tenés un sistema que es ya en planeamiento distinto, imaginate en implementación.
Sin embargo la diferencia no implica menor calidad: ejemplo claro es el Firefox. Es hoy el browser más respetado en el planeta, probablemente el más seguro, y el que menos falla. ¿Llegó a eso imitando y pareciendose al Internet Explorer? En absoluto. Son sus diferencias lo que lo hacen mejor. Pero para usarlo, hay que acostumbrarse a esas mismas diferencias (hay gente que todavía usa IE por increíble que suene).

Después está el tema de las opciones. Yo alguna vez la dije a un amigo: no, vos no sabés lo que significa 'opciones' si usás un sistema comercial (Win/Mac.) Puede sonar asqueroso, pero es la realidad. ¿Cuántas versiones de Windows hay? Una, o cinco, o tal vez dos, no estoy seguro. ¿Cuántas 'distros' de Linux hay? Más de mil[1]. Y así con todo, un distro promedio te viene con al menos 3 browsers web gráficos: Firefox, algún otro Mozilla (SeaMonkey) y el nativo del GUI que uses (Konqueror, Epiphany, etc.) Y algun browser de shell (consola), como el Lynx. Obviamente un usuario promedio instala algún otro (Opera en mi caso.) La distro Slackware trae 4 visualizadores PS/PDF, Windows ninguno (hay que instalar el Acrobat, que ni se compara al KPDF o al Okular.) Todos los Linux (que prové) vienen con al menos una suite ofimática (OpenOffice y KOffice las dos que uso), Windows no trae (tenés que instalarlo aparte.) Slackware trae 3 reproductores de video y audio, y 4 de audio, con casi cualquier codec que puedas necesitar jamás. Slackware también trae más de 5 GUIs (KDE, Xfce, Fluxbox, Blackbox, twm y otras que nunca usé), esto significa que dos usuarios del mismo sistema, en la misma computadora pueden tener dos cuentas completamente diferentes a la vista[2]. Y esto viene con la instalación del sistema 'base'. Todo esto se puede ampliar.
Pero la principal diferencia en las opciones se nota en la configuración. Los usuarios de Windows NO SABEN lo que es tener un GUI realmente 'toqueteable.' TODO lo que se ve puede cambiar (en KDE al menos). La 'barra' puede estar en cualquier lado, puede haber una o 4 (o ninguna), podés elegir qué applets y sub-barras tiene cada una, así como qué menús y cómo acomodarlos. Las barras de tareas en KDE son totalmente libres (pueden estar en cualquier posición de la ventana, así como despegadas), y podés elegir qué poner en cada una. TODO es configurable.
Y estos dos puntos resultan en un problema: "¿Por qué en Linux hay TANTAS opciones?" Ahora resulta que el exceso de opciones es malo. Pero ése el punto: son opciones, no tenés que usarlas si no querés. Nadie te obliga a perderte en ellas. Creo que el problema es el miedo. Mucha gente se asusta cuando hay mucho para elegir, que debe ser un instinto animal muy primitivo.

El otro punto que resalta el tipo es la cultura. Linux tiene una cultura, Windows no (o si existe es imperceptible.) Los usuarios de Windows están en una relación del tipo cliente-proveedor (aunque a veces no se note), mientras que los usuarios de Linux están más bien en un ambiente hippies-hackers. Es una comunidad, que no tiene ningún tipo de obligación hacia los usuarios (que NO SON clientes), y por lo tanto no se les puede exigir nada. Además, ¿a quién le vas a exigir? Si Linux es tanto tuyo como de todos los demás...
Después está el tema de "diseñado por el diseñador". En un ambiente corporativo, el software se hace para otra gente (clientes). Eso significa que: 1. el software tiene que bancarle el uso ajeno, de alguien que no tiene idea cómo funciona, y 2. al no ser para "ellos" tienen otro concepto de lo aceptable (puede que lo hagan bien por prestigio y nombre, o más seguido que lo hagan así nomás para no atrasarse con las ventas, total después sacan 23 patchs). En un ambiente de software libre, el que hace software lo hace para usarlo (el 90% del desarrollo empieza por necesidad propia). Entonces, como el programador sabe cómo funciona todo, puede que no le interese demasiado facilitar las cosas. Pero esto tiene un lado positivo, si el software no es comercial, al desarrollador no le interesa las ventas, ni se tiene que apurar para un lanzamiento publicitado. Además, al ser el mismo programador un usuario final él es también 'cliente' (como vos) y entiende tus necesidades.

Pero la principal barrera para los nuevos usuarios es el tema del 'user-friendly' (amistoso, algo que se lleva bien con el usuario inexperto), que no es más que un gran mito. El ejemplo que se ve en el artículo es el del Vi (un tremendo editor de texto). Acá se hace evidente que este término está horriblemente mal aplicado, ya que estamos confundiéndolo con la palabra 'familiar'. Prueba: Hagamos de cuenta que queremos cortar cinco palabras de un texto, primero lo hacemos con un procesador de texto que todos conocemos (amistoso) y después con vi (no-amistoso.) El 'método fácil' es, desde el principio de la primera palabra:
Ctrl+Shift+Derecha
Ctrl+Shift+Derecha
Ctrl+Shift+Derecha
Ctrl+Shift+Derecha
Ctrl+Shift+Derecha
Ctrl+X
Fácil, ¿no? El 'difícil', con vi, es:
d
5
w
Listo. OK, es verdad que con vi usás tres teclas, y con el Word usás como 30, pero nadie sabrá que 'd5w' hace eso, no es evidente... Ah, ¿no? Explico: (d)elete (borrar), 5 (número cinco), (w)ords (palabras). En cambio, si me preguntan de una, cómo asocio 'cortar cinco palabras' de un texto con las teclas Control, Shift y X... ni idea. Vi no es sólo más rápido, sino más lógico, tiene sentido. El problema es que la costumbre es MUCHO mas fuerte que la lógica en la gente. Ese el problema, no la 'falta de amistosidad' del software, sino la incapacidad de aprender más allá de las costumbres por parte de la gente.

Y por ahí un tema que da algo de bronca: "Linux imita a Windows". Esta es una idea que tienen los usuarios de Windows muy ignorantes y es muy erroneo. Primero, "Linux pasó de consola a entorno gráfico, como Windows". No. Linux usa el sistema de ventanas X Window (hoy también Mac lo usa de lo tremendo que es), que salió en 1984. UN AÑO ANTES que Windows. Después se dice que el cambio de Windows 3 a 95 fue importante en la evolución de los sistemas de ventanas. Mentira, todo lo que implementó Windows como "nuevo" ya lo tenía el sistema NeXTSTeP hace rato. En sí, el sistema de ventanas de Windows en un compilado de imitaciones de Apple (¿y código robado? no creo), Atari y NeXT, eso es indiscutible, entonces si algunos GUI de Linux se parecen al de Windows es porque se parecen a los otros tres. Evolución, es 'el camino'. Todos lo hacen, porque es lo indicado, no porque todos se copien.

En resumen, el flaco dice que es algo así como la diferencia entre tener un chofer y manejar el auto. A mi no me parece, porque si no sería imposible destrozar el auto, y sabemos que el auto Windows se destroza muy seguido. Yo creo que es más bien la diferencia entre manejar un auto automático y uno manual: si te gusta poder usar algo con el menor conocimiento posible, simplemente que el auto ande 'de una'[3], comprate un automático, no hay NADA más fácil. Pero si te gusta sentir la aceleración, si querés realmente 'sentir el auto' y hacerlo totalmente tuyo, necesitás un manual. (De paso gastás menos nafta.) La elección depende totalmente de la necesidad. Uno evita que conozcas demasiado el funcionamiento, el otro lo promueve, si qes que no te obliga.

Si querés un Windows, pero que ande bien, ponete las pilas y poné la billetera: no es imposible, sí difícil y caro, pero se puede. Nunca, pero NUNCA se te ocurra pensar que GNU/Linux, FreeBSD u OpenSolaris pueden 'suplantar a Windows'. Son cosas TOATALMENTE distintas. Es como suplantar un barco por un avión (qué se yo, no se me ocurre otra cosa, jajaja).
Si por otro lado, querés probar el mundo Unix*, vas a aprender un toco, y no tenés nada que perder. Si te gusta, no volvés más.

Notas:

[1] Las distros son versiones del sistema GNU/Linux (así se llama oficialmente), armadas por distintas organizaciones o personas, cada una con su set de programas específicos. Hay algunas orientadas a servidores, otras a la edición de audio y video, a los juegos, y están las pincipales (Debian, Red Hat, Slackware, SUSE, Ubuntu) que traen de todo. Definir si las versiones de Windows son distros separadas o no es difícil, ya que si bien varían algo en cuanto al objeto o categoría de software, salen de un mismo lugar y tienen la misma base (mismo kernel y eso). Además hay distros de Linux que dan una elección en el tipo de instalación similar a las opciones de Windows: Ubuntu y SUSE preguntan si querés una instalación tipo servidor (Server), workstation (Home), laptop, full (no existe en Win, jeje), etc. Si me preguntan de una, creo que hay dos versiones de Windows, la Server y la otra. Esta segunda tiene categorías por precio (Basic, Starter, Home, Pro) y por ende cantidad de software base, pero son la misma mierda.

[2] OK, lo usuarios de Windows son seguramente los que no saben qué es una interfáz gráfica, justamente porque son los únicos que SIEMPRE LA USAN. ¿Qué? No, lo que pasa es que también es verdad que no tienen opciones, en Windows hay una sola, y como el sistema está atado a usarla (no se puede NO USARLA) uno ni se entera que eso NO ES PARTE del sistema operativo en realidad. La interfáz gráfica es el segundo método de interacción entre un usuario y su computadora, el primero es el shell (consola, intérprete de comandos). Básicamente, GUI (IG) es lo que tiene Windows y DOS no. Quedó claro, ¿no? OK, en Linux no es necesario usarla (a un servidor no le sirve para nada), per si querés una, tenés un montón para elegir, por eso 'Linux no tiene un look'.

[3] Esto del out-of-the-box es un viejo mito que hoy se está invirtiendo en algunos casos. Siempre fue menos doloroso arreglar los temas de drivers e instalaciones nuevas en Windows que en cualquier sistema libre, pero hoy la cosa no es tan así. De hecho, con la laptop de mi vieja fue totalmente al revés: para Linux sólo tuve que instalar los drivers de la tarjeta GeForce (5 minutos) ya que todo lo demás anda de una, mientras que con Windows XP estuvimos 2 días probando drivers porque la mayoría no andaba. (Es verdad que la compu venía con Win Vista, pero todos sabemos que ese sistema no sirve todavía.)


Algunas imágenes de GUIs en Slackware Linux 12.2


Fluxbox, superliviano (corriendo apps de KDE!!!)


WindowMaker, con un estilo bien tradicional...


Xfce (después del KDE, mi favorito)


KDE (con Compiz) cambiando de escritorio...


KDE (con Compiz), cambiando de ventana...

Planets and Dwarf Planets

Once we were ignorant. Very. And we used the term planet. But there was no real definition for it. What was a planet?
Nobody knew.

Then we had trouble: some blokes discovered that some asteroids were MUCH larger than some of our solar system planets... so maybe they were planets? But there was a problem, they were too many. This would mean we would have to be adding planets yearly (new giant-asteroids are being discovered quite frequently) and that would turn out to be a mess.

And so the great minds of astronomy decided that we needed a proper definition, so that an actual unquestionable classification could be applied. And we might then be able to properly determine if one thing was a planet or not.
And so the term Dwarf Planet arose.

Now our system has 8 planets and an ever-increasing number of dwarf planets. Our current state is:

One sun: Sol (Which is Spanish/Portuguese por sun, but that's its name actually, very original.)
Four 'terrestial' Planets": Mercury, Venus, Earth and Mars (small solid ones).
The Asteroid Belt, in which there is a Dwarf Planet: Ceres.
The 'gas' Planets: Jupiter, Saturn, Uranus and Neptune (massive not-so-solid ones).
The Kuiper Belt with more Dwarf Planets: Pluto, Haumea, Makemake and Eris.
Three more possible Dwarf Planets: Sedna, Orcus and Quaoar (these are quite distant, so nobody's quite sure...)

So, that makes one star, eight planets, 8 dwarf planets (3 still disputed) and two belts made of tiny rocks. Awesome.

That pic shows the current state (not including Sedna, Orcus and Quaoar).

Enjoy yourselves.
Cheers.

PS: So, when people ask how our system is formed, an answer could be "one star, eight planets and a bunch of dwarf planets (which are like planets, but not quite.) How many? I don't think anybody knows..." Yeah, sounds about right.

Comportamiento ovejero

Hace un tiempo mi hermana se quejaba de lo mal que andaba el MSN siempre que lo usaba: tardaba casi un minuto en mostrar el estado de los contactos, la mitad de las cosas que mandaba nunca llegaban, odia las ventanas que lanza el MSN Live... etc. Entonces yo le pregunté: ¿si te jode tanto, para qué lo usás? Hay muchos sistemas de mensajerías, casi todos mejores. Ella respondió: es lo que usan todos. La pregunta es ¿quién es todos?

Realmente no tengo número concretos (yo, al menos), pero de acuerdo a las últimas mediciones los servicios más usados (por números de usuarios totales y promedio de usuarios concurrentes) son: QQ, Skype, AOL, MSN, Yahoo e ICQ. En ese orden. ¿QQ, y eso? Es el servicio que domina (por buen margen) en China. Ah, eso lo explica. Skype pasa los 350 millones de usuarios y tiene picos realmente altos ─en este momento hay más de 10 millones conectados, y es una hora 'baja', se duplica fácilmente. AOL domina en Estados Unidos, aunque sin tanto robo (siguen Yahoo y MSN pegaditos entre ellos). MSN y Yahoo, en general, dominan en mercados menos apetecibles: MSN en Argentina, Yahoo en Indonesia. ICQ reinó por mucho tiempo, pero decayó muchísimo en una década.
Y todo esto sin considerar al 'Linux' entre los mensajeros, JABBER. Le dicen así por una razón simple: al igual que con el sistema operativo ese, es prácticamente imposible estimar cuántos usuarios hay porque es libre, abierto y descentralizado. Yo puedo poner un servidor Jabber en mi casa y proveer el servicio de mensajería a quien quiera, sin decirle nada a nadie. Se calcula que hay al menos 20 millones... ¿y cómo máximo? ¿200 millones? Andá a saber...

O sea, todo depende. MSN es el que 'usa todo el mundo' en Argentina. Es perfectamente comprensible que ella lo use, lo usan sus amigos, etc. [1]. Mi pregunta es... ¿por qué se genera esto? Parece que mientras más atrasado (en el tema de la informática por lo menos), mayor es la tendencia hacia el comportamiento ovejero. Alemania, Japón y Estados Unidos (tres países vanguardistas en todo tema teconológico) tienen usos más repartidos: en Alemania ICQ no alcanza el 50% y le saca menos de 20% a MSN, en Japón MSN anda por el 38% y Yahoo lo sigue con 33% (Google Talk ronda los 30% también) y en Estados Unidos AOL tampoco llega a al 40%, seguido por Yahoo y MSN cerca del 30%. En el otro extremo, el trío Argentina-Brasil-México tiene a MSN entre el 70-80%, el trío India-Indonesia-Arabia Saudí tienen a Yahoo entre el 60-70%, Rusia y Polonia con un 60% ICQeros y China con casi 70% QQeros.

Se ve algún tipo de padrón, ¿no? Los de adelante (digamos) no tienen casi favorito... mientras que Latinoamérica es claramente pro-MSN, Asia pro-Yahoo y Europa oriental pro-ICQ (aunque Odigo y Gadu Gadu pegan duro también.) La clave acá es obviamente la información, o más bien la falta de ella, la ignorancia. Con eso juegan (y ganan) las marcas que dominan algún lugar. Y ganan ellos, y pierde la gente: yo me veo obligado a usar MSN porque en mi familia se NIEGAN a usar otra cosa. A pesar de lo mucho que putean el servicio. Y yo ODIO que me transmitan los problemas [2].
El punto es que me tienen las bolas llenas con el comportamiento de ovejas. ¿Por qué nadie elije nada? La gente ve un programa de televisión... porque los demás lo ven. Va al cine, porque los demás van al cine. ¿Nadie hace algo por simple placer o ganas? Hasta el gusto es gravitante, sino miren el puntaje que le dieron a El Padrino en IMDB... ¡ridículo! ¡¿Esa es la mejor película que vieron?!

En fin. Las bolas llenas.

[1] Este es un pensamiento pelotudo, por varias razones. Primero, nadie te obliga a que uses ese, ni están tus amigos obligados a hacerlo. Segundo, nadie te obliga a usar UN SOLO servicio, podés tener Jabber, Yahoo, MSN, AOL y Skype a la vez, no es ilegal (aunque capáz que viole alguna licencia, jajaja). Y si no te gusta que tu compu sude por tener 4-5 programas pesaditos (los últimos 4 lo son), usá un cliente multi-protocolo en donde puedas tener todos los contactos juntos y listo ─de hecho el Kopete (Jabber+Yahoo+MSN+ICQ), usa un tercio de memoria que el Skype solito...

[2] Puede que no lo sepan, pero yo volví a odiar Windows. La teoría es simple: odiás Windows → usás Windows. Nadie lo puede odiar a menos que lo use. Hay gente que lo odia porque odia a la compañía que lo hace (qué pavada...) como alguna forma de odio transitivo, pero eso no es odio real. Al estar años sin usarlo realmente (no por más de 1 hora consecutiva, ni más de 1 vez por semana) dejé de odiarlo. Hasta que se me ocurrió conectar las computadoras, para usar la Slackware como router+firewall... Todo joya. Después dije: ¿por qué no poner un SMB/CIFS share? Buena idea... no, mala idea. Ahora Windows se comporta de manera MUY extraña con las redes. Chau LAN. Una pija... (Y ni hablar de las tremendas limitaciones del XP Home para redes... una mierda.)

Otro caso de 'seelcción gravitatoria' aunque fuera de tema: el 'share' de sistemas operativos usados por la gente normal (sacando servidores y demás) es (supuestamente): 90% Windows, 8% Macintosh, 1% Linux y 1% otros. Es algo casi creíble (aunque los métodos de conteo son cualquiera), pero sí resulta algo raro en algunos casos específicos. Cómo la info de downloads por sistema de la página de SplashDamage del juego Wolfenstein: Enemy Territory. La cantidad de veces que se bajó cada versión fue: Windows 305 mil veces, Mac 18 mil veces y Linux 68 mil veces... ¿Qué pasó ahí? Eso da un 78% Windows, 5% Mac y 17% Linux. Los índices de bajadas/porcentaje de usuarios son: 3.4 Win, 2.3 Mac, 68.0 Linux!!!! Lo curioso de esto es que se supone que los 'gamers' usan Windows (o Mac, nunca Linux). O sea que acá hay algo raro, o contamos mál y el share de OSs está mal, o los usuarios pingüinoides tienen un terrible fetiche con el WET (mi suposición). O tal vez los usuarios de Windows y Mac están bajando binarios GNU por error... (es posible, jajajaja.)

Thursday 9 April 2009

LAME + pipe + Vorbis


¿Qué es un pipe?

No tengo idea cómo definirlo. Pero puedo intentar explicarlo, más o menos...
Es algo así como un tubo (tubería, como su nombre indica) que permite la transferencia directa de streams, desde un proceso a otro. O sea, podemos agarrar un archivo, y pasarlo por 10 programas, hasta finalmente terminar con otro (convertido, comprimido, encriptado, codificado, lo que sea)... pero sin crear ninguno intermedio. Asa! Roughly speaking.

De una forma más normal... si nosotros somos procesos/programas, y las cosas son archivos, es algo así como pasarnos las cosas, sin apoyarlas en ningún lado. Para darme un billete, no es necesario que alguien lo apoye en la mesa, para yo poder agarrarlo: la persona me lo puede dar directamente!
Este es más o menos el concepto.

Razones para su uso? Velocidad. Espacio. La escritura y lectura en disco es varias veces más lenta que en memoria, y a veces los archivos pueden llegar a tamaños importantes... ¿no? Evitar la creación de monstruosidades temporarias es una solución elegante.

¿Por qué pensé en esto? Resulta que no me llevo demasiado bien con los MP3s. Es tecnología del pasado, tiene casi 20 años, y ya es hora de usar cosas mejores... ¿O acaso alguien sigue usando AVIs? Por favor... El problema es que tengo varios archivos en ese formato, y los quería convertir (si los paso a Vorbis, me puedo ahorrar un poco de espacio para la misma calidad, además de las otras ventajas de OGG.)

El chiste era algo así: bajar el AVR (Average BitRate = BitRate Promedio) en un 10-15% al convertirlos. ¿El problema? Eran muchos. Convertir archivo por archivo es una locura.
Hay otra manera: bash scripting. OK, en realidad, zsh scripting. (Acabo de cambiar de shell, por recomendación de... miles de personas. No tengo nada en contra de Bash, con él aprendí que los shells pueden ser mucho más flexibles y rápidos que los GUIs, pero realmente el zsh parece impresionante, NO podría NO probarlo.)

Necesidades: LAME (para decodificar los MP3s), vorbis-tools (para codificar a Vorbis) y algún shell copado (zsh/bash/csh/kornsh/etc.) que se banque un RENAME.

El comando debería:
1. Recorrer cíclicamente los archivos: ciclo for.
2. Decodificar mp3 al stdout (stream de salida, en lugar de un archivo.)
3. Pasar el stdout de LAME al stdin (stream de entrada) del OggEnc.
4. Codificar a un archivo Vorbis (direccionando el stdout del OggEnc.)

Comando:
for x in *.mp3; do lame --decode "$x" - | oggenc - > "${x}.ogg"; done
Listo. Una papa.

OK, explico un poco.
x es una variable (la declaración en bash es innecesaria), que agarrará el nombre de cada archivo que cumpla con *.mp3 (todos los mp3 en el directorio), secuencialmente (de a uno y no todos a la vez).
Al archivo cuyo nombre='valor de x', lo decodificamos a wav (lame --decode "$x"), pero sin escribirlo al disco, sino que lo mandamos al stdout (salida del shell, que marcamos con el '-').
El carácter del pipe '|' indica que enganchamos procesos, o sea que si bien le dijimos a LAME que mande el resultado al shell, no queremos que lo muestre en él (que resultaría en la impresión de caracteres raros), sino que otro proceso va a usar eso.
Y convertimos ese wav (que aún se está CREANDO en memoria) a un ogg vorbis (oggenc - > "${x}.ogg"). El '>' parece estar de más, pero hay que tener en cuenta que el oggenc, al recibir un archivo como stream de entrada (en lugar de agarrarlo de disco) sin nombre, lo larga como stream de salida. Eso nos sirve para enganchar OTRO proceso, pero en este caso queremos escribirlo al disco, por eso marcamos la salida a un tal 'valor de x'.ogg.

Esto resulta en una conversión de cada archivo.mp3 a un archivo.mp3.ogg dentro del directorio en el que corremos tal comando.

Pero esto se quedaba corto, porque yo quería mantener los bitrates como expliqué anteriormente, bajandolos un poco...
Con los shells todo se puede...

Pasos a seguir:
1. Creamos directorios cuyos nombres son el bitrate promedio que queremos en los archivos resultantes (vorbis).
2. Movemos los mp3 a los directorios correspondientes (si quiero que uno quede con bitrate-promedio de 192 lo muevo al directorio 192/, si lo quiero con 256 lo muevo a 256/, etc.)
3. Nos paramos afuera de los directorios con los bitrates deseados... Es decir que al tirar un 'ls' nos tiene que salir una lista de directorios tipo: 128/ 192/ 256/...
4. Corremos el siguiente comando:

for ABR in *; do cd "$ABR"; for FILE in *.mp3; do lame --decode "$FILE" - | oggenc -b "$ABR" - > "${FILE}.ogg"; rm "$FILE"; done; rename "mp3." "" *; cd ..; done

Listo.
Para explicarlo un poco, mejor lo pongo indentado (aunque creo que acá no sale indentado, pero al menos sale separado por líneas, sino es un bardo):

for ABR in *
do
cd "$ABR"
for FILE in *.mp3
do
lame --decode "$FILE" - | oggenc -b "$ABR" - > "${FILE}.ogg"
rm "$FILE"
done
rename "mp3." "" *
cd ..
done

Análisis línea por línea:
for ABR in *: tomamos el nombre de cada directorio acá y lo guardamos en la variable ABR
do: empezamos el ciclo marcado por el primer for (este corre UNA VEZ por CADA valor de ABR, es decir una vez por directorio)
cd "$ABR": entramos al directorio cuyo nombre=valor de ABR ("$x" significa 'valor de x')
for FILE in *.mp3: tomamos el nombre de cada archivo mp3 y lo guardamos en la variable FILE
do: empezamos el ciclo marcado por el segundo for (anidado), que corre una vez por archivo
lame --decode "$FILE" - | oggenc -b "$ABR" - > "${FILE}.ogg": pasamos de mp3 a un vorbis con el bitrate promedio (nominal) que indica la variable ABR (nombre del directorio=bitrate deseado), con nombre igual al archivo de la variable FILE más la extensión .ogg (ej: 'perrito caliente.mp3.ogg')
rm "$FILE": borramos el mp3 original (esto es opcional)
done: cerramos el segundo ciclo for
rename: ".mp3" "" *.ogg: le sacamos la extensión .mp3 a todos los vorbis (ahora: 'perrito caliente.ogg', también opcional)
cd ..: salimos del directorio corriente (volvemos al general, donde están los directorios-bitrates)
done: cerramos el primer ciclo for.

Y eso es todo amigos... los comandos los pueden copiar literalmente.
Sino los pueden copiar a un script (lame2ogg.sh), lo ponen como ejecutable (chmod a+x lame2ogg.sh) y lo corren desde el directorio general (./lame2ogg.sh).
Suerte!!!!!!!!!!

PS: Obviamente esto demuestra que usar pipes es más rápido que hacerlo en pasos (convertir a wav primero, después convertir los wavs guardados a vorbis) porque, debido a que hacemos una decodificación + codificación al vuelo, en hacer todo el proceso tardamos tiempo_total = decodificación_de_1er_mp3 + codificación_total_a_vorbis, mientras que hacerlo en pasos daría un tiempo_total = decodificación_total_de_mp3 + codificación_total_vorbis. Convirtiendo decenas de archivos son MUCHOS minutos de diferencia.