Acoustic fingerprinting for remixing

This is the most ridiculous, absurd and interesting thing I’ve ever saw: I guy did a small program to pick acoustic fingerprints from a microphone, search over a database with music clips and, when you sing, you create new “remixed” clips.

Here it is Scrambled? Hackz!. Do not miss the video!

Oh, and that gave me some insights of how to add the missing feature on music players. :)

Missing features on music players

I was just thinking: today music players allow you to search for album, artist, genre, year of release, song title… almost everything. But we still don’t have a search for “I want that song that goes ‘Oh, touch, la la laaa, if you stay…”, even if the real words aren’t “touch” and “stay”.

[pt_BR] Sr. Eu Avacalho com Todas as Músicas – Nacional!

“Eu clico no link mas ele não mostra nada… yeah yeah”

[Apologias aos Engenheiros do Hawaii e sua “Toda Forma de Poder”]

Edit 1: Versão 2.0:
“Eu clico no link mas ele nao mostra nada
nada nada nada nada nada nada nada, oh
E os bits passam
Talvez passe um XXX”

Tô pensando em terminar a letra inteira e chamar de “Toda Forma de Download”.

SUSE Linux 10.1 Beta 8

Driven by pure curiosity, I downloaded the latest beta of OpenSUSE Linux. The next version, 10.1, is currently on Beta 8 and requires 5 CDs; although I’ve burned all of them, I still didn’t see it request the 4th CD, which makes me think it is the KDE applications. Yes, I didn’t installed KDE, even if SUSE well known for being a KDE distribution. To be honest here, I downloaded it just to see its GNOME installation, actualy.

So, 5 CDs at hand, time to install. Everything went nice, it did display an average time to install every CD (my initial installation required only 3 CDs) and it came without any surprises. Actually, I got some surprises, like it showing all my configurations, like the monitor brand. Even more, it did recognize my Ubuntu installation and added it to its grub menu, automagically. Very nice.

After installation, it was time to check the desktop. It got a little bit confused with my settings for Ubuntu, so I added another user, so I could see their default desktop. And Ii must say it is one of the cleanest default desktops I’ve seen. Only one panel and just a few launchers and applets. The default theme is a variation of “Clearlooks” and it is very good. Actually, all artwork is excellent: the default background, the default theme, even the default mouse cursors are better than the default on other desktops. The only thing that I’ve found are the fonts: they look quite ugly.

Ok, first steps done, it was time to try to use it. And that’s where it shown its “beta”: Banshee, the default music player, took a long time to scan my music library (3400-and-something songs), taking even longer than Rhythmbox. Trying to play produce no audio at all.

“Peer pressure is a bitch”, as they say. My co-workers came complaining that they wanted to see Xgl (since Novell is the company behind it). So I went to Yast and installed Compiz and xserver-xorg-xgl [or something like that]. The nice thing is that I got an icon on the GNOME control center to enable the 3D Xgl; just a few clicks and it asked for a reboot to complete the installation. Quite easy and simple. The problem came when the system came back: calling Xgl made the X server crash hard, with some segfaults. I tried some tricks, just to keep getting segfaults. The solution that came to me was to uninstall Xgl and hope it would return to the default X server. On my way to package management under yast running on a console, I though it would be better to just check upgrades before venturing into “remove and hope” path. Unfortunately, trying to use it this way only led to more segfaults. So, remove was the only option.

Xgl removed, it was time to check X again. Launching it as root brought FVWM as default window manager. “Cool”, I thought, “a hard to get window manager for the user that shouldn’t be used”. Time to switch to the SUSE user, only to find out it too got FVWM as default. Tweaking .xinitrc fixed the problem, although I still don’t know what made it think GNOME isn’t good without Xgl.

When I came back at home, it was time to try my wireless connection. No sign of any detection, so I had to run Yast again. I need to add a note here: Yast is a QT application and its default ugly look really looks weird on a very clean GNOME desktop. They seem to be using some variation of the Motif theme, with very dark gray background. Anyway, it was quite hard to understand where I could point the ESSID and WEP key; none of the options looked like something to configure network devices. All that time, my wired connection was Ok, although it wasn’t connected. After fixing the wireless options, I got no connection at all: all interfaces where down and there was no sign of how to enabled that.

So, I got some rough edges trying to use it. Ok, it is a beta version, but even the latest Ubuntu don’t throw segfaults at me. My thoughts in the end are quite bad: a distribution in its 8th beta shouldn’t get segfaults that way. Even worst, its configuration tools shouldn’t segfault; when normal applications crash, you’ll probably try to update the system, just to check if there isn’t any fixes for it. With the configuration tools failing too, things look a lot worst.

Anyway, here is a screenshot of the default desktop, running Banshee and the volume control.

