rss

February previsions

Category : C#, English, General, Google Summer of Code 2008, Life, Mono, Programming, School

Mono

Thanks to the change of school semester at my school, I’m going to have a break in February of almost 4 weeks during which we are supposed to participate to some activities chosen among a list.

The cool thing is that I managed to make « contributing to Mono » one of those activities. Thus, I will have 4 weeks to work on Mono and integrating SoC’s ParallelFx work into the mainline tree with the blessing of my school. Yay :-) !

FOSDEM

There are also a bunch of other nice things I will be able to do this February. Going to FOSDEM is one of those (I took the train tickets this afternoon) which mean I can now wear the pretty badge too :

I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

Unless we have trains problems on the way, we should be there for the Fosdem’s Beer Event too, so if you want to discuss Mono, ParallelFx or whatever around an (excellent) Belgian beer be sure to come by ;-) .

Prologin

Finally, I was qualified to go into the semi-finals of Prologin, the French algorithmic contest for young people, this year again. It will be a good occasion to see old faces.

For the first time there are also proposing C# as a qualification language. Hopefully, it will mean no on-the-fly C++ learning for me this time :-) .

Retour de Prologin x2

Category : Design, French, General, Life, Programming

Et voilà. Dimanche dernier c’est conclu l’édition 2008 de Prologin qui fut également ma première participation à ce concours. Comment décrire ce long week-end ? 2 idées, je pense, suffisent : éprouvant physiquement et incroyablement fun (ha… et aussi, très diététique :P ). Chapeau bas aux organisateurs pour avoir eu la force de supporter ~90 geeks en mode hard-coding pendant ces 4 jours :) .

Cette année la finale portait comme d’habitude sur un sujet d’IA. Apparemment on a été bien gâté puisqu’on a eu droit à un serveur de jeu *presque* sans bug ( ;) ) et des outils de test vraiment super (miam le launcher graphique). Le sujet complet sera probablement proposé sur le site plus tard mais en attendant voici la trame générale : chaque joueur contrôlait 3 hamsters sur une carte composé de case pouvant représentée une surface, un obstacle ou un trou. Sur certaines cases étaient disposés des pommes (je vous passe les détails cosmiques sur le pourquoi du comment du couple hamster-pomme) et le but était, bien entendu, de les ramener dans son camp (les deux lignes du haut de la carte). Bien sur il y’avait plus à faire que du simple pathfinding. Les hamsters était, entre autre, muni de grappin et pouvait projeter des trognons de pomme (stock limité) aux hamsters ennemis. Il était également possible de composer une stratégie pour faire coopérer les hamsters sur le passage d’une tranchée (assemblage de case trou) soit pour aller plus vite, soit parce que c’était la seule possibilité d’aller chercher des pommes (ce qui donnait lieu à des cartes tordus). La partie la plus dure de l’exercice était que, à chaque tour de jeu, on devait donner trois ordres à chacun de nos trois hamsters ce qui nécessitait de deviner les coups que pouvait réaliser l’adversaire pour nous barrer la route.

Au départ ma stratégie était d’aller chercher un stock de pomme suffisant pour gagner puis de le défendre farouchement contre l’adversaire mais, malgré les 36h, je n’ai pas pu mené la deuxième partie à bien. C’est pourquoi mon IA s’est borné à aller chercher les pommes de la meilleure manière possible. Néanmoins je suis assez satisfait de certains passage comme la détection des collisions et le système général de décision (bon, même si ca a été codé à l’arrache, je l’avoue). D’ailleurs, sur le point entre parenthèse, je précise que, comme on pouvait s’en douter, je n’ai pas eu accès à C# pendant la finale (bouh C++). Le point positif c’est que maintenant je peux cracher sur C++ en étant crédible :-D . Néanmoins je place beaucoup d’espoir sur la présence de C# à la prochaine édition vu que ça avait l’air de marcher pas trop mal sur le site d’entraînement (et que j’ai vu resortir un orga avec un livre C# sous le bras à la fin :-° ).

