Notes pour plus tard

Petites notes diverses sur le développement en général, C# et ASP.Net en particulier

Techdays 2014 jour 3

Plénière : Objects connectés, avez-vous donc une âme ?

Les objets connectés ont fait le buzz sur les deux premiers jours ; cette plénière de dernier jour leur est dédié. Bernard Ourghanlian est à la manoeuvre pour animer cette session avec le brio qu'on lui connait.

Depuis 2008, il y a plus d'objets connectés que d'humains sur terre. Grâce à la convergence des facteurs des niveaux technologiques sur les capteurs, le mobile, le cloud, le big-data et le machine-learning, nous sommes sur le point de passer d'un  "internet of things" à un "internet of everything".

La plénière sera consacrée à des scénarios concrets d'usages d'entreprises et de start-ups. 
Le premier scénario évoqué est prometteur : transformer un objet de la vie quotidienne, en l'occurrence une table basse, en surface tactile grâce au toolkit .Net Gadgeteer. Les problèmes de réseau récurrents durant ces trois jours de plénières nous laisseront sur notre faim.

Le produit suivant, la fenêtre connectée de sensorit (bravo Mitsu) fait son petit effet : à la fois volets LCD, régulateur de luminosité, capteur d'humidité pour un retour météo, et évidemment écran multimédia.

Les invités vont ensuite se succéder : 
  • Joris Jaudion pour Schneider et une gestion énergétique de quartier efficiente,
  • Frédéric Dittmar pour l'Autolib' de Bolloré comme élément de solution à la problématique des trajets du quotidien 
  • Henri Seydoux pour Parrot, son moniteur de plantes d'appartements, ses drones (et sa gouaille),
  • Yves UbelMann pour Iconem et la modélisation 3D de sites inaccessibles, minés ou escarpées, serein malgré le bourdonnement d'un drone de son prédécesseur,
  • Antoine Durand d'Oxylane (Decathlon) pour le suivi de performance sportive via le portail mygeonaute.com, avec des devices pour le suivi du tennis, de la natation et une caméra embarquée à 360°
  • Rafi Haladjian, créateur du fameux Nabaztag, expose finalement pour sen.se une vision similaire à la table à connecter de la séquence d'intro : de simples modules équipés de capteurs divers que l'on fixe sur des objets du quotidien pour en monitorer l'usage ou l'état, les localiser. Les modules présentent l'avantage de pouvoir être réutilisés pour un tout autre usage lorsque le besoin s'en fait sentir ; une vision particulièrement intéressante pour cette fin de session.

#fail : pourquoi est-il important de se planter pour réussir son projet de RSE ?


Intervenants : 
Cécilé Baudin Hardin, Direction de la communication pilotes Air France
Guelnoji Njetein, Consultant collaboratif MS
Kirsi Traore, Groupe Bouygues
Karl Harriau, MS @kharriau

Cette session se veut sans langue de bois, à contre-courant du déni et du camouflage de l'échec, un trait que l'on retrouve souvent dans la culture d'entreprise française. On commence sur des échecs célèbres qui se sont transformés en succès : les 5000 prototypes de Dyson, une colle particulièrement médiocre de 3M qui servira finalement à créer le post-it.

Les différentes facteurs d'échecs vont être énumérés et les mesures à prendre évoquées :

Fail#1 - Start Big : se fixer des objectifs très ambitieux en termes de nombre de connexions, d'activité, de fonctionnalités. Le risque est que la poursuite du chiffre stérilise tout autre objectif, voire même toute lucidité, et favorise l'enfermement dans un piège abscons.  
La solution est de ne pas se fixer d'objectifs trop ambitieux, de livrer tôt et de laisser les usages émerger afin de les développer, les accompagner et abandonner ce qui ne fonctionne pas. Bref, être pragmatique.

Fail#2 - l'effet tunnel : s'enfermer dans un groupe de "sachants" qui finira par livrer un produit fini à côté des attentes des utilisateurs, voire aucun produit du tout. Pour éviter cela, il faut s'entourer d'utilisateurs clés qui accompagneront le projet et seront les garants de l'adéquation au besoin. Il faudra cependant se méfier des utilisateurs clés : ils sont enthousiastes, volontaires, finalement pas représentatifs des utilisateurs moyens.

