Wednesday 20 May 2009

You are not supposed to watch this!

So... today I was doing nothing much, watching TV. Or more like cruising trough the different channels, for long enough to realise that one hundred or so channels is way too much─especially since they all suck─, but somehow I found myself staring at the box during a show called Parental Control (or something of the order). And that really got me thinking: I then realised there is a great social programme underway.
In case you don't know, Parental Control is a show in which people (young ones) with partners (boyfriend/girlfriend) date other people chosen by their parents. Based on the premise that their current 'significant others' are insanely moronic, and their parents just can't stand them any longer. Thus, they somehow are persuaded into 'dating' three other insanely moronic people (but whom their parents like), and then decide whether they keep their old partner or change for a brand new model. This is called Reality TV.
Of course, it isn't. There is not one thing realistic about it─let's be honest─, and the way people show their 'characteristics' is just ludicrous. Today we had a bloke whose parents hated his girlfriend, who was one of those spit-talkers... and as you might guess, at the time she was talking to the camera, I seriously believed I could drown to death. Seriously. She also had a teddy bear, whom (yes, WHOM) she treated like a real person ─of course, many people treat pets in the same way... but that does not mean they are not stupid as well. The point is that the acting was horrible, and I mean everyone's. They just sucked at 4000W, Braun-style. And that got me to think: bad idea, terrible morals, revolting acting... who on earth would want to watch this? And the answer sprung up like a mad frog on meth: Retarded people!
Yes. The government ─yours, mine, somebody's, I haven't narrowed it down yet...─ has been, for quite some time, slowly (but steadily) introducing entertainment for mentally retarded people. In some networks, the change has been perhaps more radical, as you might notice in MTV's 'evolution' throughout the last 20 years. But the trend is there: more shows, for morons, by morons!
Of course, don't be alarmed: this does not mean you have to watch such shows! No, this only means the availability of shows for people with intelligence above a sperm cell has decreased a bit, but all for a good reason: retards have more shows to choose from! And that's democracy: the fact that retards are a minority ─I am beginning to doubt this assumption though─ does not mean their necessities should not be addressed, they must have their own shows. Think that many years ago the only entertainment they got was in the form of a circus ─or film theatre, where I suspect they now have important representatives not only in the form of actors and critics, but also producers and directors...

Anyway... Cheers to the morons on the rise!

PS: I really miss the days when the lettre M in MTV stood for Music... even if it was the cheap kind. Wait, now that I remember, I used to watch V or MuchMusic in those days...

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.

Friday 20 March 2009

BabelFish en Konqueror

Es una boludez de detalle, y no se realmente hasta que punto se puede confiar en BabelFish para hacer una traducción de este tipo[1], pero bueno, es interesante.

Y es simple... si uno abre el Konqueror en perfil web (es decir, abrís una página, o lo abrís en casos que no sea como filemanager) aparece la barra llamada Extra Toolbar, que generalmente viene cargada con boludeces como el Agente de Identificación de Browser[2] (depende de versión, distro, gustos personales, todo se cambia).



Y ahí está el botón del pez amarillo. Si lo clickeás sin estar en un site, es como clickear en un bookmark de BabelFish: te manda al site, donde ponés texto y/o la dire de un site para traducir, elegís idiomas, etc.



Si, por otro lado, estás en un site, el pez no te manda a ningún lado, sino que te muestra ese menú que se ve en la segunda imagen.
Al elegir de qué idioma queremos traducir, a cuál otro... BebelFish se encarga de traducirme el site...
Una papa.
En el ejemplo: imdb en inglés, lo pasé a ponja (no pregunten cómo quedó, no leo kanji, ni idea...)



Espero que les sirva de algo...

[1] Ha mejorado. Mucho. Cuando yo lo descubrí hace años, era un desastre, no servía para más que una palabra, si uno intentaba con oraciones simples ya fallaba horriblemente. Hoy no. Si lo mantenés simple, se equivoca poco.

[2] Más de un site te dice que el browser no está "soportado" y en muchos casos no es así (ya que Konqueror puede usar plugins externos sin problemas), por eso no siempre hace falta usar otro. Con el agente mentiroso, el site se cree que estás usando Firefox/Explorer/Opera/Safari/etc. y listo.

Monday 16 March 2009

Fresh Install with Fucked-up CD-ROM




I bet the web is full of this sort of information already, but this is only to show a more personal view, by retelling how I adressed the problem and how it worked for me.
The problem is the following:
1. I own a laptop [1].
2. Its DVD/CD-ROM is NOT reliable [2].
3. My OS (Slack11) doesn't work that well now [3].
4. My PhoenixBIOS DOES NOT recognize any removable devices (USB/FireWire) on boot, although it 'seems to say' it should.
5. Slackware 12.2 is WAY TOO AWESOME to ignore, I must have it.

