dopop

Je me suis lancé depuis quelques semaines dans un nouveau projet. Il s’agit d’une application iPhone qui regroupera plusieurs jeux en rapport avec l’apprentissage du solfège, mais réalisés comme des jeux d’arcade pour ne pas être ennuyeux.

Je vous laisse jeter un œil au site consacré au jeu: dopop.net.

Open Street Map: édition

Comme je vous le disais dans le billet d’introduction à OpenStreetMap, nous disposons aujourd’hui de nombreux outils pour éditer les plans. Aussi, il ne tient qu’à vous de commencer à compléter votre ville. Voyons trois de ces outils.

Il vous faudra un compte

Quel que soit l’outil choisi, il vous faudra créer un compte pour pouvoir éditer les cartes. S’agissant d’un outil collaboratif, vous comprendrez qu’il est nécessaire d’attribuer à chacun ses modifications, ne serait-ce que pour se prémunir des vandales. Vous disposerez également d’un historique de vos modifications et pourrez téléverser les traces GPS sur le site.

L’éditeur intégré à OpenStreetMap

Un tout nouvel éditeur intégré a fait son apparition. L’ancien outil était assez limité (il convenait pour renommer une rue, mais pas guère plus), et utilisait Flash, donc était inaccessible aux appareils mobiles.

Le nouvel éditeur propose les outils de base: ajout de points, de lignes et polygones, et balisage de ces éléments. Comme le fond de carte de Bing apparait pendant l’édition, nous disposons à présent d’un outil qui répond à la plupart des besoins.

Pour l’utiliser, rendez-vous sur la page d’accueil d’OpenStreetMap, et cliquez sur l’onglet Modifier. Un petit tutoriel est même présent pour vous expliquer les principes.

JOSM

Cet outil servira aux cartographes plus avertis. Par exemple, vous pourrez importer les données du cadastre français et changer le type de projection. Il est aussi utile si vous cartographiez massivement, puisqu’il dispose, par exemple, d’outils qui permettent d’importer des photos (pour noter comment s’appellent les rues ou les magasins), puis de synchroniser leur heure avec une trace GPS, ou un fichier audio.

Vous trouverez JOSM ici.  L’outil est écrit en Java, et est lourd. Par ailleurs, il est très mal adapté à la souris du Mac.

Pour finir, il y a un concept à comprendre: pour commencer l’édition, JOSM demande de délimiter une zone, qui ne doit pas être trop grande, de l’ordre de 3 x 3 km.  Il va ensuite charger tous les éléments (points, polygones…) qui se trouvent dans cette zone. On travaille alors hors-ligne, et c’est quand on a fini notre travail que JOSM vérifie qu’il n’y a pas d’incohérences, et qu’on peut enfin envoyer les données à OpenStreetMap.

Go Map!!

Pour finir, une application pour iPhone et surtout iPad, bien fichue et qui présente les outils essentiels. En pratique, travailler avec cette appli me semble plus lent qu’avec un ordinateur de bureau, mais la géolocalisation est bien pratique pour pouvoir éditer les cartes sur place.

Introduction à OpenStreetMap

Qu’est-ce que c’est ?

Pour commencer, mieux vaut vous rendre sur OpenStreetMap.org. Vous y verrez une carte.

Comme vous avez déjà certainement utilisé des services tels que Google Maps, Mappy ou Bing, vous pouvez vous demander ce que celui-ci a de différent: il est collaboratif. Ainsi, ce sont des gens comme vous et moi qui ont saisi les cartes. OSM est donc aux cartes ce que Wikipédia est aux encyclopédies.

Est-ce utilisable ?

Pour être honnête, je dirais que pas encore. Il faut bien comprendre qu’OSM se nourrit des informations saisies par des bénévoles, et donc certaines zones — en particulier denses et urbaines — sont bien renseignées, alors que d’autres ne font apparaître que les grands axes routiers et ferroviaires.