Il ne faut pas croire que le RSE va d'emblée tout remplacer, et notamment pas le mail ou l'intranet. La modification des comportements doit être encouragée et suscitée, mais pas imposée.

Les échecs patents doivent être laissés en évidence : les groupes qui ne fonctionnent pas et ne fonctionneront jamais, afin qu'ils ne soient pas systématiquement recréés, tels les groupes "innovation" passe-partout et trop généraux.

Fail#3 - Overengineering du projet  : choisir un produit trop complexe ou disposant de trop de fonctionnalités dont on n'utilisera qu'une fraction.
Il faut également laisser l'organisation émerger plutôt que de vouloir la fixer dans le détail à l'avance ou de tenter de recréer les silos de la société.

Une session de qualité en faveur d'une approche agile : pas d'a-priori, du dialogue et de l'écoute continus, des livraisons rapides et frequentes, et des remises en question constantes. Dommage que la salle ne soit que partiellement remplie. Un webcast à conseiller aux fervents adeptes du "Start-Big, Can't Fail" dont tout le monde connait au moins un représentant.

Apport de l'ergonomie et du design dans les apps d'entreprise 

Intervenants :
Daniel Milelli
Julie Grienenberger

Cette session, émaillée de piques intergénérationnelles bon-enfant entre les deux intervenants, s'attache à détailler les processus à l'oeuvre dans la conception de l'ergonomie et du design d'une application.

Les applications doivent être pensées dans un écosystème en mouvement constant, mais dont les contraintes, notamment budgétaires, sont réelles. Les ruptures technologiques transforment l'entreprise, faisant émerger de nouveaux usages pour lesquelles il faut penser les applications.

L'un des objectif est d'obtenir une expérience fluide et unifiée sur l'ensemble des terminaux.

La démarche reposera sur un enchaînement de phases :
  • observation : écoute du besoin et prise en compte de l'existant,
  • synthétisation : notes, bribes de schémas, wireframes, établissement d'un premier cahier des charges de design, et conception de l'ergonomie
  • maquettage : création du design   
  • production.: intégration du design et de l'ergonomie dans le projet final
Dans la démarche, il est intéressant de noter que la phase d'ergonomie qui s'appuie notamment sur la conception de wireframes précède réellement la phase de conception graphique.  
Egalement, il est conseillé de ne pas mêler un trop grand nombre d'utilisateurs à ces phases si l'on souhaite avancer à un rythme correct.

Concernant le passage de la phase de maquettage à la phase de production, l'intervenante déplore que le passage de relais entre le designer et le développeur ne se fasse pas sans souci. Selon elle il manque un rôle charnière entre les deux. C'est de mon point de vue le rôle du développeur-front qui peine toujours à faire reconnaître sa place et son métier.

La session se termine sur l'évolution des tendances, du photo-réalisme au flat-design, en passant par l'almost-flat. Le futur s'annonçant comme une introduction de légers ombrages pour faire ressortir les points importants d'un élément flat-design.    
A noter que cette tendance à la simplification n'est pas récente. Elle s'inspire de l'école de Bauhaus des années 50.

45 Tips ad tricks pour votre utilisation quotidienne de powershell

Intervenants : 
Carlo Mancini, ST MicroElectronics @sysadmin2010 
Fabien Dibot, Vivalto Santé @fdibot

L'apprentissage de powershell est dans ma todo-list depuis déjà un bon moment. En tant que néophyte complet, cette session m'encourage simplement à ne pas renoncer.
Je pourrai m'appuyer pour cela sur le fichier exemple des démos mis en ligne par un des intervenants.  

Elasticsearch sur Azure : Make sense of your (Big) data !

Intervenants :
Thomas Conté @tomconte
David Pilato @dadoonet