What do I have to make it work?
I have a corrupt Slackware Linux 11.0 that 'does' work, but fails with audio, glibc, most compilers, and pretty much anything fun.
How did I make it work?

First, let's review the hard drive partition scheme[4], to see what I did.
My disk was thus:
hda1: swap partition for Slack (about 600 MB)
hda2: root partition (/) for Slack (about 7 GB)
hda3: home partition (/home) for Slack (about 17 GB)
hda4: free space to install Windows XP (about 15 GB)
I didn't need to change that, it seemed reasonable, so I left it as was.

Fact 1: Linux installation CDs run the kernel before anything else. This, you might not realise, is a HUGE advantage. Since once you get a nice kernel working, all media (including removable) works as well. So, what I really needed was to run the kernel from somewhere besides the faulty DVD/CD tray... such as a hard drive partition.

Step 1: As root, I made a slack12 directory on the /home partition (hda3). Basically: "mkdir /home/slack12." I then used the external DVD-RW to get the kernel and RamDisk images and copy them to my newly created directory: "mnt /dev/sr0 /media/dvd; cp /media/dvd/isolinux/initrd.img /home/slack12; cp /media/dvd/kernel/hugesmp.s/bzImage /home/slack12". Done. Those steps can be done differently, or from a GUI, but shell commands work EVERY TIME on ALL SYSTEMS, so you can copy-paste them (without the quotation marks, obviously...) The semi-colon, as you know, separates commands, you could run each at a time (I recommend that you do, actually.)

Fact 2: LILO[5] is pretty awesome (although probably GRUB is even better), because you can really tune your multi-booting with it, and launch pretty much any OS you run. But the automatic-guess script of liloconfig is not that neat. So, manual edition of the lilo.conf file is the way to go. Isn't that dangerous? No, as long as you only add entries, and don't change the ones already working. If something goes awry, however, LILO will warn you and refuse to reinstall (remaining fine.)

Step 2: As root, I opened the lilo.conf file ("vim /etc/lilo.conf", but doing so from a GUI with kate/kwrite is much easier), and added the following lines:
image = /home/slack12/bzImage
root = /dev/hda3
initrd = /home/slack12/initrd.img
label = Slack12
I do not know how important the order is, but the 'label' part simply contains the name LILO will display, you can put anything you want there.
Now we reinstall LILO: "lilo". If it works fine, it will list the boot options, marking the default one with a *:
Linux*
Slack12
Oh, if you were booting only one OS, you probably have to add these lines to lilo.conf (between the lines "# Start LILO global section" and "# End LILO global section"):
prompt
timeout = 100
Those lines will make LILO prompt you as to what OS to run, and wait $timeout/10 seconds for your choice (with timeout=100, 10 seconds.)

Fact 3: Slackware is the only distro to use a console-based installer? Probably. Is there a difference? No. Cute and easy-looking, graphical, mouse-intensive installers such as Anaconda (Red Hat, Fedora) or those on LiveDVD distros (Ubuntu) might seem easier. They only seem easier, because the options are pretty much the same. And if you CAN READ, YOU WILL get through a Slackware installation. If you can use a keyboard, you won't have major troubles. Still, there is some info you need to know for a non-typical (even weird) installation such as this one (on my oddly beaten laptop.) In fact, for this kinds of installation, you will find that the console-driven Slackware install is in fact ideal, since it offers immense flexibility.

Step 3: Rebooted. Chose Slack12 entry. Waited for kernel to load. Done.
"Enter 1 to select keyboard map:" 1 (this is what I typed, then pushed Enter).
Now we get the keyboard select option, and since my keyboard was bought in Argentina, I use a qwerty/es.map form. Just scroll down until you find it (If you type "r" and then "e" and get exactly there, no scrolling).
"Slackware login:" root (this is a no-brainer, the help tells you to do so.)
Now the system tells you a bit about partitions, I did not "cfdisk" because my partitions were fine. If you need to, cfdisk is extremely easy to use [6]. fdisk, not so much.
Then I ran "setup" which launched the Slackware installer. The program is NOT sequential, you get to choose which part of the installation to do, but if you go from top to bottom, you can't go wrong. The first entries are help and something else, ignore.
I chose "Setup swap partition". If your partitions are fine, and you have ONE swap, you'll get what I got, one choice only. I entered the name of the partition that it showed me "/dev/hda1". You are asked if you want to check the swap partition for bad blocks before activating it... not necessary if your computer is not old enough to vote.
"Select Linux installation partition". I had only one, so only one option: /dev/hda2. Chose "Quick format", as "ReiserFS".
"Other partitions". Added the "/dev/hda3" FAT32[7], mount point "/fat".

