Open source DJing with Mixxx

20130109-mixxx

On 31 December, my mission was to make people dance from 22:00 to 03:00 in the morning. Fortunately, I could rely on Mixxx, a fantastic and powerful DJing software available for free for all platforms (Linux, Mac OS X and Windows).

Mixxx performed admirably during the five hours.

On Linux, Mixxx supports MP3 out of the box but as I had quite a lot of AAC (i.e. M4A) files, I had to compile it from source. Here are the commands I used on my Ubuntu Linux 12.04 LTS box:

sudo aptitude install scons qt3-dev-tools libqt4-dev g++ bzr libportmidi-dev libsndfile1-dev libtag1-dev libmad0-dev libid3tag0-dev libmp4v2-dev libfaad-dev portaudio19-dev

scons -j2 faad=1 shoutcast=0 tuned=1

sudo scons prefix=/usr/local install

The first line is to install all the required dependencies, the second is to compile Mixxx with AAC support (faad=1) and specifically for the processor I was using (tuned=1). The third line is to install it in /usr/local

Have fun DJing with Mixxx :-)

Enabling Nvidia Optimus on CentOS Linux 6

I have just bought a new Dell Inspiron laptop, a N5110, and it has two graphics chipsets: one Nvidia GPU and an integrated Intel GPU. The Nvidia GPU is powerful and power-hungry. The Intel GPU is not that powerful (so forget about games) but requires much less power and, consequently, is much better to use on a laptop when not playing games (which I personally never do on this laptop). In theory, Nvidia Optimus technology allows the laptop to change from the Intel to the Nvidia GPU and vice-versa seamlessly… but this does not work out of the box on CentOS Linux 6 which is my preferred Linux distribution for serious work.

Here is how I made Nvidia Optimus work well enough on my laptop running CentOS Linux 6 64-bits (x86_64):

Enable the ELRepo repositories:

  • wget http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/elrepo-release-6-4.el6.elrepo.noarch.rpm
  • yum localinstall elrepo-release-6-4.el6.elrepo.noarch.rpm

Install VirtualGL to allow full 3D acceleration in Linux:

  • wget http://sourceforge.net/projects/virtualgl/files/VirtualGL/2.3.1/VirtualGL-2.3.1.x86_64.rpm/download
  • yum localinstall VirtualGL-2.3.1.x86_64.rpm

Install Bumblebee to add support for Nvidia Optimus in Linux:

  • groupadd bumblebee
  • yum –enablerepo=elrepo-testing install bumblebee kmod-bbswitch
  • chkconfig bumlebeed on
  • service bumlebeed start

Once this is done, the laptop will start using the Intel GPU. The optirun command can then be used to switch to the Nvidia GPU on a ad-hoc basis (e.g. optirun glxgears -info)

Now I need to make my Synaptics trackpad work!

Terminator and Xournal

 

A brief post to tell you that I stumbled upon two great open source software yesterday:

Terminator can be used to open multiple Gnome terminals in a grid as shown above. As it also works in full-screen mode, Terminator is great when you have to, say, administer multiple servers at the same time using SSH.

Xournal is, according to its author, a note taking application. But, and this is a wonderful side-effect, it is also a quite formidable PDF annotation tool!

Both can be installed on Fedora using yum and I suppose they are also available in the Ubuntu repositories (even though I’ve not checked) and can be installed with apt-get or aptitude.

Dennis Ritchie is dead

Dennis Ritchie died this morning.

Forty years ago, he invented two things: the C programming language (together with Brian Kernighan) and the UNIX operating system (together with Ken Thompson).

C

I first came across the C programming language when I was 16 in Lower VI. At that time, I had an Amiga and I wanted to do some game and AI programming. I read in magazine articles that this required a powerful programming language such as C and, by sheer luck, I managed to get a copy of the seminal book, The C Programming Language, from Editions de l’Océan Indien in Curepipe. I distinctly remember that the book cost Rs 120.00 and that I had to borrow the money from a good friend of mine, Ritesh, to buy it.

I started reading the book when I got home and couldn’t leave it until the end. After 20 years, I still have the book and I still like to open it at random and marvel at its conciseness and precision.

I still think that all computer scientists should know C.

UNIX

What can I say? UNIX is a marvelous operating system: powerful yet easy to understand. The historical UNIX has given way to modern variants like Mac OS X and Linux but the philosophy has remained the same and even has a name: it’s called the UNIX-way. In UNIX, each tool does one thing and only one thing. The trick is to combine the tools (using pipes or logical operators for example) to build more complex workflows…

Funnily, laymen do not realise that they depend on UNIX all day long as all Mac computers, the Orange Livebox, Sony and Samsung LCD televisions, Android smartphones, the iPhone and the iPad as well as all the computers at Google, Yahoo! and Amazon (among others) run some variant of UNIX.

Interestingly, the most powerful computers on the planet are powered by Linux.

So, thank you again to you Dennis Ritchie. You changed the world.

RIP.

Les logiciels libres: une opportunité pour Maurice

Dans notre monde moderne, la plupart de nos activités de commerce, de communication et de loisirs fonctionnent grâce aux ordinateurs et, surtout, grâce aux logiciels (software) que ceux-ci exécutent. Il existe deux types de logiciels: ceux qui sont libres (open source software) et ceux qui sont non-libres (aussi connus comme logiciels propriétaires ou privateurs).