SUSE Linux 10.1 Beta 8 OpenSUSE Linux 10.1 Beta 8
Applications: Banshee and Gnome-Volume-Control

Hardcore web design courses?

I like fiddling with HTML from time to time. The biggest problem is that I really don’t know it deeply enough to do everything I want to do, although I know it can be made.

So, right now, I’m looking for some kind of “hardcore webdesign couse”. Something not like “ok people, open frontpage” [or whatever drag’n’drop webdesign tool people use today], but something like “ok, let’s learn CSS. Open your favorite plain text editor and…”.

Ideas?

[pt_BR] Programadores matando um dragão

Roubado do blog do Fábio Nogueira:
Programadores matando um dragão:

  • Java – Chega, encontra o dragão, desenvolve um framework para aniquilamento de dragões em múltiplas camadas, escreve vários artigos sobre o framework mas não mata o dragão.
  • .NET – Chega, olha a idéia do Javanes e a copia, tenta matar o dragão, mas é comido pelo réptil.
  • C – Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão, encontra a princesa, mas a ignora para ver os últimos checkins no cvs do kernel do linux.
  • C++ – Cria um canivete básico e vai juntando funcionalidades até ter uma espada complexa que apenas ele consegue entender … mata o drag&atiilde;o mas trava no meio da ponte por causa dos memory leaks.
  • COBOL – Chega, olha o dragão, pensa que tá velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora.
  • Pascal – Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão … chegando lá descobre que o programa só aceita lagartixas como entrada.
  • VB – Monta uma arma de destruição de dragões a partir de vários componentes, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona durante noites chuvosas…
  • PL/SQL – Coleta dados de outros matadores de dragão, cria tabelas com N relacionamentos complexidade ternária, dados em 3 dimensões, OLAP, demora 15 anos para processar a informa&ccediil;ão. Enquanto isso a princesa virou lésbica.
  • Ruby – chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai enfrentar o dragão mostra um videozinho dele matando um dragão … o dragão come ele de tédio.
  • Smalltalk – Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.
  • shell – Cria uma arma poderosa para matar os dragões, mas, na hora H, não se lembra como usá-la
  • shell(2) – O cara chega no dragão com um script de 2 linhas que mata, corta, stripa, empala, pica em pedacinhos e impalha o bicho, mas na hora que ele roda o script aumenta, engorda, enfurece, e coloca álcool no fogo do drag&atiilde;o.
  • ASSEMBLY – Acha que tá fazendo o mais certo e enxuto, porém troca um A por D, mata a princesa e transa com o dragão.
  • Fortran – Chega desenvolve uma solução com 45000 linhas de código, mata o dragão vai ao encontro da princesa … mas esta o chama de tiuzinho e sai correndo atrás do programador java que era elegante e ficou rico.
  • FOX PRO – Desenvolve um sistema para matar o dragão, por fora é bonitinho e funciona, mas por dentro está tudo remendado, quando ele vai executar o aniquilador de dragões lembra que esqueceu de indexar os DBF.
  • ANALISTA DE PROCESSOS – Chega ao dragão com duas toneladas de documentação desenvolvida sobre o processo de se matar um dragão genérico, desenvolve um fluxograma super complexo para libertar a princesa e se casar com ela, convence o drag&atiilde;o que aquilo vai ser bom pra ele, e que não será doloroso. Ao executar o processo ele estima o esforço e o tamanho do estrago que isso vai causar, a assinatura do papa, do buda e do Raul Seixas para o plano, e então compra 2 bombas nucleares, 45 canhões, 1 porta aviões, contrata 300 homens armados até os dentes, quando na verdade necessitaria apenas da espada que estava na sua mão o tempo todo.
  • CLIPPER: Monta uma rotina que carrega um array de codeblocks para insultar o dragão, cantar a princesa, carregar a espada para memória, moer o dragão, limpar a sujeira, lascar leite condensado com morangos na princesa gostosa, transar com a princesa, tomar banho, ligar o carro, colocar gasolina e voltar pra casa. Na hora de rodar recebe um “Bound Error: Array Access” e o dragão come ele com farinha.

Rebuttal of the rebuttal [the SimpleKDE fork]

It seems that when Steven J. Vaughn-Nichols, Ziff Davis internet editor, read that SimpleKDE was a fork from KDE, it thought forking is baaaad. Later, Zeek Greko post a rebuttal on LinuxToday.

Unfortunately, as far as I can see, the rebuttal isn’t actually a rebuttal. There isn’t any rebut in there. Just some thoughts about the future and so.

The real rebuttal would be: forking is good ’cause it allows parties to try another approaches without the weight of the community. You see, both big desktop environments aren’t driven by developers, but by user request. When you fork a project, you also fork the community; then you can start clean, you can break the rules, you can do what you think without the worries of inertia. Later, if both communities agree, a merge can be done.

Forking is good.