Résumé des techdays 2014 jour 1

On inaugure ce blog avec un résumé de ma première journée des techdays 2014. 

Plénière : Votre futur est dans le code

Le grand amphithéâtre est déjà bondé. Les joies des transports en commun m'ont fait manquer les 15 premières minutes de la plénière. J'arrive en plein dans la partie gaming, avec une belle entrée en matière : le jeu dépassera les 100 milliards de dollars de chiffre d'affaire dans les quatre prochaines années, dont plus de la moitié dans le mobile. Il y a donc une énorme marge de progression dans ce domaine pour Microsoft qui pourra notamment s'appuyer sur le moteur Unity3d.

Pour la suite Michel Rousseau positionne Blend pour Visual Studio comme designer HTML à part entière en appuyant sur les fonctionnalités essentielles : design wysiwyg, gestion des polices, des couleurs, des assets graphiques.

On enchaîne alors sur une mise en lumière des 5000 nouvelles API du windows runtime, avec notamment des API de sécurité, via la gestion de cartes à puce virtuelles, ou de credential picker. Au passage, nous avons droit à un clin d'oeil quant au fait que Metro et le bureau ne sont pas si cloisonnés sur Windows 8.1

Comme à l'accoutumée en plénière, les sujets défilent vite. C'est le tour de Microsoft Venture. L’accélérateur de startups de Microsoft offre notamment aux jeunes pousses la possibilité de bénéficier d'un POC de 3 mois avec des locaux, du conseil et le mentoring de startups ayant déjà réussi.

Les démonstrations s'enchaînent : BingApi, Xbox Music, Azure Media Services, Azure Mobile Services, Azure Active Directory, Monaco, HDinsight  ainsi que les objets connectés. Ces derniers seront l'un des sujets phares de ces techdays. 
Une ligne se dessine, celle du titre de la session. Notamment grâce à Azure, l'écosystème est disponible, au niveau plate-forme et au niveau services. Il incombe désormais aux  développeurs de mettre en place l'écosystème applicatif associé.

C# async, un an après

animé par Mitsuru Furuta ( http://mitsufu.wordpress.com/ )

Dans une autre vie, à l'époque du framework 1.0, Mitsu m'a accompagné, ainsi que mes coéquipiers, lors de nos premiers pas en .NET. Nous avions déjà pu mesurer à l'époque à quel point il était pédagogue, en plus d'être passionné et balèze ;-) 
Comme d'habitude, assister à une de ses sessions, c'est la promesse de ne voir que du code et l'obligation de rester concentré. En posant les bonnes questions, il décortique un mécanisme dont on pensait saisir le sens général afin de hisser le niveau de compréhension, ici async/await.

Il commence par des rappels sur le fait que l'asynchronisme ne doit pas être confondu avec du parallélisme ("sinon vous pouvez aussi faire du javascript" :-), et sur l'encapsulation automatique de Tasks pour les awaitables. On enchaîne ensuite sur une explication du awaitable pattern fondé sur des interfaces implicites IAwaitable et IAwaiter à la manière de IEnumerable et IEnumerator.  Le mécanisme se base sur une convention d'une méthode GetAwaiter(). L'absence d'interface explicite évite l'obligation d'avoir recours à une méthode d'instance. Cela permet l'utilisation de méthodes d'extension ; ce qui fait l'objet de la démo suivante rendant awaitable un int  

On enchaîne sur des problématiques de contextes d'exécution, et notamment sur la manière d'y gérer des données. CallContext.LogicalSetData permet de passer des informations de contexte. A noter que le retour d'un await revient toujours au thread appelant, mais que l'usage d'un ConfigureAwait permet de refuser ce mécanisme par défaut.

Enfin, la dernière problématique traitée est celle de la gestion d'un SynchronizationContext avec une synchronisation de threads dans une application non fenêtrée, telle qu'une application console. Le code final se révèle très simple, avec l'usage d'un seul booléen comme pseudo-sémaphore. Au passage je note l'usage de ConcurrentQueue et ManualResetEvent, à creuser...

Un webcast à voir et à revoir.

Le futur du responsive Web Design

animé par Raphaël Goetter
Le sujet et la réputation de l'intervenant justifiaient l'amphi bleu. Il bien rempli.
Plutôt que de Responsive Web Design, il sera question de HTML5, et même du futur immédiat des standards.

Les spécifications et normes vont s'enchaîner très vite, avec pour chacune un état d'avancement de la spécification et son support par les divers navigateurs.
On balaie ainsi le SVG, les problématiques de ViewPort (vh, vw, vmin, vmax) et de résolutions (dpi, dpcm, voire dpmm et dppx), @supports permettant d'intégrer des fonctionnalités de type modernizr au niveau css. 
On clôt ce chapitre sur la problématique d'images responsives consistant à pouvoir adapter la résolution des images à charger en fonction des capacités du client. Toutes les pistes évoquées ne sont encore malheureusement qu'à l'étude.

On enchaîne ensuite avec les questions de fonctionnalités et d'environnement : 
  • le périphérique gère-t-il le touch ? Doit-on se baser sur des mouse-events, touch-events, pointer-events ?
  • quelles sont les caractéristiques de la liaison réseau, via les API Network Information et Navigation Timing ?
  • quel est l'état de la batterie, via la Battery API ?

La présentations se clôt par la question des problématiques de positionnement css (ce que les béotiens du front-dev comme moi pensent être la seule problématique du Responsive Web Design).
On balaye donc les principaux modes de positionnement disponibles : flexbox, gridlayout et regions
La promesse de séparer de plus en plus la structure du document et sa présentation est en passe d'être tenue. Les positionnements à base de table et de float font désormais partie du passé. 