Pour conclure je dirai que j’ai été très heureux de participer, à la fois pour le plaisir de pousser mes limites mais également pour (re-)rencontrer des gens intéressants (folks de #sdz et les gens présent à Strasbourg). Notons également la bonne bouffe et le superbe tee-shirt (principe du « coding for the cotton » en application ici ;) ) .

Les photos ont commencé à arriver sur le site et on devrait bientôt les avoir toutes disponibles ainsi que les résultats finaux dans quelques semaines.

PS: Ha et j’ai aussi atterri 3ème du concours de Poker organisé pendant la finale, poker qui a encore donné lieu à d’autres super moments. Merci à l’orga-maitre de jeu pour les parties endiablés :) .

PS²: Avant de clore le billet, une petite pensée pour O’Reilly France, sponsor de Prologin, qui décidé de fermer juste après la fin de la finale. C’est une grande perte pour la littérature informatique française.

Prologin : J – 7

Category : English, Life, Programming, Quick note

Now it’s almost a week until Prologin final officially opens. I slowly started to revise about standard pathfinding and optimization algorithms this afternoon (ant colony ATM). I just hope this damned test server will let me use C# or else I’m done for learning C++ in 36 hours like last time ;) . If you want to revise just like me, Wikipedia’s articles are a good starting point.

Good and bad things

Category : Capharnaüm, DBus Explorer, English, General, Life

The good :

  • I’m going to Prologin final ! (list here).
  • PH01′s teacher is an infinite source of fun (and he works on some computer-related researches, great).
  • Did the pole commission for Lolut this week. Productive meeting. Some good things already done.
  • General refactoring for DBus-Explorer, UI should be much better too. Not yet in public repository.

The bad :

  • Got a bad road contravention, feeling bitter.
  • General sentimental disillusion (or, how to have a bad timing during a party). It sucks…

General fact :

Pingback for Antti’s post. Usually, much of my hacking time is spent at home. I like the familiar sight of my badly tided desk and posters disseminated on the walls. Working in an animated place (like the MDE at UTBM) is also a good way to get things done with simple tasks (i.e. no design) for me. However, a constant variable is the absolute need for music in the background (see my last.fm page to get an idea).

Retour de Prologin

3

Category : French, General, Life

Désolé pour le retard : travail à la bourre, rentrée, intégration et toussa

849744349_497068beb0_b.jpg
Cathédrale de Strasbourg par Pierre -M-

