Thursday, December 2, 2010

Téléphonie mobile : comment donner moins d'argent à Swisscom & Co.

La situation de la téléphonie mobile en Suisse n'est pas avantageuse pour le consommateur. Pour simplifier, on pourrait dire qu'on a le choix entre, d'un côté, une bonne couverture réseau et des prix élevés (Swisscom) et, de l'autre, une mauvaise couverture réseau et des prix à peine plus avantageux (Orange et Sunrise). Difficile de comparer directement les différentes offres des opérateurs, de toute manière.

Dans tous les cas, si vous accédez à Internet via votre téléphone mobile, il y a moyen d'économiser de l'argent, dans plusieurs cas.

Prenons les SMS chez Swisscom, par exemple. Si vous disposez d'un abonnement NATEL liberty, chaque SMS vous coûtera 20 centimes. Une fortune, autrement dit. Sur Android, BlackBerry, iPhone et Nokia, une application appelée WhatsApp vous permet d'envoyer facilement des messages à vos contacts (qui devront au préalable avoir installé la même application). Sur iPhone, cette application coûte 1.10 frs. Moins de six SMS chez Swisscom ! D'autres solutions existent, comme Boxcar (interfaçage possible avec Twitter, Facebook, etc. et leur système de messages directs). Dans le cas où un message n'aura pas besoin d'être lu tout de suite, un email fera tout aussi bien l'affaire, bien entendu.

Pour les MMS, les tarifs de Swisscom sont tout aussi ridicules : 50 centimes pour un MMS jusqu'à 30 Ko et 90 centimes pour un MMS jusqu'à 300 Ko. Dans le pire des cas, avec un abonnement NATEL liberty, si vous avez épuisé votre quota de données mensuel (100 Mo, 250 Mo ou 1 Go), chaque tranche de 100 Ko supplémentaire vous coûtera 1 centime. Pour envoyer une image jusqu'à 30 Ko (via WhatsApp, email ou autre), il vous en coûtera donc 1 centime (et non 50 centimes). Pour une image jusqu'à 300 Ko, il faudra compter 3 centimes (et non 90 centimes). Faites le calcul : Swisscom vend ses MMS en tout cas plusieurs dizaines ou centaines de fois plus chers que les données Internet. Cherchez l'erreur...

Pour les appels téléphoniques, la situation est un peu plus compliquée. Si vous êtes connectés à un réseau Wi-Fi (chez vous, par exemple) et que votre interlocuteur dispose de Skype ou d'une application VoIP similaire (fring, iCall, etc.), la question ne se pose presque pas : il faut utiliser l'application VoIP (communication gratuite) au lieu de passer par Swisscom & Co.

Si votre interlocuteur dispose d'un téléphone fixe, alors le coût de la communication avec un abonnement NATEL liberty grande ou mezzo est de 50 centimes par tranche de 60 minutes entamée. Un prix presque aussi ridicule que celui des SMS et des MMS, à moins que vous ayez l'habitude de faire de longs appels. Via Skype, le prix actuel est de 6.8 centimes (frais de connexion), puis 3.3 centimes par minute entamée. Par conséquent, jusqu'à 13 minutes, un appel via Skype sera plus avantageux.

Si votre interlocuteur dispose d'un téléphone mobile sur le réseau Swisscom, dans ce cas, Skype devient moins avantageux (6.8 centimes, puis 54.7 centimes par minute, contre 50 centimes par heure via Swisscom). Dans le dernier cas (interlocuteur sur le réseau mobile Orange ou Sunrise), Swisscom est également plus avantageux (10 centimes par tranche de 12 secondes).

Imaginons maintenant que vous n'ayez pas accès à un réseau Wi-Fi, mais que vous ayez un bon accès au réseau 3G (pas évident !) et que vous désiriez appeler un téléphone fixe. Selon les informations que j'ai pu trouver, un appel Skype a besoin, dans le pire des cas, de 70 kbps de bande passante, donc 8750 octets par seconde. Une tranche de 100 Ko (1 centime maximum) sera donc "consommée" en un peu plus de 11 secondes. Via Skype, 4 minutes de conversation vous coûteront donc 6.8 centimes de frais de connexion, plus 3.3 centimes par minute x 4 minutes, plus 21 centimes de données (à 1 centime la tranche de 100 Ko), soit 41 centimes. Au-delà de 4 minutes, Swisscom redevient plus avantageux.

(J'ai pris ici les forfaits Swisscom comme base, mais j'imagine que des calculs similaires peuvent être faits pour Orange et Sunrise.)