Le projet a démarré en 2004, et le travail accompli est formidable. Le mouvement devrait s’accélérer, parce que, vous le verrez dans les prochains articles, contribuer est aujourd’hui facile. Par ailleurs, de nouvelles sources de données sont apparues. Ainsi, l’ami Crosoft permet à OSM d’utiliser les photos satellites de Bing (j’ai cru comprendre qu’il faisait surtout cela pour ennuyer Google…) et nous pouvons depuis peu utiliser les données du cadastre français.

Pourquoi contribuer ?

J’ai pour ma part deux raisons de contribuer. La première est qu’il s’agit d’un acte citoyen. On a souvent besoin de cartes, que ce soit pour voyager, se rendre chez des amis, préparer un trajet professionnel ou une randonnée. Actuellement, ces données sont détenues par une poignée de sociétés ou d’organismes gouvernementaux qui limitent leur accès pour des raisons stratégiques ou financières.

La seconde raison est qu’il s’agit d’une source de richesse. Ces données libres ouvrent la voie à de nouvelles applications qui ne pourraient pas exister autrement, que ce soit parce que les données ne seraient pas accessibles, ou parce qu’elles seraient trop chères.

Je m’y suis mis il y a quelques jours

Je m’étais intéressé à OSM il y’a quelques années, mais il m’avait semblé qu’y contribuer était trop complexe. Par exemple, il fallait installer un logiciel sur son GPS de voiture pour connaître les routes existantes (créer des traces).

Aujourd’hui, avec le GPS d’un iPhone, on peut tracer sa route et l’envoyer facilement à un ordinateur. On peut aussi prendre des photos géolocalisées pour noter les endroits remarquables.

Nous verrons aussi dans les prochains articles que l’utilisation des outils logiciels est assez simple.

Programmation et cyclisme

Je vois souvent des messages sur les forums des débutants en programmation demandant “Quel est le meilleur langage de programmation ?”

– “le C. C’est la base, tous les langages sont basés dessus”, écrit un premier.

– “il faut apprendre un langage objet, par exemple Java”, explique un deuxième.

– “ces langages sont dépassés, Ruby c’est mieux”, rétorque un troisième.

 

Pour faire un parallèle avec le cyclisme, c’est comme si vous demandiez “Quel est le meilleur vélo ?”

– “le vélo de route. C’est très stable et rouler exige peu d’efforts, c’est génial pour avaler les kilomètres”, dirait un premier.

– “non, le VTT. Ça permet de se rendre vraiment partout, et de contourner les obstacles”, rétorquerait un deuxième.

– “je ne jure que par le vélo de ville”, répondrait un troisième, “ça évite de salir mon pantalon, et je peux le garer facilement”.

– “mais, non, le plus rapide, c’est le vélo de piste”, dirait le dernier.

Vous comprenez bien qu’il n’y a pas de vélo idéal. Si vous deviez conseiller un vélo à quelqu’un qui n’y connait rien, probablement lui recommanderiez-vous un VTC. Un vélo plein de compromis, avec lequel personne n’a jamais gagné de course ! Mais au moins, il pourrait en faire dans la majorité des situations, et sans efforts démesurés.

Pour en revenir à la première discussion, elle se termine généralement par l’arrivée d’un programmeur expérimenté qui demande “ça dépend, un langage pour faire quoi ?”. Comme les vélos, s’il existe tant de langages différents, c’est parce qu’ils répondent à des besoins différents.

Et quel serait le langage VTC ? Quelque chose comme Python, je dirais.

 

 

Faut-il se former soi-même ou par un organisme ?

Lorsqu’on souhaite se mettre à une technologie qu’on ne maîtrise pas encore, il existe deux voies pour se former:

  1. Se former soi-même.
  2. Suivre une formation dispensée par un organisme.

En auto-formation

Au niveau du prix, le calcul est simple:  il s’agit du prix des supports, tels que les livres ou les abonnements à des sites web et autres achats de vidéos. Ça peut même être gratuit.