Nous nous trouvons donc présentée une base de données No-SQL orientée document, tournant dans un JVM, avec un stockage JSON, et une forte capacité de sharding et de réplication.
L'interrogation se fait au moyen d'un query DSL disposant de fonctionnalités de fenêtrage et de géolocalisation et s'appuyant sur des requêtes curl.

Comme pour mongodb, il faut privilégier la composition et éviter les jointures parent-child, et faire attention aux impacts de performances lors des mises à jour. 

L'administration peut être réalisée via la console marvel (payante, une des sources de revenu de ce projet )
L'exploration des données peut quant-à-elle être réalisée via l'outil kibana, développé en angularjs au dessus de logstash, un outil dont j'avais déjà entendu le plus grand bien.  

On aurait souhaité en savoir plus, notamment sur les possibilités d'intégration dans une application .Net.

Mais, comme annoncé dans le titre, la seconde partie de la présentation est consacrée au support Azure.
Une des problématiques va être de gérer le multicast pour le sharding et la réplication. Une des solutions étant de réaliser de l'unicast en gérant des fichiers d'adresses ip. Une autre solution peut être d'utiliser le récent plugin de discovery disponible sur http://Github.com/elasticsearch/elasticsearch-cloud-azure

A noter que les intervenants privilégient l'utilisation d'une instance Azure extra-large et que le cloud service Azure récemment en v1.0 permet de réunir plusieurs instances.

Finalement une session fort intéressante pour clore cette édition, qui me rappelle la présentation sur mongodb vue dans une édition précédente des techdays. Un produit à essayer absolument.

Techdays 2014 jour 2

Plénière jour 2 : les temps changent, votre SI aussi !

Moins inspiré pour cette deuxième journée consacrée aux IT pros, mon agenda prévisionnel est bien moins surchargé que pour la première. Je viens avec en ligne de mire les sessions de fin de journées sur les objets connectés.

La plénière s'articule autour de la nécessaire adaptation du SI à un environnement en évolution constante. Les nouvelles technologies bouleversent les comportements et les interactions. Un exemple parmi d'autres est la manière d'appréhender la problématique Bring Your Own Device, qu'on ne peut plus se permettre d'ignorer, mais qui doit rester encadrée.
Pour résoudre ces problèmes, les outils existent, et sont même parfois impressionnants, telle cette démonstration d'Excel avec Power BI.
Peu accroché par la plénière, parce que probablement pas dans la cible, j'en aurais retenu qu'une des clés est de s'en remettre à un haut niveau de virtualisation, et donc à Azure. J'imagine qu'un des objectifs était là.

Créer des jeux avec pour Windows Phone et Windows Store avec Unity 

Intervenants : David Rousset : Microsoft
                      Valentin Billote et Luc Aubert : Graphic Stream 

N'étant pas développeur de jeu, c'est par pure curiosité que je me rends à cette session.  Apparemment je ne suis pas seul. L'audience est majoritairement composée de développeurs C#, et de peu de développeurs de jeu.
La présentation consiste en la réalisation via Unity3D d'un jeu 3D (enfin, juste sa page d'accueil) par les intervenants de Graphic Stream, société s'illustrant dans le domaine du serious gaming et de l'immersion.

La présentation est dynamique. Pour un peu, on croirait presque que la réalisation de jeu est à la portée de tout un chacun : blender pour la modélisation 3D (ou Maya pour les plus fortunés), un asset store rempli de composants "sur étagère" , de qualité souvent à un tarif inférieur à 100€, tels NGUI pour réaliser des menus.

Une partie de la réalisation de la dynamique du jeu réside dans la configuration d'une machine à états pour articuler les différentes étapes du déroulement du jeu. L'intervenant navigue sans peine au sein des paramétrages de Unity. La richesse de l'interface et les réglages nécessaires pour obtenir quelque chose de montrable laissent cependant à penser qu'il y a de nombreux concepts non triviaux à maîtriser.

Bref, développeur de jeux, c'est évidemment un métier, qu'il me semble ardu d'aborder directement par le volet 3D. 