Il est donc plus facile d'économiser sur les SMS/MMS (hyper-surtaxés !) que sur les appels téléphoniques, mais c'est déjà un début. Si les centaines de milliers (millions ?) d'utilisateurs suisses de smartphones profitaient des alternatives à leur disposition (applications, etc.), il est probable qu'ils pourraient globalement économiser des millions de francs par an.

Mise à jour (3 décembre 2010). Kik Messenger est une autre application de messagerie instantanée (destinée à remplacer les SMS), gratuite, celle-ci, similaire à WhatsApp et disponible pour Android, BlackBerry et iPhone. Merci à Miguel pour l'information !

Mise à jour (18 janvier 2011). J'ai corrigé l'article en prenant en compte que les frais de connexion facturés par Skype sont de 6.8 centimes (avec TVA) et non 5.9 centimes (sans TVA).

Monday, November 15, 2010

Streaming music from Squeezebox Server to an iOS device

A few years ago, I noticed that it was not possible to stream music from Squeezebox Server (previously called SlimServer, then SqueezeCenter) to an iPod Touch. Fortunately, things have changed: bugs have been fixed and iOS 4 now supports multitasking (since June 2010). A few weeks ago, I reinstalled Squeezebox Server on my Ubuntu server and realized that it was finally possible to use my iPhone to play music from my server. Here’s how I currently do it:
  1. Start Safari on your iPhone
  2. Enter the following URL: http://myserver:9000/stream.mp3 (or http://user:password@myserver:9000/stream.mp3, but this is less secure and will cause Safari to display a warning message)
  3. Start iPeng (a remote control application for Squeezebox Server) or any other equivalent application
  4. Add tracks to the player matching your iPhone and play them
I don’t know if it’s the optimal way to do it or not, so any hints or suggestions will be appreciated. In my experience, the main drawback of this method is that Safari buffers a lot of audio before playing it, so expect a long delay (15-30 seconds) when playing a new track. Also, you won’t be able to use Safari to access any other sites. I guess a dedicated streaming client (instead of Safari Mobile) could help, but I don’t know if such an application even exists.

Update (November 27, 2010). There's a streaming client called OPlayer Lite that, according to my experience, buffers about half as much audio as Safari Mobile. I've also just discovered another application called Squeezecast, but it's not free (it's $5.99, which sounds expensive as it apparently still requires iPeng to manage the playlists). Does anybody have any experience with it?

Another "trick" that I'm now using is to connect from my iPhone using the following URL:

http://user:password@myserver:9000/stream.mp3?name=Olivier%27s+iPhone&bitrate=160

The "bitrate" parameter in the URL forces the bitrate to the specified value if the player doesn't exist yet (so you don't have to change it in the settings). The "name" parameter is the name of the player to use or create. That way, your iPhone won't create a new player every time your IP address changes. Unfortunately, that feature is still not supported in Squeezebox Server. There's a feature request for that on bugs.slimdevices.com that has been open since 2005! The good news is that it's pretty straightfoward to patch Squeezebox Server. In the processURL function in Slim/Web/HTTP.pm, add the following lines:

if ($params->{'name'}) {
  $address = $params->{'name'};
  main::INFOLOG && $log->is_info && $log->info("processURL using address=$address");

}

just before:

$client = Slim::Player::Client::getClient($address);


and the following lines:

if ($params->{'name'}) {
  $client->name($params->{'name'});

}

just after:

if ( $params->{userAgent} ) {
  ...
  $client->name( $agent . ' ' . string('FROM') . ' ' . $address );

}

Update (February 9, 2011). iPeng now supports playback (i.e. it can act as a Squeezbox player without any third-party application). The feature is not free (it is available as an in app purchase), but, according to my tests, it is well worth the price ($4.99).

Saturday, May 29, 2010

How I rescued my corrupted RAID 5 array

My setup was the following: four 500-GB drives connected to a Gigabyte GA-8I955X Royal motherboard from 2005 and configured as a RAID 5 array for a total of 1397 GB of usable space. On that motherboard, the RAID 5 functionality was provided by an Intel 955X Express Chipset ("Intel Matrix Storage Technology").

After a few years, the motherboard started to show problems (my PC would reboot randomly, for example). At the beginning, it only happened once every few weeks. My data never got corrupted and the RAID 5 array was always reconstructed when needed. After a while, though, booting my PC became harder and harder (requiring several reboots every time), until I couldn’t boot it at all.

