Lecture: Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14

Deux de mes collègues ont commandé ce livre et le lisaient simultanément: du jamais vu! De Scott Myers, le même auteur que “Effective C++: 55 Specific Ways to Improve Your Programs and Designs”, un livre qui m’a beaucoup plu, je n’ai pas réfléchi longtemps avant de “shotgunner” la première copie disponible.
Continue reading

Effective Modern C++ Book Cover Effective Modern C++
Scott Meyers
Computers
O'Reilly Media
2014-12-05
315

Lecture: Big Data

L’histoire de comment j’ai été incité à lire ce livre est différente des autres. Un collègue l’a pré commandé au nom de la compagnie lorsqu’il était en cours de rédaction. Ledit collègue a quitté la compagnie il y a plus d’un an et le livre nous a été livré il y a quelques semaines. Comme je travaille en (buzzword) Big Data et que le bouquin a le même titre je me suis dit «pourquoi pas?».
Continue reading

Big Data Book Cover Big Data
Nathan Marz, James Warren,
Computers
Manning Publications
2015-03-31
328

Lecture: The Effective Engineer

C’est un collègue qui, sans l’avoir lu, m’a dit être intéressé par ce livre. Une recherche simple m’a permise d’atterrir sur la page du bouquin. Si vous êtes comme moi, votre première réaction sera: « Quelle horreur! On dirait un site de télé annonce.» J’ai finalement décidé d’ignorer ma première réflexion et me suis procuré le livre.

Continue reading

The Effective Engineer Book Cover The Effective Engineer
Edmond Lau
Effective Bookshelf
2015-03-19
260
https://www.theeffectiveengineer.com/book

StarCluster: Multiple node instance type support

Last week I released a new feature for the vanilla_improvements branch of StarCluster: multiple instance type support. It means that our cluster can now select the instance type to bid on depending on a configurable factor and the lowest spot market price for each type.

Want to see how it works? Head to the wiki. Want to know more about how I did it? Read further.

Continue reading

Grooveshark est fermé: comment possiblement récupérer sa liste de lecture

Suivant la fermeture de Grooveshark le 30 avril vous êtes tristes d’avoir perdu vos listes de lecture? Il y a bien une pétition en ligne qui demande à Grooveshark de donner le moyen à ses membres de les récupérer, mais ça risque de ne jamais arriver. Si vous accédiez à Grooveshark avec Chrome ou Firefox, il y a sur ce même site une recette un peu technique qui peut vous permettre de récupérer votre liste de lecture, à condition d’être sur le même ordinateur. Bien qu’il n’y a aucune garantie qu’elle fonctionne pour vous, elle prend moins de 5 minutes suivre alors ça vaut le coup d’essayer. La voici illustrée et éclaircie pour les gens moins savants dans le domaine.

Continue reading

Post Ubuntu upgrade: hip-chat not starting (fix)

I have just updated my Ubuntu installation to the latest distribution (15.04) and found out that hip-chat was no longer starting. I went to the terminal to launch it via the command line and had the following error.
%> hipchat
/usr/bin/hipchat: /opt/HipChat/bin/..//lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.52)

Simpy reinstalling fixed my issue. So first I removed it.
%> sudo apt-get remove hipchat

To reinstall though, I had to re-enable the external dependency commented out by the Ubuntu upgrade procedure.
%> sudo vim /etc/apt/sources.list.d/atlassian-hipchat.list

Remove the starting “#” to re-enable the line. Then run
%> sudo apt-get update
%> sudo apt-get install hipchat

That fixed the problem for me.

Parsers printing rule: make sure you print what you parsed

There should be a rule for all parsers: Parsers “print” method should always render a string that can be parsed back without changing the semantics. In pseudo code, it translates to:

initial_string = "parse me"

//parse back
assert to_string(parse(initial_string)) == initial_string

//don't change the semantics
assert parse(to_string(parse(initial_string) == parse(initial_string)

If I do the same with JavaScript and JSON:

var jsonStr = '{"key1":"val1","key2":"val2"}';
JSON.stringify(JSON.parse(jsonStr)) == jsonStr;

As programmers, the less we need to think and worry, the better. Parsers following that rule can be used with confidence; they will never betray you. If that statement doesn’t convince you of the importance for consistency, let me give you a couple of examples of errors caused by inconsistent parsers/printers.
Continue reading

Query string white space vs plus

Trivia: What is the difference between the encoded query string parameter “a+b” and “a%20b” ?

Answer: Nothing! They are both encoded representations for “a b”.

Isn’t a “+” supposed to remain a “+”? Well, the URL and the query strings are not encoded following the same rules. In the URL, the “+” remains a “+” indeed, but in the query string it’s actually encoded and becomes a “%2B”. This can be misleading.
Continue reading