Pour ce qui est du temps passé, cela est souvent difficile à quantifier, parce qu’il ne se réduit pas  au temps de lecture ou de visionnage: il faudra aussi essayer des choses, et surtout se tromper. Cela prend un temps dingue !

Notez bien que ce mode de formation est tout à fait envisageable; je me suis moi-même formé à iOS de cette manière. D’ailleurs, une formation par une organisme ne peut pas couvrir tous les sujets, et le recours à des livres sera indispensable pour tout sujet un peu pointu.

Passer par un organisme de formation

Le coût

Il n’y a pas de mystère, le coût d’une formation dispensée par un organisme est élevé, parce que l’organisme doit payer le formateur, son personnel, la logistique et ses locaux. En dehors du prix de la formation, le client doit également payer son employé pendant qu’il se forme; il n’est donc pas productif durant la durée de la formation. Des frais annexes, tels que des frais d’hôtel ou de déplacement peuvent aussi s’ajouter.

Cela dit, si l’organisme de formation est conventionné, le fond de formation de l’entreprise pourra prendre à sa charge tout ou partie du prix de la formation. Je m’explique. D’après ce que j’ai compris, toute entreprise ayant des employés doit s’acquitter de la taxe d’apprentissage, mais peut déduire une partie si elle les place dans un fond. De fait, une entreprise a plutôt intérêt à utiliser le fond et former son personnel. Elle ne paie donc pas la formation “plein pot”.

(Soit dit en passant, l’existence de ces fonds explique pourquoi la formation est une activité plutôt lucrative en France. Puisque la formation “ne coûte rien” à l’entreprise, elle n’est pas trop regardante sur les tarifs. Je dirais que c’est aussi ce qui permet d’accueillir les stagiaires dans les meilleures conditions).

Le temps

Le gros avantage de la formation par un organisme se situe au niveau du temps. La formation classique que je donne dure cinq jours, et les stagiaires sont toujours étonnés de sa densité. Ils vont gagner beaucoup de temps parce que:

  • je les mets sur les bons rails dès le départ.
    Les stagiaires arrivent avec un bagage technique et donc des idées pré-conçues. Mon rôle est de leur inculquer la culture de cette technologie, ce qui leur évite d’utiliser des techniques familières mais inefficaces.
  • j’insiste sur ce qui est important.
    Il existe des principes incontournables (pour Cocoa Touch, c’est le MVC et la délégation) que les stagiaire doivent maîtriser. Ignorer ces principes génère des questions qui n’ont pas de raison d’exister.
  • le retour est immédiat.
    Il est normal de se tromper, cela fait partie intégrante de l’apprentissage. Seulement, il n’est pas rentable de rester bloqué sur un point de détail pendant des heures. Le formateur peut fournir rapidement un remède et proposer des alternatives techniques.
  • la formation est cohérente.
    Si les stagiaires sont là pour apprendre une technologie, il est important de faire un lien avec la méthodologie. Dans mes formations, nous cernons d’abord le problème et nous voyons comment implémenter une solution technique. Cet aspect est essentiel pour apporter de l’autonomie au stagiaire. Il s’agit du gros point faible des livres et autres supports, qui donnent des recettes, mais n’expliquent pas comment les imbriquer pour obtenir une application complète.
  • on sort du quotidien.
    Les stagiaires vont disposer d’une semaine rien qu’à eux, débarrassés du mode projet, et des requêtes des clients.

En conclusion

Vous aurez compris que pour moi, faire appel à un organisme de formation est plus avantageux dès lors que le temps est un critère important. Je vois trop de personnes sur les forums qui essaient de se former par eux-mêmes, dans des délais irréalistes, parce qu’on leur a demandé de programmer le prochain Instagram en deux mois !

Une formation fait gagner du temps sur le court terme, en rendant rapidement le salarié opérationnel, et sur le moyen terme, en assurant une certaine qualité du travail, qui n’aura pas trop besoin d’être repris par la suite.
Sur le long terme, une formation ne sera pas suffisante, et il sera de toute façon nécessaire de se documenter et de tester des points particuliers.

 

 

Parallèle entre la conduite et le développement logiciel

Un développeur logiciel chevronné mais qui venait de se mettre au développement sous iOS me demandait —avec quelques craintes — si un débutant avec quelques mois d’expérience pourrait être plus doué que lui.

Avant d’apprendre à conduire une voiture, on pense que la difficulté réside dans la manipulation des commandes: comme il semble compliqué de tourner le volant tout en appuyant sur les pédales et en actionnant le commodo du clignotant ! Voilà qui exige beaucoup de coordination pour ne pas entrer en collision avec les autres véhicules.

Après quelques semaines de conduite, on sait que la difficulté se trouve ailleurs: il s’agit  essentiellement d’anticiper, de comprendre les intentions des autres usagers de la route et d’adapter ses gestes et sa vitesse pour éviter les obstacles et s’insérer dans le trafic.

Un conducteur aguerri qui changerait de type de véhicule — disons qui passerait de la voiture au scooter — serait bien évidemment déboussolé dans un premier temps, ne serait-ce que par l’équilibre, le placement des commandes, et les capacités d’accélération. Mais il s’y ferait rapidement, parce qu’il maîtrise les fondamentaux de la conduite.

Cela pour dire qu’un développeur expérimenté qui se mettrait au développement sous iOS serait désorienté au départ, peut-être par le langage Objective-C, le tactile, les multiples classes ou Xcode. Mais les fondamentaux sont déjà là: savoir gérer la complexité, trouver son chemin dans la documentation, avoir une méthodologie. Il peut s’attendre à être bon en deux ou trois mois.

Un débutant peut parvenir à créer une application et la publier sur l’App Store. Mais certainement pas une application seulement un peu complexe. Il lui manque trop de fondamentaux.

Quelles versions du système d’exploitation cibler ?

En tant que développeurs, voici une question à laquelle nous sommes confrontés à chaque fois que nous lançons une nouvelle version d’une application: sous quelles versions du système d’exploitation devra-t-elle tourner ?

Accès aux dernières API

Lorsque j’ai lancé PortraiMatic pour Mac, le logiciel exigeait Mac OS 10.4, alors le tout récent système d’Apple. Sur les forums, des développeurs m’ont demandé pour quelle raison technique il ne tournait pas sous 10.3. Après tout, le logiciel était faisable sous 10.3. J’ai répondu par une autre question: “et pourquoi il ne tourne pas sous 10.2 ?”, puis “et pourquoi il ne tourne pas sous 10.1 ?”, et (quitte à être lourd jusqu’au bout) “et pourquoi il ne tourne pas sous 10.0 ?”. Inutile d’aller jusqu’au Système 7, vous avez saisi. Si j’ai tourné cette question en ridicule, c’est parce qu’elle sous-entend que c’est la faisabilité technique qui impose les versions d’OS ciblées. Or, PortraiMatic est sans doute faisable même sous Système 7. Dès lors, la question peut être mieux posée ainsi: “Quelles API utilisées n’existent que sous Mac OS 10.4 ?”. Cette question a une réponse: j’ai utilisé les CGLayers, qui permettent d’afficher rapidement des blocs graphiques. J’aurais bien pu trouver une alternative technique, comme utiliser OpenGL, mais j’avais là un outil facile et rapide à mettre en œuvre. J’ai donc sacrifié la compatibilité pour gagner du temps et simplifier mon code.

D’autres raisons de lâcher la compatibilité