And here is the real key to the whole process... "Source media selection". Now we get to chose where to Install Slackware 12.2 from. You have many options (including ftp/http), but I chose "1. Install from a Slackware CD or DVD". Then I chose "Manual" (manually specify device or something), and then I scrolled down to "/dev/sr0" (which is the first SCSI CD/DVD drive). Piece of cake. "Slackware installation disc detected..." Thank you.

Now we get to a sequence, started by "Package series selection". By default, Slack selects all but the KDEi part, which is multi-language support for KDE. I recommend that you add that (in case you didn't know, space-bar checks an option).
You are now prompted on what specific packages you want installed, I chose (as should everyone else) FULL Installation (4.8+ GB). It is actually 5.5 GB when newly installed (which is very slim for such a killer distro.)

Then we are taken to the setup scripts. Some of them automatic, some ask for very silly and easy information. The netconfig script is quite straight-forward, but I should add something: if you have cablemodem or other DHCP-discovered service, your hostname and domain are irrelevant, anything will do. As with the rest, that script is very Enter-intensive, you seldom type anything at all.
I did not create an USB Boot Disk (no more floppy bootdisk, things got big).
I tried the LILO automatic configuration, on the MBR, it failed. Something to do with the /dev/hda3 partition, fuck it. No matter, I'll fix later. More options, like local time setting and the like. Easy, scroll-and-enter options.
Done. Exeunt the setup program. The system is installed, we should reboot.. NO!
Since LILO was not correctly installed, it will boot to... NOTHING.

So, before that, I needed to install LILO properly. The ideal form is the Expert mode, which is very easy. Yes, easy. On the prompt, once you exited the setup program:
"pkgtool"
That shows some options, similar to the installer, but not quite. I chose "Setup scripts" or something of the order... A list of scripts, most of them were run during system install (as configuration scripts). I checked "liloconfig" (space-barred it) and 'Entered', then chose "Expert mode".
"Header" (which is the first option, I'm certain), followed by a few Enters, "no UTF" (Enter, since it's default), "Slackware logo" (probably default as well), "Master Boot Record".
Now I get back to the liloconfig menu, "Linux partition", and I added the only one, "/dev/hda2".
Back to the menu. And here I realised what the problem with the automatic install was: it added the /dev/hda3 partition as a Windows partition, and there is no Windows to launch there.
I DID NOT add a Windows partition, instead I just chose "Install LILO". That worked, since I got no error messages.

And then I was done.
Rebooted.
LILO prompt, now with the Slackware logo, Linux as only option...
Like a charm. Slackware 12.2 with the wicked 2.6.27.7 kernel. And Compiz.

So, that's all.
If you had the same problem, I hope that helps.

Notes on [x]:
[1] Kind of. Since its battery has died already, the CD/DVD thingie is fucked, and the keyboard has been destroyed, and I HATE the popular mouse-like touch-screen thingie, it is pretty much a smaller desktop PC: I needs to be plugged, and it has an external DVD-RW, a keyboard and a mouse plugged at all times.
[2] That's a serious understatement. It works ONLY with a few DVDs. And not very well. It simply ignores CDs.
[3] Installing it with the 'faulty' DVD-ROM resulted in many missing packages and some more corrupted material. It works pretty much like a government.
[4] Unix* users are quite familiar with the concept, especially multi-distro-Freenixers (such as myself.) It isn't hard: first IDEs are hda and hdb, first partitions are hda1 and hda2... Logical partition are >4, like hda5-hda15 (since an HD can hold only 4 primary partitions). It's a no-nonsense scheme (unlike in other systems...)
[5] When installing LILO, you get to choose among installing on root partition, Master Boot Record and somewhere else (can't remember). It usually advises against the last choice (MBR), because it "can be dangerous." It has ALWAYS worked perfectly for me on MBR. I find that LILO/GRUB on MBR is the best way to multi-boot Unix*+Windows OSs. But that's just my experience.
[6] Although when choosing filesystems you might feel a bit overwhelmed, since it features all FSs known by GNU/Linux... around 100.
[7] FAT32 sucks, but I intent to use it to install Windows. Then it will probably be an XFS migrated /home partition.

Disclaimer: I probably missed some options, if I did it is because they were too obvious to note. If they weren't, I'm sorry, my mistake. And most of the option titles are not quite textual... they are still obvious and you will recognize them.