Petit carnet de route :

  • Départ Vendredi dernier vers 17H avec sortie à l’arrache du boulot (entre visite des turbines et séance de « au-revoir » avec tous les gens du bâtiment).
  • Arrivé deux heures plus tard à Strasbourg avec un gentil monsieur nous montre une place de parking (2€ l’heure, sic).
  • L’hôtel est juste à côté de la cathédrale de Strasbourg (photos précédente), ça fait un réveil-matin sympa.
  • Fait trop chaud dans cette chambre : peu d’heure de sommeil.
  • Je me met en branle le lendemain à 8h pour retrouver Katen devant la cathédrale (le seul point de repère viable dans Strasbourg).
  • Discutaille et attente devant le bâtiment de l’EPITA/ISEG.
  • Les orgas arrivent les bras chargés du petit-déjeuner.
  • On nous emmène via des chemins tortueux jusqu’à la salle d’exam (ce qui se révélera problématique plus tard, cf la fin).
  • Là c’est le drame, pas de café fourni avec le petit déjeuner.
  • L’épreuve papier commence (sujet dispo ici), bizarrement la combinaison « Marchand » et « Ricard » me fait penser à Dise, un copain aveyronnais (qui s’appelle Marchand et qui aime le Ricard, forcément). Sujet qui semble simple de prime abord mais je me rend compte qu’il y’a une sacré difficulté sous-jacente dans les dernières questions, je sais pas si les orgas ont fait exprès ou pas (problème d’optimisation locale ou globale avec les taux de change).
  • Entretien très sympa avec un des orgas où on parle de sujet divers et varié.
  • Retour à la salle pour voir que les tables ont été réarranger pour manger. Une bonne flammekueche (tarte flambée) au chèvre plus tard on est d’attaque pour l’épreuve machine.
  • On s’installe devant les machines, Katen, Dark-Side et moi sommes sur la même rangée (lire : je suis acculé à la fenêtre par des OCamleux).
  • Là c’est le drame² (j’irais même jusqu’à dire, « l’échec critique ») : l’interface web du centre n’autorise pas C# à contrario du site d’entraînement en ligne. Grosse panique de mon côté et franche rigolade de mes deux partenaires sdz-iens. Finalement après m’être empêtré avec Java je me tourne vers C++. Jamais l’épreuve du 42 n’aura été aussi longue (le programme du 42 consiste à faire un bête Console.WriteLine(42);).
  • L’épreuve se déroule pas mal, j’arrive plus ou moins à me dépatouiller avec les structures de donnée de la STL. Arrive l’exo du pathfinding et mon incompréhension de la technique de memoization qui y est attaché (le bruteforce récursif est passé sans problème par contre, merci Scheme). Katen, qui avait retenu le truc par coeur en OCaml, me rattrape (salaud ;) ). Finalement l’orga nous explique la chose en code. Je le met ici d’ailleurs car, même si c’est du C++ de moche, l’algo en lui même est fort sympathique :
    #include
    #include
    #include
    
    using namespace std;
    
    int cache[101][101];
    int pathfinder(int size, int **tab, int x, int y);
    
    int wrap(int size, int **tab, int x, int y)
    {
        if (cache[x][y] != -1)
           return cache[x][y];
        else
           return cache[x][y] = pathfinder(size, tab, x, y);
    }
    
    int pathfinder(int size, int **tab, int x, int y) {
        int ret1 = 0, ret2 = 0;
    
        if (x == size || y == size)
           return 0;
    
        ret1 = wrap(size, tab, x + 1, y);
        ret2 = wrap(size, tab, x, y + 1);
    
        if (ret1 > ret2)
           return ret1 + tab[x][y];
        else
           return ret2 + tab[x][y];
    }
    
    int main(void){
        int size;
        int i;
    
        int j;
        int **tab;
        int result;
        scanf("%i", &size);
        tab = (int**)malloc(size * sizeof(int *));
        for (i = 0; i < size; ++i) {
              tab[i] = (int*)malloc(size * sizeof(int));
              for (j = 0; j < size; ++j)
                       scanf("%i", &tab[i][j]);
        }
        memset(cache, -1, 101 * 101 * sizeof(int));
        result = pathfinder(size, tab, 0, 0);
    
        printf("%in", result);
        for (i = 0; i < size; ++i)
            free(tab[i]);
        free(tab);
        return (0);
    }
  • Butoir de tout le monde sur l’exo de Gégé la grenouille (à peu près le même principe que le pathfinder précédent mais avec des conditions spéciales chelous comme les cases magiques). On en profite pour aller faire un casse dalle avec ce que les gentils orgas ont préparé. Katen en profite pour draguer NellA (mouarf).
  • Fin de l’épreuve, je finis 12ème avec 435 points, ce qui est pas mal AMHA sachant que les compilations foireuses retiraient des points et que je n’avais pas de g++ en local sous la main au début.
  • Avec des « au-revoirs » aux orgas, Katen, Dark-Side et moi nous mettons en branle. Après moults insuccès dans la recherche de la sortie on remonte voir les orgas qui en profite pour nous distribuer les cadeaux qu’ils avaient oublié de déballer (un beau poster et des exemplaires de Linux Magazine dont le 100ème numéro avec un CD tout plein d’article des anciennes parutions, yay !).
  • Après avoir encore galéré pour trouver la sortie (la grande grille par laquelle on est passé le matin avait été cadenassé) on se retrouve finalement à l’air libre. De nouveau des « au-revoir » tout le monde et on entame le voyage de retour à la maison.
  • En résumé : une journée fort sympathique. Merci aux orgas pour le travail fourni. Les résultats devraient arriver courant Mars.

Sad

Category : English, General, Life

Prologin and FOSDEM turned out to be the same day. Since it’s the the last year I can participate to Prologin (which would be my only participation too) I have to forget about FOSDEM :( . Next time, next time …

PS: a great thing should happen tomorrow.

PS²: note to myself, « don’t lose your time again with software integrists »