Je n’ai pas de statistiques, mais je peux affirmer sans trop me tromper qu’il y a actuellement un bon pourcentage de Mac sous 10.6, la majorité sous 10.7, quelques-uns sous 10.8. Donc, pour toucher le maximum de clients, il faudrait qu’un logiciel soit compatible avec ces trois versions. Malgré cela, si je lançais une nouvelle application aujourd’hui, elle exigerait 10.8. Voici les raisons.

  • Être compatible n’est pas seulement se limiter aux API d’un OS, mais aussi tester entièrement l’application sous cet OS, et corriger les écarts. Mon expérience est que la compatibilité ascendante est rarement défaillante. Par contre il y a des différences graphiques pour lesquelles il faut compenser, par exemple en décalant un bouton de quelques points. C’est souvent moins beau, et c’est toujours du travail inutile.
  • Il faut nécessairement maintenir des ordinateurs sous toutes les versions de l’OS. D’abord pour tester, mais aussi reproduire les problèmes soulevés par les utilisateurs. Je commence à manquer de place dans mon bureau.
  • Apple ne nous simplifie pas la vie. Ainsi chaque nouvelle version de Xcode peut retirer un vieil SDK; il faut donc passer au SDK plus récent, mais on n’est plus averti de l’absence des méthodes dans le vieil SDK… Apple peut aussi retirer des cibles de compilation; par exemple, Xcode 4 ne peut pas compiler pour PowerPC, je suis obligé d’utiliser Xcode 3.2.5 sous 10.5 et de bidouiller.
  • Et comment fait Apple pour assurer la compatibilité ? Très simple: ils ne font pas ! Ils exigent souvent les dernières versions de Mac OS X pour leur logiciels.
  • Tous les utilisateurs ne se valent pas. Si on faisait des statistiques, on verrait que ceux sous 10.8 passent plus de temps dans le Mac App Store. Ceux qui sont restés sous 10.6 n’y vont probablement jamais. Or, les early adopters sont les plus à même de faire progresser un nouveau logiciel en dialoguant avec le développeur.
  • Pour finir, les statistiques évoluent: dans deux ans, on en sera peut-être à Mac OS 10.10, et 10.8 sera ringard.

Retour d’expérience sur PortraiMatic

Quand j’ai abandonné la compatibilité avec 10.4, je m’attendais à des remous. En fait non ! Peut-être un message ou deux pour me dire que c’était dommage, et même pas de la part de mes premier clients (qui eux avaient déjà changé d’OS).

PortraiMatic est encore compatible avec 10.5, avec grand mal. Toutes les semaines, je reçois un message de quelqu’un qui me demande s’il fonctionne sous 10.5, et je réponds que oui, mais qu’ils ne pourront pas l’acheter, parce qu’il n’est vendu que sur le Mac App Store, qui exige un OS 10.6. La compatibilité n’est assurée que pour les anciens utilisateurs puissent profiter des mises à jour. Mac OS 10.6 ne tourne pas sur un Mac PowerPC, alors mettre à jour l’OS est impossible sans changer d’ordinateur.

La prochaine mise-à-jour exigera Mac OS 10.6. Je n’ai pas le temps de tester sous 10.8, 10.7, 10.6 et 10.5. Il arrive un moment où il faut être réaliste et décider de comment utiliser au mieux les ressources de sa petite société. Rester compatible avec une minorité d’ordinateurs n’est pas un bon investissement de ces ressources.

Live Code iOS: résumé de la soirée

Comme je vous l’avais indiqué, le jeudi 26 juillet avait lieu le premier Live Code iOS, au théâtre Auguste à Paris.

PhotoRenaudSeul

Avec BeMyApp, nous nous étions mis d’accord pour présenter un petit jeu, dont voici le principe:

PrincipeDuJeu

L’écran défile vers la gauche, la balle restant calée à gauche. Toucher l’écran la fait bondir; le but du jeu est de parcourir la plus longue distance en évitant qu’elle ne touche les pics.

Le syndrome du peintre qui refait sa toile

Lorsque j’ai annoncé l’événement, j’ai également expliqué que le programme était déjà codé. Mon objectif d’alors était de bien cerner le problème, d’anticiper les questions techniques, et surtout, de trouver les raccourcis pour que cela ne dure qu’une heure. Parmi les remarques qu’on m’a faites, l’une m’a paru particulièrement juste: “Alors, c’est un peu comme si un peintre avait déjà peint une toile et devait refaire exactement la même en public”. Nous avons donc pris la décision que ce ne serait pas moi qui coderais, mais des gens du public.

