This year at the French Perl Wokshop 2007 I gave a talk my latest development, RT::Client::Console.
Maybe you remember in a previous post that I mentioned pympd as probably the best linux GUI client to mpd. Well that's true for linux, but now that I also use Mac OS X, I'm looking for a mac client to mpd.
What's mpd again ? "Music Player Daemon (MPD) allows remote access for playing music (MP3, Ogg Vorbis, FLAC, AAC, Mod, and wave files) and managing playlists".
MPD runs on linux, and a lot of clients exist to locally or remotely control it. However, last time I checked, the only Mac OS X client was the buggy MpcOSX, that I wouldn't recommend.
I just discovered that Theremin is now usable. This mpc client is full-featured, and nice. It has an itunes like music browser, it retrieves album cover art from amazon, manage playlists, trigger full or partial update of the mpd database, etc. It's stable and available for PPC and Intel based macs. Give it a try !
At last !
It took me more time than expected, but I finally got the beast properly compiled and bundled for Mac OS X.
Go grab Claws Mail for Mac OS X here
Beware, it's a PPC only bundle for now. Universal bundle should follow in some weeks.
And of course the usual screenshot :

So now some explanation. In my previous post, I explained roughly how to compile Claws on Mac OS X. Since then, I have successfully embedded the whole application in a bundle, and made an image of it. More information are available on the developper page.
Next step : recompile using GTK+ natively on Mac OS X.
I use the wonderful Claws Mail on my linux boxes at work and home. However, I run Mac OS X on my old ibook G4 laptop. I'v used Mail.App, which was not bad, then switched to Gnu Mail, better.
But I really miss Claws on my ibook. That's why I have decided to try to compile it. I don't tweak with source compilation often, as I'm a script languages oriented guy. But let's try.
First of all, Claws Mail needs gtk-2.6, and a working POSIX building environment. I decided to go for Fink, as I used it a bit in the past.
make (binary)
The configure script doesn't look for the gtk2, glib and other includes in the right location. one solution is to make symlinks, but wwp proposed adding the include dires in the CFLAGS env var. The configure script doesn't have the options to add includedirs). You might have to add more include dirs depending on your options and lib versions. Check config.log if configure fails
Now run the configure :
CFLAGS="$CFLAGS -I/sw/include/glib-2.0 -I/sw/lib/glib-2.0 -I/sw/include/gtk+-2.0 -I/sw/lib/gtk+-2.0" ./configure --prefix=/sw --disable-spamassassin-plugin --disable-dillo-viewer-plugin --disable-trayicon-plugin --disable-bogofilter-plugin
If the ./configure runs well, it'll output this
claws-mail 2.9.1
JPilot : no
LDAP : yes
OpenSSL : no
iconv : yes
compface : no
IPv6 : yes
GNU/aspell : no
IMAP4 : yes
Crash dialog : no
Libgnomeprint : no
LibSM : no
Manual : yes
Plugins :
Maemo build : no
Config dir : .claws-mail
The binary will be installed in /sw/bin
Now let's buid Claws :
make
And install it :
sudo make install
Well that was the first part. Now if everything compiled correctly, you should be able to run claws-mail. How? You first need to start X, and from within, start claws-mail. As we installed the fink X server, you have to run startx, and within an xterm, run claws-mail. Success! Claws Mail will appear.
In the next post we'll see how to compile against the Apple X11 server.
I'm an emacs user since 2000, but I actually never really had to mess with HTML a lot, as I never did real web development (that's unusual nowadays, isn't it ?), until recently.
Here is the history of what I have used so far :
Slanning just told me he uses html-helper-mode. I tried it, and it seems to be what I need : a lightweight HTML mode with syntax highlighting and indentation working from scratch. Coupled with mmm-mode, it's probably the best way of editing HTML, JSP, Mason, etc.
I Bought them some weeks ago for more than 150 quids, started by advanced perl programming (2nd edition), then HOL. Really great books. I recommend reading PBP before.
I forgot to mention that I took part of the French Perl Workshop, end of november, in Paris. I gave a funny talk on HTML::Mason. In French. But With Kitties.
|
![]() |
That's it! Just wanted to let you know I'm now in London. I still have no internet at home, so I'm still not able to do anything really useful, but that should change soon. In the meantime, I'll start poking #gentoo-uk people irl ![]()
Cheers ! (as they all say here in UK )
Today I decided to rewrite some of my config files. I started with ~/.screenrc. It's amazing the cool things you can do in that file ![]()
Here are some of the options I use. One of them is rather useful : replacing the main screen key : instead of 'ctrl-A', I changed it to 'ctrl-O'. That's because 'ctrl-A' is binded in many applications (emacs, *sh, other editors, links...), and it clashes a lot with the badly chosen default screen key 'ctrl-A'.
The other nifty option sets the caption of the bottom line : it displays all the windows with their number and title, the current one being highlighted in white on blue. And some status information are padded to the right of the screen.
# ~/.screenrc
# use visual bell
vbell on
# replace ctrl-A by ctrl-O
escape ^Oo
# set a big scrolling buffer
defscrollback 5000
# Set the caption on the bottom line
caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H - %LD %d %LM - %c"
Une petite reflexion non approfondie que je note ici. disclaimer : je n'y connais rien, je ne fais que supputer.
Le cerveau sait faire des tonnes de trucs en parallèle. Par contre la conscience est mono-tâche. Globalement, on ne peut être conscient que d'une chose à la fois. Ce qui ne veut pas dire qu'on ne ressent pas une multitude de choses en même temps.
Maintenant, il y a des émotions qui sont générées assez directement par les sensations, et d'autres par des reflexions conscientes. Par exemple, si je prend une douche chaude, la sensation de chaleur fait naître une émotion de félicité ou de bien-être. En revanche, si je regarde l'heure qu'il est et conclut qu'il me reste trop peu de temps pour attraper mon train, je vais être stressé ou en colère. Cependant on ne peut sûrement pas différencier aussi facilement des émotions "sensorielles" et "cognitives", car dans le cas du train manqué, ce sont surement les souvenirs associés à une situation similaire qui engendre l'émotion de stress. Donc la conscience a tiré une conclusion ("trop tard pour le train"), elle peut "rejouer" les souvenirs/sensations associés à cette situation, et donc générer des sensations, qui crées des émotions.
Pour autant, on peut différencier les émotions générées très rapidement par les sensations, et celle qui nécessitent du travail, comme rejouer les sensations liées à la situation. On pourrait dire qu'il y a deux types d'émotions, les émotions directes et indirectes. Peut-on avoir plusieures émotions en même temps? Je ne sais pas vraiment.
Le plaisir peut sûrement se résumer grossièrement à une "émotion plaisante". De la même manière, on peut sans doute différencier le plaisir "direct" et "indirect". Le plaisir direct serait très proche de la sensation, le plaisir indirect serait généré après "reflexion". Par exemple, je mange des chips. Le fait de manger, le "bon goût de pomme de terre", etc, sont des sensations qui provoquent une émotion plaisante directe. Je ressent du plaisir direct, "c'est bon". Par contre, après quelques instants, je m'apperçois que je viens de terminer mon déjeuner, je me remémore les ingrédients et la teneur en graisse de l'aliment. Après reflexion, des images sur le surpoids, la malnutrition, etc, sont rappelées, et génèrent une émotion déplaisante indirecte, "c'est pas bon pour ma santé".
Prenons encore un exemple : un joueur d'echec pourra ressentir du plaisir devant une partie intéressante, quelque soit le vainqueur : le placement des pièce génère une structure intéressante, "plaisante", sur le plan logique, tactique et stratégique. Or l'aspect des pièces est toujours le même, l'échiquier n'a pas changé depuis le début de la partie. Il n'y a pas de plaisir généré directement par les sensations visuelles. On pourait dire que les échecs procurent du plaisir indirect exclusivement. Ce type de plaisir n'est pas unique, il se rencontre en informatique par exemple, ou bien en musique.
Le cas de la musique est intéressant. La musique, ce sont d'abord des sons, qui provoque des sensations, et du plaisir direct. Cependant, sans jouer une partition, un musicien avec un minimum de connaissance pourra apprécier l'harmonie, la structure, les mouvements et le "message" de la composition de l'oeuvre. Ainsi la musique peut créer un plaisir indirecte, qui nécessite de percevoir la structure et l'harmonie de la composition.
Une oeuvre musicale très bien composée et très bien interprétée provoque alors 2 types de plaisirs, un direct et un indirect. Et si l'oeuvre est bien faite, les émotions de plaisir indirectes seront générés en même temps que le plaisir direct du son.
Je pense que c'est pour cela que la musique est un plaisir qui peut être très intense, et sain : le plaisir indirect fait travailler le cerveau et son imagination, et il est motivé par le plaisir direct.
Bien sur ce n'est pas un cas isolé. La peinture est un autre exemple, où le plaisir des formes et couleurs se mêle au plaisir issu de la signification, du message.
Pour conclure : la musique récente a tendance à être très rigide structurellement : l'éléctronique par exemple est presque toujours en 4 temps, sans modification de tempo, avec énormément de répétition, et des changement qui sont très prévisibles, calés sur des schémas en 8 ou 16 temps et mesures. cette rigidité permet de limiter le nombre de variables. Le "sampling" a pris une importance énorme, la composition et l'harmonisation d'un morceau est devenu inexistante dans ce genre musical. Ainsi, on favorise énormément le plaisir direct, sans accaparer les fonctions cognitives du cerveau. C'est ainsi que l'"easy listening" est né : facile à écouter, notamment en arrière plan, sans que la conscience ait à s'y intéresser.
Prenez le contre-exemple du jazz, qui se doit d'être écouté avec toute son attention, sans quoi il est dur de le comprendre et de l'apprécier. Et c'est une musique qui fatigue le cerveau, mais de manière saine, en favorisant la création de nouvelle structure cognitive !
Ceci dit, j'écoute beaucoup d'electro ![]()
Je me garderai bien de généraliser à l'ensemble des médias, de la société occidentale et de l'orientation de ses loisirs. Car d'un autre coté on demande beaucoup plus de capacité d'abstraction, d'adaptation, de créativité et de schématisation dans le cadre professionnel.
As some of you may know, I'm going to move to London in one month, with my girlfriend. Of course I'm also changing job, I've found a great company, where I'll do advanced perl programming, refactoring, and so on, something I really like
I'll tell you more once I'm there.
As a side effect, I'm not really active these days, hopefully this will change once we have moved.
I went last weekend to Toulouse with friends of mine, to take some rest, and do some outdoor climbing. Pictures here
Voilà,
Juste pour dire, j'ai passé l'épreuve du code de la route avec succès, je n'ai fait qu'une seule faute sur 40 questions, donc je suis plutôt content. Maintenant je vais pouvoir attaquer les leçons de conduites
Et bientôt, un certain matthieu devra arrêter de fumer (il m'avait promis qu'il arrêterait quand j'aurais mon permis)
gruh !
I'm using mpd for a long time, several years now. At the time, I quickly understood that the mpd clients GUI were buggy, badly features or non-ergonomic. So I use the fantastic ncmpc ncurses client. But lately I checked pympd again, and decided to give a try to the 0.06 version. I only tested the 0.05 which was still buggy with mp3 radio streams and had other minor problems. But pympd > 0.06 just rocks ! it is as usable as the ncurses based ncmpc, and adds nifty features, like displaying covers of the current song, a powerful database search, and being able to save playlists. I have tested every single GUI mpd clients available on the mpd wiki page (both stable and experimental clients) that run on linux, and don't use java (I don't like java). pympd is the best imho.
A music player is something very sensitive. It should do the job well and quickly, and not stay in your way. If you're looking for a decentralized persistent music player system with a lightweight powerful ergonomic GUI, I recommend using mpd+pympc ![]()

So, kudos to the pympd developpers !
!http://static.flickr.com/63/191149337_b593ef56a5_m.jpg!:http://www.flickr.com/photos/damsieboy/sets/72157594201913570/
I spent the weekend in London with Sandra. We went to camden market, St james Park, Tate Modern, etc... London or Paris ? I don't know which one I prefer yet ! ![]()
*Back home* ! we had a nice time this week at the “LSM 2006″:http://www.rmll.info/?lang=en. It’s over now, but I’ve taken some pictures, among them the Gentoo booth we held to sell 2006.0 livecds. It worked pretty well, even if all the costs are not coverd.
!http://static.flickr.com/58/184043162_4e9e61546c_m.jpg!:http://flickr.com/photos/damsieboy/184043162/in/set-72157594188204338/
I just started learning altivec. It's quite easy, actually easier than I expected, I can only recommend you to try.
What you need :
And voilà, you are ready to use altivec
Now let's talk about documentation. At first, I recommend reading the wikipedia article if you don't know anything about altivec. Then, nothing is better than starting with a small Hello world. I followed the instructions given in this document, about PMON on a pegasos. I didn't care about PMON, but the document starts with a 'hello world' in altivec.
Then, after following the basic instructions, I downloaded the complete
AltiVec Technology Programming Interface Manual, it's simple to read, and explains every single altivec commands. By the way, you might need to register on the freescale to have access to the documents.
OK for really lazy people, here is a dummy source code, calculating 1+2+3+4+5. Useless, but I like that
The source code is at the end, here is the result :
vec_int1 = (1,2,3,4)
vec_int2 = (0,0,0,5)
vec_int3 = (0,0,0,15)
Now I need to find something interesting to do in altivec, and more important, train myself on algorithm optimization, data prefetching, and so on. Maybe I'll post more about altivec later.
Here is the dummy source code, compile it with :
gcc -maltivec -mabi=altivec test.c -o test
#include <altivec.h>
#include <stdio.h>
void print_char_vector(vector unsigned char *this_one);
void print_int_vector(vector int *this_one);
vector int vec_int1;
vector int vec_int2;
vector int vec_int3;
int main() {
unsigned int a1[8] __attribute__ ((aligned (16)))
= {1,2,3,4, 0,0,0,5};
vec_int1 = vec_ld(0, (vector int*)a1);
vec_int2 = vec_ld(16, (vector int*)a1);
vec_int3 = vec_sums(vec_int1, vec_int2);
printf("vec_int1 = ");
print_int_vector(&vec_int1);
printf("\n");
printf("vec_int2 = ");
print_int_vector(&vec_int2);
printf("\n");
printf("vec_int3 = ");
print_int_vector(&vec_int3);
printf("\n");
}
void print_int_vector(vector int *this_one) {
printf("(%d,%d,%d,%d)",
((int*)this_one)[0],
((int*)this_one)[1],
((int*)this_one)[2],
((int*)this_one)[3]);
}
Tiens, je me suis dit tout à l'heure : c'est bizarre, en français, le seul mot que j'utilise couramment pour dénommer un africain est "black". Les autres mots sont à connotation raciste, du moins c'est l'impression que ça me donne. Je préfère dire "Ah zut j'ai oublié comment il s'appelle mon voisin black" plutot que "mon voisin noir". La langue française n'est pas très sympatique pour certaines choses. J'ai l'impression qu'à force de racisme ambiant culturel, c'est passé dans la langue, à tel point qu'il est nécessaire d'importer des mots étrangers vierges de toute dérive raciste. Des mots immigrés en quelque sorte ![]()
L'immigration, en plus de diversifier notre culture, assainie notre langue, c'est cool.
:: Next Page >>
| Next >
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
| << < | ||||||
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |