Sam High-Tech Blog

Blog de Samuel Liard
RSS icon Email icon Home icon
  • Du nouveau ?

    Posted on janvier 8th, 2012 Samuel No comments

    Et oui 2 mois déjà sans publier sur ce blog. Après le startup week-end tout s’est un peu accéléré, j’en profite donc pour vous raconter ma fin d’année 2011.

    Code d’Armor

    Sur Lannion nous avons deux grosses entreprises Alcatel Lucent et Orange. Autour de ces 2 mastodontes gravitent pas mal de SSII et un beau vivier de startups. Il y a donc beaucoup de développeurs dans la zone. Mais pourtant nous ne nous connaissons pas, il n’y a ni cantine numérique ni aucun « User Group ». On ne se connait pas. Il y a peut-être un gars de l’autre côté de la route travaillant sur la même techno que vous et vous ne le savez pas.

    Au BreizhCamp, une phrase de Sebastien Douche m’avait marqué : « S’il n’y a pas de communauté chez vous : créez en une ! ». J’ai donc cherché des développeurs ayant la même envie que moi : créer une communauté de développeurs sur Lannion.

    Dès le début j’ai rencontré des personnes super intéressées. Les organisateurs du startup week-end, Benjamin qui a créé sa boite de developpement d’applications web, des étudiants et même des collègues d’Orange. Me sentant un peu moins seul, c’était le moment de lancer la communauté : Code d’Armor était né. Nous avons rapidement programmé la première soirée qui a eu lieu le 6 décembre. Une très bonne soirée où j’ai présenté un retour d’expérience sur différentes plateformes PAAS. On a réuni 40 personnes et leurs retours étaient très positifs. On va enchainer sur une seconde soirée mardi prochain le 10 janvier et une troisième le 7 février.

    L’objectif de Code d’Armor c’est de construire une communauté de développeurs sur la région de Lannion. Le slogan des soirées est simple : « Pour les développeurs, par des développeurs ». C’est une occasion d’échanger entre nous, de se rencontrer et de créer un réseau. C’est aussi un excellent moyen pour les développeurs de mettre en valeur leurs compétences techniques.

    On a un vrai problème en France, les boites ne savent que valoriser les postes de manager, il faut devenir chef. Pour réussir dans la vie il faut être manager, chef de projet. Votre maman ne sera jamais fière de vous lorsque vous lui expliquez que vous avez optimisé une requête SQL et que ça réduit de 30% le temps de réponse HTTP. Par contre allez lui dire que vous êtes chef de projet d’une application avec 10 développeurs et là elle va raconter à toutes ses copines : « mon fils est manager ! » avec limite la larme à l’oeil. Je ne vous parle même pas de reconnaissance financière. 10 ans d’expérience dans le développement ça ne paye pas. Un jour il va falloir finir par comprendre que développeur et manager sont deux métiers bien différents et non pas une évolution obligatoire. En plus ça nous évitera d’avoir dans nos boites des tas de managers complètement incompétents qui se retrouvent là juste pour gagner plus d’argent.

    Mais n’oubliez jamais :

    Ce sont les personnes qui font qui changent le monde, pas ceux qui font faire.

    Kidschool

    Grâce à ces nouveaux contacts, en décembre on m’a demandé de réaliser un jeu pour enfant sur iPad. J’ai vraiment adoré. L’idée venait d’une graphiste qui a fait tout le design de l’application, Benjamin l’a adapté pour l’iPad et j’ai codé le moteur du puzzle et cablé l’application.

    Téléchargez la vite !

    Il y a aussi une version Lite gratuite, mais c’est moins drôle forcément ;)

    La suite ?

    Beaucoup de nouveautés donc pour cette fin d’année 2011 et encore je ne peux pas encore vous dévoiler mes projets pour 2012 mais cette nouvelle année marquera pour moi sans doute un tournant très important. La suite au prochain post :)

    Je vous souhaite à tous une superbe année 2012 : sex, code & rock’n roll !

  • Startup Week-end Bretagne

    Posted on novembre 1st, 2011 Samuel 3 comments

    Ce week-end avait lieu le premier Startup Week-end Bretagne à Lannion. Pour une fois que ce type d’évènement arrive dans notre petit coin de Bretagne, je n’allais pas le louper !

    Le Week-end a commencé dès le vendredi à 18h30. On a débuté par deux petits jeux histoire de faire connaissance entre participants. Ensuite on est rentré dans le vif du sujet, les organisateurs nous ont expliqué comment allait se dérouler le week-end.

    Chaque porteur de projet a eu 1 minute pour présenter son projet. Il y avait 25 projets de présentés, avec par exemple :

    • Time is money : payer une personne pour faire la queue à votre place
    • GreenBanque : Banque 2.0
    • Stocker de l’énergie en montant un bloc de pierre
    • La culotte connectée
    • Beewatch : financement de ruches avec un projet pédagogique
    • Un site web d’annonce de mariage

    Donc vraiment de tout. Après ces « pitchs », les porteurs se sont retrouvés devant une affiche où ils ont écrit quelques mots sur leur projet. Chaque participant a reçu 3 post-it représentant 3 votes à coller sur l’affiche du projet qu’ils souhaitaient soutenir. C’était un moment clé du week-end, il a fallu que le porteur rabate les participants sur son affiche pour obtenir un maximum de votes. Et à ce jeu celui qui a crié le plus fort a souvent été gagnant.

    On est donc arrivé à la selection de 10 projets :

    Après est arrivée l’étape de constitution des équipes. Là encore c’était un grand moment de rabatage :) De mon coté j’ai intégré le projet GreenBanque. Déjà car c’était le projet d’un ami de Benjamin mais aussi pour le côté complètement mégalo de l’idée. Fanch et Damien étaient vraiment à fond, les entendre dire très sérieusement « il faut que l’on trouve 5 Millions d’euros » ou voir Damien appeler ses copains de la BNP m’a beaucoup fait rire. De notre coté avec Benjamin on s’est occupé de réaliser un site web et 2 jeux facebook ici et .

    Pendant 2 jours l’ambiance a été très studieuse et entrecoupée de présentations. Beaucoup de travail et peu de sommeil. J’ai fait une vidéo et des photos pour montrer l’ambiance.


    55 heures ça passe très vite. Il faut rendre le power point de la présentation avant 16h. Arrive alors les membres du jury. VIP de dernière minute : Jean-Loup Chretien. Pour la petite histoire il est venu avec son avion privé de Morlaix soit 37 km de distance. L’aéroport de Lannion a même été ouvert rien que pour lui. J’ai réussi à prendre une photo avec lui :)

    Arrive donc le moment des présentations. Les porteurs de projet ont 4 minutes pour présenter leur projet au jury et 4 minutes pour répondre aux questions. Chaque mot compte pour bien faire passer votre idée. Après délibération voici le podium :

    1. Zero_Gachis
    2. Play4Date
    3. louemoncampingcar

    Et un coup de coeur pour Beewatch, qui, pour moi, méritait largement la troisième place. Notre projet n’a pas été primé ce qui est assez logique. Nous n’avons même pas mis en avant ce que nous avons réalisé pendant ce week-end. C’est aussi le point négatif que je note : pour moi les développeurs n’ont pas vraiment leur place dans un startup week-end. A la limite un développeur HTML/CSS pour faire un site, mais rien que le design du site collé dans un slide c’est suffisant pour le jury. Il faut d’ailleurs mieux l’image d’un site qui claque qu’un site moyen mais en ligne. Il est complétement inutile de développer quelque chose pour gagner. La clé de la réussite tient en 3 points :

    • Une bonne idée
    • Un bon graphiste
    • Venir avec un groupe de copains pour être sûr que son projet soit sélectionné.

    C’est vraiment votre idée et comment vous la présentez au jury qui détermine votre réussite que vous ayez developpé quelque chose ou non. Certaines équipes arrivent même avec un service déjà codé. C’est le seul bémol du week-end, j’étais plus dans une optique de concours de développement en m’inscrivant. Je ne suis donc pas sûr de participer à d’autres Startup Week-end. Ou alors en porteur de projet. A voir pour le prochain à Rennes programmé en Mars 2012.

    La déception de cette défaite a été rapidement compensée par une très belle rencontre. Pendant le cocktail, j’ai pu discuter longuement avec Erwan Gallen. C’est le français qui a fait FaceBook avant Mark Zuckerberg en codant la première version de copaindavant, rien que ça. Je suis vraiment admiratif de son parcours. En grand fan j’ai donc pris une photo avec lui ;)

    Une dernière chose. J’ai été surpris de ne voir aucun chasseur de tête ou recruteur SSII pendant ce week-end. Les gars vous venez de passer à côté des futurs jeunes diplômés les plus motivés de Bretagne. Alors en mars vous allez au prochain Startup Week-end ou vous continuez à chercher sur ouestjob ? A bon entendeur salut !

    Liens vers d’autres retours :

  • Fuck XCode !

    Posted on octobre 27th, 2011 Samuel No comments

    Oui le titre est vulgaire, mais ça fait du bien de se défouler! Dans le précedent post j’expliquais pourquoi j’avais abandonner PhoneGap pour faire mon application. J’étais alors loin d’imaginer la galère que ça allait être en natif avec XCode.

    Notez que j’avais mis à jour mon XCode à la sortie de iOS 5 pour avoir la dernière version 4.2.

     

    Donc je me lance : « Fichier -> nouveau projet » et je tombe sur un nouveau type d’application « Page-Based Application ». Comme c’est exactement ce que je souhaite faire, je décide de le tester. A la fin de ma journée c’est plié mon application est terminée. Ca fonctionne sur le simulateur et sur mon iPhone mais juste avant de rentrer chez moi je relance rapidement un test mais avec le simulateur iOS 4.3 cette fois. Surprise, ça ne compile pas :( Et oui la classe UIPageViewController n’existe qu’à partir de iOS 5. Ok, je poubellise ma journée..

    Le lendemain je recommence un projet « Single View Application » et on me propose une option « Use storyBoard ». Ok pourquoi pas, ça a l’air plus simple de gérer ses XIB avec un storyBoard. Et donc après une demie journée de travail je termine de nouveau mon application. Et de nouveau ça ne fonctionne pas sur iOS 4.3. J’ai mis plus de temps avant de comprendre que ça venait des storyboards compatibles uniquement iOS 5. Quelqu’un peut m’expliquer pourquoi une nouvelle représentation graphique des vues ne pourrait pas générer du binaire compatible iOS 3 ??

    Donc merci Apple pour toutes ces nouveautés d’XCode 4.2, vraiment merci ! J’ai hâte de pouvoir les utiliser dans 3 ou 4 ans lorsque nos clients sauront tous au moins sur iOS 5. Car aujourd’hui nous avons encore beaucoup de clients avec des iPhones 3G qui ne passeront donc jamais sur iOS 5. Et je ne parle même pas de ceux qui ne mettent jamais leur iPhone à jour.

    Sortir aujourd’hui une application uniquement compatible iOS 5 c’est juste stupide !

    Bref ! J’ai donc recodé mes vues avec de beaux XIB et enfin mon application fonctionnait sous iOS 3 et 4. Miracle !! Je la passe donc à notre équipe de validation. 10 minutes plus tard j’ai un email « impossible de l’installer sur mon iPhone 3G sous iOS4.1″. Mince je l’ai pourtant testée sur un 3GS avec le même OS. Donc je me balade de bureau en bureau pour enfin trouver un iPhone 3G : en effet, impossible de l’installer. Après des recherches sur le net je trouve (sur ce site) les options de compilations à ajouter. Car à partir de l’iPhone 3GS l’architecture est basée sur du armv7 alors que l’iPhone 3G est armv6.

    Là c’est clair Apple a définitivement oublié l’iPhone 3G. Par défaut votre application ne fonctionnera pas sur ce terminal.

    Avec ces options j’arrive enfin à installer l’application sur un iPhone 3G ! Mais resurprise : elle se lance mais ne fonctionne pas correctement. Mes 3 vues qui étaient côte à côte dans une UIScrollView se superposent. A ne rien y comprendre. Après une longue soirée à débugguer j’ai trouvé une solution en modifiant mon code :

    if ([device isEqualToString:IPHONE_3G]) {
        frame.origin.x = 0;
        frame.origin.y = frame.size.width * i;
    } else {
        frame.origin.x = frame.size.width * i;
        frame.origin.y = 0;
    }

    Ne me demandez pas pourquoi, mais sur le 3G l’axe des X et l’axe des Y de ma ScrollView sont inversés. Je ne cherche même plus à comprendre à ce niveau…

    Je retourne donc une nouvelle version pour validation et j’ai comme retour :

    • 3G ios 4.2.1 -> OK
    • 3G ios 4.0.2 -> KO
    • 3G ios 3.1.3 -> KO
    • 3GS ios 3.1.3 -> OK

    Je tente donc un dernier changement au niveau de ma compilation. XCode 4.2 utilise par défaut le compilateur  » Apple LLVM compiler 3.0″. Je passe donc en « LLVM GCC 4.2″

    • 3G ios 4.2.1 = installation OK, et icône OK
    • 3G ios 4.0.2 = installation OK, mais icône KO
    • 3G ios 3.1.3 = installation KO

    C’est un peu mieux et cette fois j’abandonne, je vais en rester là.

    Moralité de l’histoire : réfléchissez avant de passer sur XCode 4.2. C’est beaucoup de problèmes et les nouveautés sont juste inutilisables pour le moment.

    Et oui il y a des semaines comme ça où : FUCK XCODE !

  • Premier essai de PhoneGap

    Posted on octobre 20th, 2011 Samuel 1 comment

    Dernièrement j’avais à développer une application mobile sans grosse difficulté technique. J’ai donc eu envie d’essayer de la réaliser avec PhoneGap.

    Je ne vais pas faire d’article pour expliquer comment fonctionne PhoneGap car beaucoup l’on déjà fait mieux que je ne peux le faire (comme octo par exemple) mais juste faire un petit retour d’expérience.

    La base de PhoneGap c’est de pouvoir faire des applications mobiles mutliplate-forme en développement en HTML/CSS/Javascript.

    Je ne suis vraiment pas un spécialiste du HTML et encore moins du Javascript. Mais je pense qu’il est grand temps de s’y mettre et ce petit projet est une bonne occasion.

    Je débute donc et rapidement je tombe sur un premier problème : le titre dans la nav bar en haut de page est tronqué. J’ai rapidement trouvé où changer le CSS pour corriger cela. Ouf :)

    Je développe avec Dreamweaver et c’est assez agréable. En effet il supporte JQuery et PhoneGap. Ca me permet d’avoir un aperçu direct du rendu de mon code et en 2 cliques ça me génère un projet XCode et lance directement le simulateur iPhone pour tester l’application.

    Par contre on arrive vite aux limites de Dreamweaver au moment où on utilise du javascript PhoneGap. Par exemple, j’avais besoin de gérer le changement d’état de l’application (passage en background, retour au premier plan..). Pour ça il faut utiliser la méthode :

    document.addEventListener("resume", onResume, false);

    Mais impossible de le tester dans un navigateur ou dans Dreamweaver. Ca ne fonctionne bien sûr que sur l’iPhone.

    Et là, re-problème, ma méthode onResume ne se lance jamais :( Je suis donc parti sur une longue demi-journée de debug à base de alert(« je passe là ») pour finir par comprendre que Dreamweaver utilise une ancienne version de PhoneGap ne gérant pas l’évènement « resume ». Impossible de trouver le numéro de version PhoneGap utilisé ! Et pas d’explication non plus sur comment utiliser une autre version. J’ai même bêtement intégré le fichier phonegap-1.1.0.js dans mon projet : marche pas car c’est la lib PhoneGap du projet XCode généré qu’il faut changer.

    J’ai donc fini par abandonner la génération PhoneGap intégré par DreamWeaver. J’utilise PhoneGap normalement dans XCode et Dream ne me sert que d’éditeur de texte car la complétion et l’aperçu c’est quand même bien pratique.

    J’avais l’impression d’avoir réalisé le plus dur. Il me restait à ouvrir une simple petite fenêtre popup. Et là, catastrophe, le rendu sur un navigateur est différent de celui sur l’iPhone. Plus grave la transition au moment de la fermeture de la popup fonctionne si elle est ouverte depuis la première page mais pas depuis les autres. Je pense que c’est un problème JQuery et pas PhoneGap puisque je constate le même problème sur un navigateur.

    Comment faire pour débugger ??

    C’était trop pour moi, j’ai préféré abandonner et repasser sur de l’Objective-C. En une journée j’ai refait ce que j’avais mis 3 jours à faire en Javascript (normal, je maitrise mieux) et hop ça marche !

    Donc non PhoneGap ne m’a pas convaincu. En fait pour être plus juste, c’est plus le Javascript qui m’a bloqué. Déjà je n’ai pas assez d’expérience avec ce langage, mais c’est surtout une vraie galère à débugger !

  • Formation XHTM ou la fausse bonne idée

    Posted on septembre 28th, 2011 Samuel No comments

    Après avoir pas mal développé sur iPhone j’ai eu envie de me mettre à niveau sur HTML et CSS. En Juin j’ai donc suivi 3 jours de formation sur ces technos. C’était vraiment pro avec un formateur très bon. Avec ces bonnes bases j’ai eu envie d’aller encore plus loin et regarder comment réaliser des sites Web pour mobiles. Fort de cette bonne expérience de formation j’en ai cherché une autre. J’ai trouvé :

    Réaliser des sites WEB multi plateformes (Iphone, Android, BlackBerry, …)

    Une formation de 5 jours, ça me parait un peu long mais pour entrer dans les détails c’est peut-être normal. C’est Eric Sarrion qui fait cette formation en utilisant son livre « XHTML/CSS & JavaScript pour le web mobile » comme plan de cours.

    XHTML/CSS & JavaScript pour le web mobile

    Le début d’une formation ce n’est jamais simple. Ca va soit trop vite ou pas assez. Je le sais bien donc j’ai accepté de prendre du temps pour faire une liste avec ul et utiliser des div. Mais je suis un peu étonné par certaines réflexions du formateur, du style :

    • Une div n’aura pas de mitoyenneté sur les côtés droit ou gauche (citation du livre !)
    • A la question « comment catcher une exception en Java Script ? » il répond « non mais faut pas en faire des exceptions ! »… ok pas bête :/
    • Ecrivez juste <p id=toto, les guillemets autour du nom ne servent à rien
    • Non mais ce tag HTML il ne sert à rien.. Moi je l’ai jamais utilisé
    • Non mais la complétion pour écrire du javascript et du HTML ça sert à rien
    • Non mais les DOCTYPE ça sert à rien

    Je reste donc un peu scotché par ses réponses. Déjà Eric ton livre s’appelle  XHTML/CSS. J’ai bien dit XHTML, regarde la définition sur wikipedia :

    XHTML, est un langage de balisage servant à écrire des pages pour le World Wide Web. Conçu à l’origine comme le successeur d’HTML, XHTML se fonde sur la syntaxe définie par XML, plus récente, mais plus exigeante que celle définie par SGML sur laquelle repose HTML

    Donc merci de remettre les doubles cotes sur tes params et d’ajouter des Doctype dans tes fichiers. J’ai d’ailleurs du mal à comprendre comment un éditeur comme Eyrolles peut laisser passer ce genre de bêtises.

    Autre chose qui me gène, j’apprends que l’on va passer 1 journée à générer des applications natives (iOS et Android) avec PhoneGap. Pourquoi pas, sauf que ce n’était pas noté sur la description de la formation et que ça ne m’intéresse pas, enfin disons que je ne suis pas venu pour ça.

    Je suis donc un peu (beaucoup) mitigé après cette journée… Je décide d’attendre la seconde on ne sait jamais.

    Malheureusement la seconde journée n’est pas beaucoup plus instructive. Le moment le plus intéressant a été le repas du midi ou j’ai rencontré un collègue pour discuter boulot. A propos des repas Eric, lorsque tu emmènes tes élèves au restaurant le midi, c »est mieux de discuter avec eux que de regarder le 13h de Pernaut à la télé…

    J’ai donc rapidement compris que je n’allais pas avoir les réponses à mes questions pendant cette formation :

    • Comment gérer le changement d’orientation de l’appareil
    • Comment choisir le CSS en fonction du mobile
    • Comment gérer la taille de l’écran du terminal

    La fin de la seconde journée a été décisive, la goutte d’eau comme on dit. Au moment où un autre élève soulignait qu’il avait d’autres attentes (un peu comme moi), on a eu droit à un monologue d’Eric absolument hallucinant. Une séance d’auto congratulation pitoyable, je cite : « tout le monde adore cette formation ! », « A la fin on s’embrasse tous », « je suis invité partout pour en parler ». On rêve.

    Bref, j’ai donc pris mes affaires pour rentrer à la maison plus rapidement.

    Alors attention, je n’ai pas la prétention de dire que cette formation est nulle. C’est loin d’être le cas. Mais elle n’est pas adaptée aux personnes avec un peu d’expérience, c’est plus pour les débutants. De mon côté j’ai aussi fait des erreurs en choisissant cette formation. Une ligne aurait du me mettre la puce à l’oreille : « Profils : Développeurs et chefs de projet », j’aurais du savoir que ça n’allait pas être assez technique :)

    Mon seul regret est de ne pas être là à la fin car Karen nous aurait sûrement préparé un gâteau bio !

  • Active MQ dans le cloud – suite

    Posted on juillet 27th, 2011 Samuel No comments

    Comme vous avez pu le lire dans le précédent article je n’étais pas arrivé au bout de l’exercice pour déployer ActiveMQ sur des offres PAAS. Et bien c’est chose faite, ça marche ! :)

    Mon erreur a été de me focaliser sur un problème réseau entre les VM (configuration, firewall…) En fait le problème était au niveau de l’ouverture des sockets. J’ai donc modifié le code du TCPConnector d’Active MQ pour l’adapter à mes contraintes.

    Il faut juste changer le bind dans org.apache.activemq.transport.tcp.TcpTransportServer

    public void bind() throws IOException {
      URI bind = getBindLocation();
    
      String host = bind.getHost();
      host = (host == null || host.length() == 0) ? "localhost" : host;
      InetAddress addr = InetAddress.getByName(host);

    en

    public void bind() throws IOException {
      URI bind = getBindLocation();
    
      InetAddress addr = InetAddress.getLocalHost();

    C’est plus restrictif, mais suffisant pour mon cas.

    J’ai repackagé cela dans un protocole tcpcloud et hop ça fonctionne sur cloudbees du premier coup. Maintenant ma charge est partagée sur les n instances (n=2 pour le moment comme j’utilise l’offre gratuite).

    Pour CloudFoundry j’ai eu un peu plus de mal car même si je note dans le fichier de config « localhost », il passe le nom de la machine au runtime. Ca doit être le même système qui remplace l’url et le login/pass de la base de données. Ce côté un peu magique me dérange. Je dois aussi dépendre de leur lib cloudfoundry-runtime pour trouver l’adresse IP de la VM. En plus leur beau plug-in eclipse ne fonctionne pas sur Eclipse Indigo :(

    Je vais pouvoir partir en vacances sereinement ! ;)