Vianney Lecroart - acemtp Playground
HUD ou ne pas HUD, telle est la question…

Depuis des années, les designers de jeux vidéos font tout ce qu’ils peuvent pour retirer les fameux HUD de leurs jeux. Par exemple, on retire la barre de vie pour la remplacer par des effets de sang. Ou alors on retire l’affichage de la vitesse dans les jeux de voiture et on affiche à la place une aiguille sur le tableau de bord. Le but est souvent de rendre le jeu le plus immersif et réaliste possible.

Ce que je trouve drôle c’est que dans la vrai vie, c’est le contraire qui arrive. On voit de plus en plus de HUD dans le vrai monde. Par exemple, l’affichage de la vitesse sur le pare brise de la voiture. Ou alors les 10ène d’applications pour iPhone pour ajouter des informations comme ici pour le métro. Et ca ne fait que commencer.

Les jeux vont devoir revenir en arrière si elles veulent calquer le monde dans lequel on va vivre :)

La théorie du Fun

C’est un sujet très courant dans le jeu vidéo : comment faire pour que mon jeu soit fun !

La règle étant que plus le jeu est fun, plus il y aura de monde qui y joueront.

Mais la théorie du Fun peut s’appliquer à d’autres domaines, comme par exemple : comment faire pour que les gens prennent d’avantage les escaliers, jettent d’avantage leurs bouteilles recyclées ou alors utilisent les poubelles publiques ? En rendant la tache Fun!







Et en plus, ca fait une superbe publicité virale pour VW.

Comment se démarquer des autres entreprises et réussir?

J’ai plusieurs sociétés qui me servent comme modèles. Il y a bien sur Google (ca t’étonne Darky ?), Fog Creek mais il n’y a pas que dans l’informatique que je trouve mes modèles. Le dernier en date, c’est une société qui vend des chaussures sur Internet… Quoi de plus banal, il y a des 10ene de milliers de sites d’e-commerce rien qu’en France, comment se démarquer !

Imaginez une entreprise américaine qui rembourse elle-même 100% des soins de santé de leurs employés. Qui paye 4 semaines de formation à chaque nouvel employé qui bosseront dans leur callcenter (qui ce trouve en Amérique, dans les locaux même de la société et non pas délocalisé). Qui ensuite leur propose même de l’argent pour quitter la société ! Nourriture gratuite pour tous les employés. Et les clients ? Frais de livraison gratuits en service rapide et même possibilité de rendre les chaussures gratuitement… 365 jours après les avoir commandés ! Pour cela, dans chaque colis, ils fournissent en même temps que les chaussures un bordereau UPS prépayé pour les retourner.

N’importe quel banquier ou entrepreneur dirait que c’est du suicide. Une telle boite ne pourrait jamais gagner d’argent avec ce genre de pratiques ! Et pourtant… La société, Zappos, existe bien depuis 9 ans, et a fait près d’un milliard de dollars de chiffre d’affaire cette année… Et s’est même fait racheté par Amazon pour la modique somme de 979 millions de dollars. Pas mal pour une société d’e-commerce de chaussure !

En tant qu’entrepreneur, on lit toujours qu’il faut être innovant, faire quelque chose de jamais vu si on veut réussir. Baisser les coûts, exploiter au maximum les employés, abuser les clients, faire un maximum de pub… C’est clairement du capitalisme archaïque. Il y a un gros marché pour les entreprises qui dépensent leur argent dans le service et dans la qualité, et ce, quelque soit le domaine d’activité car les clients en ont marre d’être pris pour des lapins de 3 semaines.

Mon rêve serait de monter ou de travailler dans une entreprise ayant ce genre de valeurs ! N’hésitez pas à me contacter si c’est le cas ;-)

What Startups Are Really Like

Je suis tombé sur un essai vraiment très intéressant donnant des conseils pour créer une startup:

http://www.paulgraham.com/really.html

Ca résume exactement la vision que j’ai sur comment créer et gérer une startups mais aussi pour créer et gérer tous projets informatiques (projets perso par exemple).

Je partage tous les points de l’article mais en tant que programmeur, je suis particulièrement sensible au point numéro 8. “Commencer avec quelque chose de minimal et itérer pour l’améliorer, les usines à gaz sont un poison”. La plus part des développeurs que je connais, bien que très compétent, ont cette fâcheuse tendance à vouloir trop en faire et finalement, laisse tomber leur projet avant même d’avoir sortie une première version ou alors mette en place des systèmes exagérément compliqués qui d’après eux servira dans le futur, peu être, un jour… si si je t’assure c’est pas une perte de temps…

A lire absolument!

Mettre en avant ses valeurs

Quand une entreprise met en place des valeurs intéressantes pour les employés et/ou les clients, il est important de les mettre en avant. C’est ce que fait par exemple Atlassian :

http://www.atlassian.com/about/

J’aimerais voir plus d’entreprises en France suivre ce genre de principes!

Concours Code Ryzom

Ca y est, le concours de code de Ryzom est lancé.

Le but ? Développer la meilleure application utilisant l’openAPI web de Ryzom.

Cette API permet d’accéder très facilement, à un grand nombre d’information, en temps réel, en provenance de l’univers de Ryzom, que ca soit des informations sur les joueurs, les guildes, etc…

Un exemple d’application qui a été développé en une soirée; le générateur de bannière :

banner

C’est un système gagnant pour tout le monde ; les joueurs auront de nouvelles applications pour leur jeu favori. Les programmeurs peuvent remporter jusqu’à 3000 euro en développant une application utile et sous licence libre.

Alors faites chauffer vos claviers, vous avez 2 mois !

Getting Real

Ce n’est pas tous les jours que je lis un livre qui est aussi en phase avec ce que je pense…

Le sujet est le développement d’applications web mais cela peut très bien s’adapter à beaucoup d’autres domaines. J’aimerais voir des sociétés française qui partagent ces méthodes et cette façon de concevoir le développement logiciel! En tout cas, pour le moment, j’en ai trouvé aucune qui s’y rapproche, et c’est bien dommage!

En plus, c’est lisible gratuitement en ligne, alors je vous le conseille:

http://gettingreal.37signals.com/

Installing Redmine on Ubuntu 8.10

This time I use my blog as a notepad in case I need to reinstall redmine on Ubuntu again. Perhaps it’ll help also some people.

Go root
su

Install ruby gem
apt-get install rubygems

Since Ubuntu 8.10 uses 1.2 an redmine needs 1.3.1, upgrade gem:
gem install rubygems-update
/var/lib/gems/1.8/bin/update_rubygems


Install rails:
gem install rails -v=2.2.2

Install mysql:
apt-get install libmysqlclient15-dev ruby1.8-dev
gem install mysql


Install apache:
apt-get install apache2


Install passenger:
apt-get install build-essential libopenssl-ruby libapr1-dev apache2-prefork-dev
gem install passenger
passenger-install-apache2-module

Add the “LoadModule” line in /etc/apache2/mods-available/passenger.load
Add the 2 following line line in /etc/apache2/mods-available/passenger.conf

(optional)Install php5:
apt-get install php5

Restart apache:
/etc/init.d/apache2 restart

Ensuite suivez les instructions à partir de ‘installation’ sur le site redmine
Installation

Optimisation

++i ou i++ ? Tel est la question!

Combien de fois j’ai vu :

for(int i = 0; i {
...
}


Le plus étonnant, c’est la réponse donnée par un programmeur qui fait cela. La plupart du temps, il répond que c’est plus rapide, c’est une optimisation… Sauf que dans 99.99% des cas, si on demande combien on gagne concrètement, il ne sait pas répondre, tout simplement car c’est une optimisation pifométrique. Rien ne dit que ce code sera plus optimisé et encore moins que l’application ira plus vite.

Après, on trouve d’autres personnes qui vont plus loin :

int vsize = vec.size();
for(int i = 0; i {
...
}


J’ai même vu :

int vsize = vec.size();
for(; --vsize != 0;)
{
...
}


Le problème n’est pas l’optimisation en elle-même mais plutôt le fait d’optimiser au pif n’importe quelle partie du code quitte à la rendre moins lisible sans aucun gain réel de performance. Surtout que la règle des 80/20 est très souvent applicable. Seulement 20% du code prend 80% du temps CPU.

Si on veut vraiment optimiser du code, alors il faut le faire comme une tâche à part entière et suivre un processus simple:


  • Bencher son application

  • Détecter la fonction la plus lente

  • Optimiser la fonction la plus lente

  • Recommencer à l’étape 1



Au moins, on sait pourquoi on optimise, on a une bonne raison de rendre la fonction moins lisible et on peut donner le gain réel qui a été obtenu.

Parfois, ce n’est même pas en optimisant son code qu’on gagne en vitesse. Le dernier exemple en date a été une bonne leçon pour moi… Dans Ryzom, on a voulu changer la stl, plutôt que de prendre celle par défaut de Visual Studio 9, on a essayé STLport, pour voir. A la base c’était surtout pour tester en mode Debug et voir s’il détectait des problèmes au runtime (ce que STLport fait très bien).
En Release, on s’est rendu compte que le client Ryzom tournait 25% plus vite. C’est ENORME quand on sait que l’on a juste changé une librairie.

Alors s’il vous plaît, arrêtez de vous prendre la tête avec vos boucles for et autres optimisations locales et, si vous voulez vraiment optimiser, concentrez vous réellement sur ce qui rame.
How to remove permanently a file from subversion (SVN) repository

When you do a svn delete, in fact the file stays in the repository history and can be restored.

I had to remove some directories from a repository because they were too big so I’ll share you the process I used:

First, you need to connect to the server where the svn repository is.

We dump the repository into a file called svn_full. It’s a text file that contains all information of the repository :
svnadmin dump /PATH/TO/THE/REPOSITORY > svn_full

Then we have to filter the dumped file to remove directories you want to remove. Read this page to understand the parameters.
cat svn_full | svndumpfilter exclude --drop-empty-revs --renumber-revs /trunk/PATH1/ /trunk/PATH2/ > svn_filtered 2>log

Now the svn_filtered files is the dump files without the paths trunk/PATH1/ and /trunk/PATH2/. Check the log file that was generated to see if all files was removed as you wanted.

We have to remove the old repository:
mv /PATH/TO/THE/REPOSITORY /PATH/TO/THE/REPOSITORY_BACKUP

Create a new empty repository:
svnadmin create /PATH/TO/THE/REPOSITORY

Fill the repository with the new files:
svnadmin load /PATH/TO/THE/REPOSITORY log

Check the generated log file to see if everything want right.

You should finally copy the old config and hook files from old repository to the new one:
cp /PATH/TO/THE/REPOSITORY_BACKUP/conf/* /PATH/TO/THE/REPOSITORY/conf/
cp /PATH/TO/THE/REPOSITORY_BACKUP/hook/* /PATH/TO/THE/REPOSITORY/hook/

All your users have to checkout the new repository with a svn checkout command.

That’s all :-)

Finally, if you use redmine like me, you want redmine to update the new repository. You just have to clear (not drop) the following sql tables:
changes, changesets and changesets_issues. The next time someone will click on the “Repository” tab in redmine, it’ll regenerate all entries. If it’s too long and you have a timeout, go to the redmine directory and run the following command line to force the generation of the changes:
ruby script/runner "Repository.fetch_changesets" -e production