My first attempt at retrieving the data from my hard drives was unsuccessful. I bought another motherboard (the exact same model, of course) from eBay and connected the four drives to it. I naively expected the motherboard to recognize the hard drives as a RAID 5 array and boot from it without any problem. That’s not what happened, though. Instead, the Intel Matrix Storage Manager complained that two of my drives were "Non-RAID Disks" (although it did detect the presence of a RAID 5 array).
That’s when I started panicking. Of course, my most important data was backed up (DVDs, Jungle Disk, etc.), but some of my files were not backed up at all (large audio/video files, downloads, etc.). I contacted Intel for advice, but they were not very helpful. After a few searches on the Web, I decided to try a RAID recovery tool (something I didn't know even existed): the demo/trial version of RAID Reconstructor. Other recovery tools are also available, but that’s the first one I tried.

The idea is to create a BartPE "boot CD-ROM", boot from it, and then let the recovery software analyze the drives and automatically (more or less) detect the RAID parameters (start sector, drive order, block size, etc.). Using that trial version, I was able to view all the files on my hard drives and no error was reported, so I decided to buy the RAID Recovery Bundle (which includes the full version of RAID Reconstructor). It’s pretty expensive, but I guess it’s better than losing all my files...

Using the full version of RAID Reconstructor, I created an image of my RAID array on another hard drive (not a single image file, actually, but a set of more than 2100 688-MB files). I don’t remember how much time that step took exactly. Probably a couple of days at least (!). Files can then be extracted from that image using two different tools: Captain Nemo (if the file system is in good shape) and GetDataBack (if deleted files need to be recovered or if the file system is corrupted).

According to my experience, Captain Nemo and GetDataBack both have bugs/limitations:
  • Captain Nemo (4.20) cannot retrieve files whose full names are longer than 260 characters; every time it tries to extract such a file, it will display an error and wait for the user to choose an option ("Ignore", "Abort", or "Ignore all"). Some large files (a few hundreds megabytes or more) are also incorrectly copied (the resulting file is zero-sized).
  • GetDataBack (4.00) doesn’t have any problem with long file names or large files, but it won’t extract/copy empty folders (not a serious limitation, I admit).
Since I’m a bit paranoid with my data, I chose to extract my files both with Captain Nemo and GetDataBack. I then compared the two sets of files using DiffMerge (GNU diff doesn’t handle large files well, as it apparently tends to load them into memory...) and replaced the zero-sized files extracted by Captain Nemo with the same (correctly sized) files extracted by GetDataBack. I also compared the files from the RAID array with my backups and checked the integrity of a subset of those files (mainly FLAC, JPEG, ZIP, and GZ files) using a small utility I wrote.

The moral of the story is that you should never trust a hard drive or, more generally, the hardware your data depends on (a RAID controller, a motherboard, etc.), as it will always fail, eventually. So, always backup your data. All of it.

Tuesday, May 11, 2010

Les végétariens ne mangent pas de poisson

Il s’agit d’une erreur dont je suis régulièrement témoin. Lorsque j’annonce que je suis végétarien, dans un restaurant ou une soirée, on me demande régulièrement si je mange du poisson. Récemment, j’ai même été témoin d’une discussion, dans le train, durant laquelle quelqu’un prétendait que les végétariens pouvaient manger du poisson et que c’étaient les végétaliens qui n’en mangeaient pas. Véridique.

En réalité, il n’existe pas trente-six définitions de ce terme : un végétarien est une personne qui pratique le végétarisme, c’est-à-dire un système d’alimentation excluant la consommation de chair animale (voir par exemple Wiktionnaire ou Wikipedia). Par “chair animale”, on entend donc la viande rouge, la volaille, le gibier, le poisson, les crustacés, les fruits de mer, etc. Un végétarien peut parfaitement consommer des oeufs ou du lait.

Un végétalien, quant à lui, ne consomme aucun produit d’origine animale. Cela inclut la viande, le poisson, mais aussi les oeufs, le lait, le fromage, le miel, etc.

Il existe des termes un peu plus compliqués pour désigner quelqu’un qui ne mange pas de viande, mais uniquement du poisson, ou qui ne mange pas de viande rouge, mais uniquement de la volaille, par exemple. Il s’agit des termes “semi-végétarien”, “pesco-végétarien” et “pollo-végétarien”, mais, à mon avis, ils ne font qu’ajouter à la confusion déjà existante. Devra-t-on bientôt inventer un mot pour désigner les personnes qui n’aiment pas les choux de Bruxelles ?

J’ajouterais encore (pour répondre à une question qu’on me pose souvent) qu’à ma connaissance, il est difficile d’avoir des carences (protéines, vitamines, etc.) en étant végétarien, si l’on mange de manière équilibrée - ce qui est une condition valable également pour les non-végétariens, bien entendu ! Le végétalisme, quant à lui, est plus problématique (mais pas insurmontable) de ce point de vue. Enfin, on peut être végétarien principalement pour des raisons éthiques (c’est mon cas, à la base), écologiques, économiques ou de santé.