Categories
français

(Encore un article sur) le retrait de l’application Appgratis

Comme vous avez sans doute pu le lire à divers endroits, l’application Appgratis a été supprimée la semaine dernière par Apple.

Si, comme moi, vous ne connaissez ni l’application ni son site web, rappelons qu’il s’agit d’une application qui répertorie tous les jours des applications gratuites «sélectionnées». Comme l’application disposait d’une audience significative, elle avait la faculté d’influencer — de façon artificielle — sur le nombre de téléchargements d’une application et par conséquent sur son classement sur l’App Store. D’où son retrait.

Ce sont les événements qui ont suivi qui m’ont intéressés: une plainte publique de la part du dirigeant d’Appgratis, suivie de l’intervention de Fleur Pelerin, la ministre de l’Économie numérique.

L’affaire Coyotte

Cette affaire a éveillé en moi un parallèle avec une autre affaire: celle des avertisseurs de radars. Quand les radars automatiques ont été mis en place, le législateur a laissé la liberté de rendre publics leurs emplacements. L’idée dominante de la loi est qu’un radar a pour vocation de sécuriser une zone; ainsi, que les usagers de la route soient avertis de sa présence les incite à ralentir, et la sécurisation de la zone est assurée.

Peu après est apparu le célèbre Coyotte, un avertisseur de radars français qui embarquait une liste des radars. Je voudrais  faire une mise au point: quand on est chef d’entreprise, on rencontre des opportunités et on décide s’il est judicieux de les saisir ou non. Dans le cas de Coyotte, les dirigeants ont vu l’opportunité de créer un avertisseur de radars et savaient que le marché était juteux. D’un autre côté, ils savaient que la législation risquait de changer, mais ils ont quand même tenté leur chance, parce qu’ils espéraient profiter de la manne au moins quelques années.

Ce qui devait arriver, arriva. Sous la pression du ministère des finances des associations contre la violence routière, le gouvernement semblait enclin à interdire les avertisseurs de radars. Or, ce changement de position était prévu dès le départ par Coyotte, aussi avaient-ils déjà préparé leur défense, avec un argument simple: modifier la loi mettrait fin aux activités de Coyotte, aux emplois de ses salariés, des ses sous-traitants, et à l’activité indirecte générée.

Si un ministre avait vocation à se positionner sur des questions de société, un choix aurait été fait: soit interdire les avertisseurs de radars, pour renforcer la sécurité routière quitte à perdre quelques emplois, soit continuer à les autoriser, ne remettant pas en cause l’esprit initial de la loi et préférant la liberté individuelle. Mais un ministre a plutôt vocation à trouver un consensus mou.

Au final, il fut décidé de ne pas décider: les « avertisseurs de radars » sont devenus des « avertisseurs de zones de danger », zones qui incluraient les zones où se trouvent les radars, et une liste d’autres zones qui serait publiée, eh bien… un jour peut-être.

L’affaire Appgratis

Ce détour par l’affaire Coyotte m’amène à faire un parallèle avec Appgratis. Au départ, Appgratuites est un simple blog qui parle des nouvelles applications iPhones gratuites. L’audience devenant croissante, les éditeurs d’application sont devenus prêts à payer pour apparaître sur le blog. Voilà pour l’opportunité, que le dirigeant d’Appgratis a fort bien exploitée.

Mais, il savait forcément qu’il y avait un risque: comme cette forte audience modifie artificiellement les classements de l’App Store, Apple pouvait prendre la décision de retirer leur application pour rééquilibrer la situation.

Le jour où l’application est finalement retirée, Appgratis exécute son plan, forcément préparé depuis longtemps: faire le maximum de bruit. Soyons clairs, il est improbable qu’Apple revienne sur sa décision, et cette plainte publique ne la fera pas changer d’avis. Contrairement à un ministre, Apple se moque pas mal que quelques français perdent leur emploi, n’a pas à trouver de consensus, ni entreprendre des pourparlers. Par contre cette affaire permet de faire causer la presse et les blogs (comme le mien!) et faire découvrir Appgratis, qui va finalement proposer une autre solution technique pour présenter les  applications.

La question subsidiaire est: Que vient faire Fleur Pelerin dans cette histoire ? Eh bien, son boulot de ministre. Elle sait elle aussi qu’Apple ne va pas plier devant des menaces de porter plainte devant le commission européenne, mais elle ne veut pas être taxée d’inaction. Aussi lui faut-il défendre le gentil Appgratis de la méchante Apple. Au moins, si Appgratis venait à fermer boutique, elle aura fait ce qui était en son pouvoir.

 

 

Categories
english

Add git tracking to an existing Xcode project

When creating a new project on Xcode 4, you are given the opportunity to activate git versioning  for this project.

You might have not checked this option in the first place and wish to add git tracking to the project later. Here is how to do it:

1) Open a Terminal window and go to the Project’s directory (the one that contains the .xcodeproj).

2) Type

  • git init

This adds git version control to the directory and creates a .git repository. The project is now under version control.

3) Some files which should not be versioned. git uses a .gitignore text file for that purpose which contains a list of files (you may use wildcard characters).

To edit .gitignore, you may create an empty file:

touch .gitignore

Then open it in your favourite text editor.

I think it should at least contain:

.DS_Store

You may also add:

MyProject.xcworkspace/xcuserdata/

Because you do not want information specific to a user (e.g. the list of breakpoints) to be pushed to a remote git repository.

4) To track project files (in other words, add them to the “staging area”), type

git add .

5) Finally, commit these files

git commit -m "Initial commit"
Categories
Non classé

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.

 

 

Categories
Non classé

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.

 

 

Categories
Non classé

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.

Categories
Non classé

Vidéo du Live Code iOS

BeMyApp a enfin mis en ligne la vidéo du Live Code du 26 juillet. La vidéo se trouve ici.

Categories
Non classé

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.

Categories
Non classé

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.

Categories
Non classé

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.

Categories
Non classé

LiveCode iOS Paris

L’équipe de BeMyApp, décidément pleine d’idées, m’a proposé un nouveau concept, celui de réaliser une application devant un public. Le premier LiveCode iOS se tiendra donc le jeudi 26 juillet 2012 à 19h30 à Paris.

J’y écrirai un jeu pour iPhone avec les technologies Cocoa Touch classiques, et les contraintes suivantes:

  • une heure de développement au maximum
  • le jeu devra être jouable
  • le jeu devra avoir un intérêt

Venez voir si le challenge pourra être tenu ! L’interaction avec le public est essentielle. Informations et inscriptions

Correction: l’événement se tiendra le 26 juillet, et non le 23 comme je l’avais tout d’abord annoncé.