A noter le plugin UnityVS, plébiscité par les intervenants qui permet une intégration complète d'Unity à Visual Studio 

Démystification du Big Data

Intervenants : 
Benjamin Guinerbertière, Technical Evangelist MS, @benjguin
Romain Casteres : MVP SQL Server
François Simoës, Sébastien Etcheverry : V-Traffic

Peu de notes sur cette session dont l'objectif de vulgarisation me semble avoir été atteint. 

A la base, le big data est issu de la convergence de plusieurs facteurs :
  • de grands volumes de données sont disponibles,
  • des formats de données hétérogènes,
  • un coût de stockage et de matériel réduit,
  • une forte attente des utilisateurs
Du Volume, de la Variété, de la Vélocité et de la Visualisation découlera de la Valeur.

Les produits MS pour traiter cette problématique sont HDInsight et HDP, déclinaisons de Hadoop, respectivement dans les environnements Azure et Windows.
On s'appuiera également sur SQL Server 2012 édition Parallel Data WareHouse et sur PolyBase pour requêter les base Hadoop.

S'ensuit une présentation efficace de V-Traffic sur une problématique d'agrégation de données hétérogènes par de nombreux fournisseurs pour fournir une couverture complète des données de trafic. Une illustration est offerte sur une recherche de couverture géographique précise pour chacun des fournisseurs de données de V-Traffic, afin de rechercher la couverture la plus complète au meilleur coût. 

Un point intéressant : l'analyse étant mensuelle sur des unités en journée. Dépasser les 30 noeuds de calcul n'apporte plus de gain en rapidité.

A noter également que Azure permettant une facturation à l'usage, il est possible de créer un cluster uniquement pour le temps du calcul, pour un coût réduit au minimum.

Objets connectés, soyez prêts à surfer sur la vague

intervenants : Alex Danvy, Microsoft, @danvy
                      Stéphane Sibué : coding4phone @codeppc
                      Sébastien Lebreton @sailro

Les objets connectés font le buzz sur ces techdays. La plénière du jour 3 leur est consacré. C'est donc avec beaucoup de curiosité que je me rends à cette session.
Une bonne partie de la session est consacrée aux montres connectées. Loin de s'intéresser aux mastodontes du secteur, le focus est mis sur deux modèles kickstartés :
  •  la pebble, son pilote Flint et son implémentation P3bble pour WP8 et WinRT
  •   l'agent-watch embarquant le .net microframework 4.3
Si l'utilité de ces montres connectées comme écran déportés n'est pas à démontrer, et si leur succès est prévisible, cela reste peu exaltant en termes de révolution des usages.

L'objet suivant, Sphero, petite sphère gyroscopique avec un logo amusant offre des fonctionnalités de pilotage, de changement de couleur et de retour de choc, avec un riche SDK :
Bien moins utile qu'une montre connectée, mais bien plus amusant ;-)

On finit par un  aparté sur le Bluetooth LE qui révolutionne le protocole Bluetooth, notamment en termes de consommation d'énergie.

Un point à noter pour tous ces objets connectés souvent pilotés via smartphone ou tablette : le support des matériels Microsoft n'est pas systématiquement assuré. L'émergence des objets connectés, nouvelle génération de périphériques, et nouveau moteur de croissance semble se faire à la limite de l'univers Microsoft. Une situation qui peut être appelée à évoluer si, comme j'ai pu le lire, tous les PC portables vendus à échéance de deux ans seront des machines hybrides. On trouvera là la vague évoquée dans le titre. 

Geek is in da house

Une session difficile à résumer : un diaporama préalable à la session nous relate la conversion d'un flipper mécanique en flipper numérique universel. Laurent Ellerbach nous montre les vicissitudes de la création de légos personnalisés dans une présentation très instructive. Stanislas Quastana pilote une distribution de nourriture pour son chat. David Catuhe joue au ghostbuster ; et Sébastien Warin développe un miroir connecté.

A voir en webcast, rien que pour se rendre compte de ce qu'il est possible de faire lorsqu'on est (très) passionné et (particulièrement) bricoleur.

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...