On reste un peu sur notre faim en termes de supports. La plupart des fonctionnalités présentées sont moyennement supportées. Reste à réaliser que l'évolution extrêmement rapide des standards nous permet effectivement de parler de futur immédiat, à échéance de quelques mois. Beaucoup de choses intéressantes qui arrivent, donc. 


Au passage je me promets de jeter un oeil aux outils bien pratiques que semblent être http://codepen.io et http://mydevice.io 

Finalement, un petit peu déçu par cette session, peut-être simplement par mon arbitrage avec "Quoi de neuf dans WinJS 2.0 ?", "NDepend 5 en action par son créateur", "ASP.Net MVC5 et Web API 2" dont je regarderai  les webcasts. 

Edit : comme le fait fort justement remarquer Raphaël dans les commentaires, ma relative déception provient peut être simplement du fait que je n'étais pas dans la cible. La session était en effet destinée à un public de niveau avancé.

Développer ou debugger

Antoine Ferté, Jérôme Guillaume CompuwareAPM

Je me retrouve dans cet amphi faute de places restantes pour "La data n'a pas besoin d'être big pour générer de la valeur".
La présentation part sur un constat vérifié pour ma part : sur le long terme, 80% du budget d'un projet est englouti par la résolution de problème, le debugging, les micros évolutions techniques, bref le maintien en conditions opérationnelles. Restent uniquement 20% pour la R&D.
Le produit présenté par les intervenants, DynaTrace, promet d'améliorer ce ratio en facilitant grandement le bug tracking et en permettant de remonter toute la chaîne d'appels et son contexte à travers les différentes plateformes impliquées.

La possibilité de combiner les données applicatives ("PurePath") avec les métriques d'infrastructure ("PureStack") se révèle également prometteuse en permettant notamment de répondre à l'éternelle question : Tel problème est-il réellement imputable à une défaillance ponctuel du réseau ? 

Le produit semble très intéressant. Les références client citées semblent en attester.  Mais on pourra regretter une présentation par trop "marketing". La journée est consacrée aux développeurs, et on aurait souhaité plus d'information quant à la mise en oeuvre, comprendre ce qu'il y avait sous le capot, au delà de la simple allusion à des "agents".

Pour aller plus loin, un lien à la fin des slides de la présentation permet de télécharger une version d'évaluation.

Node.js dans Azure

Stéphane Goudeau Microsoft 

Le malheureux hasard de la programmation nous offre deux sessions simultanées sur Node.js. Je délaisse le "Tour d'horizon de Node.js" par Christophe Porteneuve. Je ne doute pas que ses participants sortiront avec l'envie irrépressible de participer à sa formation Jstotal. Et, pour l'avoir suivie l'an dernier, ils auront bien raison :-)

Je me tourne donc vers Node.js dans Azure. Le sujet m'intéresse un peu car j'avais rapidement essayé de faire tourner ghost dans Azure il y a quelques temps, sans grand succès.
L'intervenant balaye les différents modes de déploiement de Node.js dans Azure : en modes IAS, PAAS (indépendant et dans IIS, via iisnode, avec la possibilité d'affecter un iisnode par coeur), WebSite 
J'ai finalement pris peu de notes : la possibilité d'étendre Azure Mobile Services via node.js  et un lien très intéressant sur une mise en oeuvre à grande échelle dans un contexte de monitoring de medias sociaux.
Je reverrai le webcast, ayant certainement manqué plein de choses, et ne renonçant pas à ma tentative d'installation de ghost ;-)

Ma première journée doit s'arrêter là. "Bing API : Retour sur la démo de la plénière", "SPA avec SignalR et Angular Js", évidemment "Coding4Fun" viennent s'ajouter à la liste déjà longue de webcasts à visionner pour ce premier jour. 

 A suivre, les résumés des jours 2 et 3...

Comments (4) -

  • Olivier

    2/14/2014 1:31:15 PM | Reply

    L'avenir est sans nul doute au front-end, frameworks JS et autre HTML5 / CSS3, très intéressant retour.

  • Raphael

    2/16/2014 9:36:46 PM | Reply

    Bonjour Jean-Bernard,

    Merci pour ce compte-rendu bien détaillé.
    Merci pour ta critique concernant ma conf, je suis navré si ma présentation t'a un peu déçu. Est-ce une raison de fond ou de forme ? Aurais-je dû  traiter le sujet différemment selon toi ?

  • Jean-Bernard

    2/17/2014 12:00:20 AM | Reply

    Bonjour Raphaël,

    j'espère que mon résumé laisse suffisamment apparaître que je suis loin d'être compétent sur le sujet RWD. Ma relative déception vient peut-être du fait que je me suis demandé pendant toute la présentation vers quelle conclusion on s'acheminait. Finalement, sous le flot d'informations, on ne sait que conclure pour préparer ses projets au futur du RWD.
    C'était peut-être une bonne occasion de promouvoir le rôle essentiel du métier de développeur front. Il me semble que ce rôle peine à être reconnu, voire simplement connu (cf la présentation de blend en plénière le matin, ou une présentation design/ergonomie en jour 3 que j'essaierai de résumer)
    Il manquait peut-être simplement cette conclusion explicite : "Comme vous le voyez, c'est compliqué. C'est un métier. Pour vous préparer au futur du RWD, embauchez ou formez un développeur front"

  • Raphael

    2/17/2014 9:40:14 AM | Reply

    Bonjour Jean-Bernard et merci pour ces précisions.
    Tu as tout à fait raison, j'aurais pu mieux mettre en avant mon métier et laisser transparaître sa complexité.
    Pour ma défense, j'avais préalablement identifié cette session à un niveau "Niveau : Confirmé (300)".

Loading