PhotoRenaudEtMichael

Je tiens à remercier les trois volontaires pour qui ce fut pour le moins stressant ! Ils se sont bien débrouillé et beaucoup impliqué. Il y eu un vrai moment de flottement, avec un problème difficile à résoudre, faisant intervenir des mathématiques et de l’algorithmique. À cet instant, je me suis demandé si nous y parviendrions, mais c’est le moment où le public fut le plus impliqué!

Finalement, cela a montré le vrai travail de programmeur: il y a parfois des obstacles, mais en s’accrochant on y arrive.

Pari tenu ?

Les objectifs étaient de coder en une heure un jeu jouable et intéressant. Je dois admettre que le pari ne fut techniquement pas tenu. Nous y avons passé 1h30, le jeu est trop facile parce que la balle peut être maintenue en l’air, et il faut relancer le jeu par Xcode en fin de partie.

PhotoFin

Si vous disposez de Xcode, vous pouvez essayer vous-mêmes: Le code source du jeu codé pendant l’événement. Le code source de celui que j’avais préparé.

En conclusion

Le but de ce genre d’événements est de créer un esprit communautaire et d’ouvrir l’esprit à de nouvelles techniques. De ce point de vue, ce fut une réussite, d’autant plus que j’ai eu de bons échos de cette soirée. Un deuxième Live Code sera sans doute organisé à la rentrée.

TeleLineo 1.1

Il y a quelques mois de cela, je profitai d’un week-end pour créer une application complète. Pour rappel TeleLineo est la version numérique d’un célèbre jouet où on dessine en actionnant deux molettes qui déplacent une mine. J’avais relaté son développement éclair ici même. Depuis quelques jours, je me suis remis au travail afin de corriger plusieurs défauts de la première version.

Les graphismes avaient constitué l’essentiel du temps de développement. Pour autant, je les ai repris entièrement pour cette nouvelle version, parce qu’entre temps, l’écran Retina du Nouvel iPad est apparu. Il fallait donc tout redessiner au double de la résolution. Heureusement, j’ai récemment remplacé mon ancien logiciel de dessin vectoriel par Sketch, qui est bien mieux adapté et m’a fait gagner beaucoup de temps, tout en m’offrant un meilleur rendu.

Icône de l’application

L’icône de la première version avait été faite rapidement en bricolant l’image de l’écran principal puis en rajoutant les images des molettes par-dessus:

AppIcon1_0

L’icône de la version 1.1 a été dessinée à part, mais demeure très similaire:

AppIcon_1_1

Finalement, je considère que l’icône représente bien l’application, et j’ai conservé l’idée générale, en soignant les détails.

Écran principal

La couleur bleue, la taille de l’écran et l’emplacement des molettes étaient des choix de conception.

SnapshotTeleLineo

 

De fait, l’apparence est quasiment la même:

Bateau_v1_1

Quelques détails ont été changés, tels que l’ombre sur l’écran. J’ai remplacé le titre, qui était un simple texte, par du graphisme. Une icône, en haut à droite fait aussi son apparition. Elle permet d’enregistrer le dessin dans l’album photo. Vous pourrez ainsi conserver vos œuvres ! Voilà enfin un avantage à utiliser la version numérique.

Écran d’informations

J’avais réalisé un écran d’information en 30 mn chrono pour la version 1:

LineoInfo

Le nouvel écran m’a pris une demi-journée à réaliser:

EcranInfo_v1_1

Ce temps assez long s’explique par le dessin de l’illustration de secouement de l’iPad, et parce que l’écran n’est pas fixe. Je m’explique: il ne s’agit pas d’un simple graphisme que j’aurais collé. L’ombre du fond est une image étirable, de même pour l’image du bouton. C’est plus long à réaliser mais c’est plus flexible. J’admets que ce n’était pas forcément nécessaire, mais je voulais y travailler pour de prochains projets.

Pour télécharger

TeleLineo.com.