Qu’y a t-il de commun entre Linux, Firefox, Chrome, OpenOffice et VLC Media Player? Ce sont tous des logiciels libres! Ce type de logiciel a plusieurs caractéristiques qu’il est intéressant d’analyser.

Premièrement, un logiciel est libre s’il peut être utilisé par tous, pour tous les usages. Par exemple, le navigateur Firefox sous Linux peut être utilisé par un médecin travaillant pour le secteur public soudanais pour s’informer sur les dernières recherches médicales concernant la malaria. Bizarrement, ce même médecin n’a pas le droit de faire la même chose avec Internet Explorer sous Windows (qui sont tout deux non-libres) parce que le Soudan est un pays que les États-Unis n’aiment pas… « La liberté des uns s’arrête là où commence celle des autres » en général… sauf dans le cas des logiciels non-libres.

Deuxièment, un logiciel est libre s’il peut être redistribué. En d’autres mots, dès que quelqu’un utilise un logiciel libre, il peut, sans violer la loi, donner des copies de ce logiciel à ses proches et connaissances. Par exemple, un enseignant qui utiliserait OpenOffice, qui est une suite bureautique libre très complète avec traitement de texte, tableur, logiciel de présentation, logiciel de dessin et base de données, peut en faire des copies et les redistribuer à tous ses étudiants pour qu’ils puissent travailler ensemble. Évidemment, la redistribution est gratuite! Pour un pays avec des moyens limités comme Maurice, cette caractéristique est importante.

[Le code source de Firefox inclut WebM, le nouveau format vidéo proposé par Google]

Troisièmement, un logiciel est libre si chacun peut étudier son fonctionnement pour, éventuellement, l’adapter à ses besoins. Les logiciels sont écrits en utilisant un langage de programmation tel que C, C++, Java ou autre. On appelle cela le code source du logiciel. Dans la plupart des cas, les éditeurs des logiciels non-libres ne donnent pas la possibilité d’examiner ce code source contrairement aux concepteurs des logiciels libres (d’où le terme open source). Pour la plupart des gens, qui ne sont pas des programmeurs, le code source n’est pas compréhensible et présente peu d’intérêt. Par contre, ceux qui manient les langages de programmation y trouvent la possibilité (1) de s’instruire en regardant ce que font les autres (ce qui est important lorsqu’on est étudiant en informatique par exemple), (2) d’ajouter des fonctionnalités pour enrichir le logiciel et (3) de corriger les erreurs qui s’y trouvent.

Ce dernier point a beaucoup d’importance: les logiciels libres sont souvent très fiables, bien plus fiables que les logiciels non-libres, parce que les erreurs de programmation sont corrigés par des utilisateurs dès qu’ils sont découverts. C’est d’ailleurs pour cette raison que des entreprises très connus tels que Google, Amazon, Facebook et Twitter utilisent majoritairement des logiciels libres pour offrir leurs services.

Quatrièmement, un logiciel est libre si chacun peut améliorer le logiciel pour ensuite le redistribuer au public s’il le souhaite. Comme chacun a accès au code source des logiciels qu’il utilise, cela permet aux plus créatifs d’entre nous d’y apporter des améliorations notables et de les partager avec les autres… Cette approche contributive du développement de logiciels libres permet de rapidement arriver à des niveaux de performance et de fiabilité phénoménaux.

Pour être complet, il est important de mentionner qu’il existe deux types de logiciels libres: ceux qui sont sous une licence virale (e.g. GPL) qui force les personnes (et les entreprises) à redistribuer leurs améliorations au public et ceux qui sont sous une licence non-virale (e.g. BSD, MIT, Apache) qui laisse la liberté aux personnes (et aux entreprises) de choisir s’il veulent redistribuer leurs améliorations ou non… Les puristes préfèrent le GPL tandis que les pragmatiques penchent plutôt pour les licences non-virales.

Les logiciels libres à Maurice

En 2008, RedHat a fait une étude sur le niveau d’activité autour des logiciels libres dans le monde en mesurant le nombre d’utilisateurs, le nombre de logiciels libres écrits, la politique instaurée par chaque gouvernement concernant l’utilisation des logiciels libres, le nombre de conférences, etc. On voit aisément que les pays occidentaux et les pays BRIC (Brésil / Russie / Inde / Chine) sont très actifs en ce qui concerne le logiciel libre.

Dans notre pays, beaucoup d’entreprises sont passées au logiciel libre. Il suffit de regarder les annonces d’emploi demandant des compétences en Linux, Java, PHP, MySQL, etc. pour s’en rendre compte. D’ailleurs plusieurs entreprises majeures de l’île font fonctionner leurs systèmes informatiques les plus critiques sur des serveurs Linux. Et ils ont raison.

Le Linux User Group of Mauritius, que j’ai aidé à mettre sur pied dix ans de cela, a pour mission d’aider les Mauriciens et les entreprises mauriciennes à adopter les logiciels libres.

Ah. J’ai oublié le plus important. Les logiciels libres sont gratuits!

[J'ai écris cet article dans le cadre de ma collaboration avec le magazine TechKnow.]