MyDesktop : un autre menu Démarrer pour Windows

Voici mon nouveau développement: MyDesktop. Cet outil permet de visualiser les applications installées sur le poste. Sur la partie gauche, on y trouve les différents groupe et les liens. La première partie droite présente le lien en détail avec son icone. Le deuxième panneau présente la totalité des applications. L’autre visualisation permet de voir les applications sous forme de carrés de couleur. Il y a une fonctionnalité de recherche aussi.

Le code est disponible sur GitHub: https://github.com/ChristophePichaud/MyDesktop

L’application est réalisée en C++ avec les MFC. Pourquoi les MFC ? Parce que les MFC permettent de développer rapidement et de manière efficace. De plus, j’avais des classes de dessin à réutiliser d’un autre projet. En effet, les carrés de couleur sont des “shapes” graphiques qu’il est possible de déplacer et de retailler en dimension. Ces classes tirent parties des MFC.

Il ne me reste plus qu’une fonctionnalité à ajouter : le lancement des applications. Ce n’est pas très dur, il suffit de faire un CreateProcess du lien…

Stay tuned.

Développer comme un pro en France, c’est possible

En tant que développeur C/C++/NET et plus généralement Microsoft, il est possible de participer à des projets open-source tout en restant en France. Il n’y a pas besoin de s’expatrier pour participer à des projets complexes. Exemple:

  • Windows Terminal
  • Microsoft NET CoreCLR
  • Microsoft NET CoreFx
  • Windows UI

Le portail GitHub.com et sa section Microsoft contient des dizaines de projets. De plus, il existe ailleurs de nombreux autres projets open-source de classe internationale comme :

  • Google Chromium
  • Mozilla Firefox

Il y a de quoi étudier et contribuer. Vous allez me dire, ah oui mais il faut du temps pour rentrer dedans ! Ben oui, tout à un prix.

Dans le cadre de mon partenariat avec Programmez, je vais essayer de faire un ou deux articles sur les contributions open-source de ce style. Pour mon MVP, le plus important pour moi est de creuser le projet Microsoft NET CoreCLR. Pour Microsoft c’est un projet important et cela peut permettre d’avoir une bonne visibilité de contribuer. Il y a des étapes à franchir pour NET et la roadmap va nous mener de NET Core 3 à NET 5.0 en 2021. Il va y avoir des évolutions.

L’avantage des projets open-source C++ tient dans le fait que les librairies third-party ne sont jamais deprecated. Les projet grandissent et avancent. Il n’y a pas de Marketing qui impose telle ou telle feature ou telle lib qui change tout. Le langage ISO C++ évolue, la STL évolue mais les fondamentaux sont toujours là. Le style “Modern C++” s’est imposé partout et c’est super pro.

En comparaison dans le monde C#/NET, avant il n’y avait pas Linq, avant il n’y avait pas async/await. Quand vous regardez le code des nouveaux projets .NET, c’est n’importe quoi avec leur async/await. Le Marketing a essayé de nous faire croire que async/await était la panacé car ça exploitait mieux la batterie. C’est une arnaque intellectuelle.

Rappel sur cette arnaque: Pour vendre des tablettes Surface sous ARM, Microsoft nous explique qu’il faut économiser la batterie et que les programmes actuels consomment trop de CPU donc de batterie et que la solution c’est WinRT et les API async. Moralité, on nous bride la possibilité de faire du Win32 en ARM. On a vu le succès de l’effet. Pas de tablettes à la vente, fiasco de WinRT. Ensuite, on nous dit disponibilité que des applications du store mais pas C++. Donc il n’y a que des applications de misère… Résultat: Le fiasco, again. Ensuite on ouvre à Win32. Trop tard, le store et WinRT sont à la ramasse. L’utilisation des API WinRT est de 2% dans les applications Windows. WinRT étant un subset des API Win32 qui n’apportent rien et qui est async/await avec un modèle d’état fini mêlé de threading et de blocage qui est pénible à utiliser et qui ne résout en rien l’usage de la batterie. Oui pour les programmes de bourrin en C# mal écrit, ça peut poser problème mais pour les vrai développeurs C++, on sait ce qu’on fait, on n’a pas besoin de créer un thread à chaque fonction. On sait faire pipi sans en foutre partout sur la cuvette !

Moralité, les petits jeunes y croient et développe de la m…. en barre. Ils créent des fonctions qui créées 3 strings qui se battent en duel et retourne une Task et la méthode est marquée async/await ! C’est n’importe quoi. La programmation C#, c’est devenu un truc très bizzard. Au niveau de la plateforme, les CoreFX et le CoreCLR c’est nickel mais les développeurs C#/NET sont instables. Ils utilisent les nouveautés du langage a chaque nouvelles évolutions, il changent de librairies de bases tous les ans, un coup c’est ADO.NET, un coup c’est Dapper, un coup c’est EF, un coup c’est EF Core ; ils se laissent balader par le Marketing et ne réfléchissent pas par eux-mêmes. Ils font du code jetable qui est réécrit à chaque changement de framework ou de Visual Studio. Y a rien de pérenne. Bref, la roadmap NET va secouer le cocotier j’espère. A croire que ce n’est pas assez technique et compliqué. Il sont besoin ce complexifier les choses. Je vois énormément de développeurs C# qui sont frustrés car il n’y a rien à optimiser en C# ou si peu. Il sont sur une boite noire. Ils ne voit pas l’OS, le processeur. Il ont un Framework et ils jouent avec. Venez faire du C/C++, chez nous on build on the metal, on n’a pas besoin de complexifier le code pour se rendre intéressant.

Pour bien mener sa barque en développement C#/NET, il ne faut pas écouter le marketing et se poser les bonnes questions:

  • ais-je besoin de cette Nème nouvelle fonctionnalité du langage C#
  • ais-je besoin de mettre mon logiciel en risque pour utiliser la dernière libraire à la mode ?
  • qu’elle est l’intérêt de mettre à niveau ces satanés paquets Nuget qui sont tous plus incompatibles les uns que les autres avec leur dépendances foireuses ?
  • est-ce utilise que je mette le doigt dans le monde UWP quand on sait le succès (c’est de l’humour) que cela a ?
  • on me dit que l’avenir c’est le cloud ? Dois-je tout casser et tout réécrire ?
  • j’ai une interface UI faite en WinForms ; on me dit de passer à WPF ; ça casse tout. Dois-je y passer ?
  • j’ai une application UI WinForms ou WPF qui fonctionne nickel. On me dit que Angular c’est la mode ; dois-je y passer ? Angular c’est du TS/JS.

Pour toutes ces questions, il faut s’entourer de gens d’expériences qui sauront pour éviter les pièges. Il faut des experts en développement logiciel : des Architectes.

Le développement logiciel, c’est un métier.

Pourquoi Microsoft ne fait pas un browser en C# / WPF ?

Un browser, c’est:

  • de la communication tcp/ip
  • du rendu-graphique
  • du rendu vidéo et sonore
  • un interpréteur javascript
  • de la sécurité

Et pourtant c’est fait en C/C++. Pourquoi ?

Microsoft devrait faire un browser en C# / NET. Cela permettrait de fiabiliser la plateforme. Si WPF était le framework UI si génial que ça, pour faire un browser, cela devrait être easy non ? Et bien non Monsieur !

Le prochain browser Microsoft est basé sur Google Chromium qui est fait en C/C++. Dans ce genre de produit, il faut être pragmatique : ça doit marcher vite et bien.

Je n’oublie pas les paroles du marketing qui nous expliquait il y a 15 ans que C++ était unsafe et unsecure ! Ah oui, et bien pourquoi Microsoft fait 90% de ses produits avec alors ?

Donc voilà, je pose la question au marketing : Ah quand un browser en C# en WPF ? Il faut croire que cela pose quelques soucis…

Applications multi-plateformes ? HOWTO ?

Pour développer des applications multi-plateformes, il n’y a pas cinquante choix possibles, il n’y en a qu’un seul qui est gratuit et performant : c’est C++.

Seul le C++ permet de tirer partie des dernières nouveautés des SDK Windows, Linux, Android et iOS car le système et son environnement sont faits avec. L’avantage de C++ est qu’il <<build on the metal>> : il n’y a pas plus rapide. C++ tire partie de l’architecture logicielle des systèmes d’exploitation et matérielle des derniers processeurs x86, x64 et ARM. Cela fait quarante ans que les optimiseurs de code C++ garantissent la meilleur qualité de code possible.

C est le nouvel assembleur. C++ permet l’orientée objet : abstractions, héritage et polymorphisme (fonctions virtuelles), surcharge d’opérateurs, templates. Avec sa librairie STL (Standard Template Library) et conjointement avec une librairie comme Boost (boost.org), le C++ possède une boite à outil universelle qui gère les strings, containers (collections), algorithmes, les I/O, les threads, les smart pointers, les communications, etc.

Passez le pas. Installez Visual C++ sous Windows, GCC sous Linux, XCode sous Mac et partagez du code métier. Réalisez des interfaces graphiques riches et tirez partie du meilleur langage de développement qu’est C++.

Vous allez me dire il existe des solutions hybrides comme NET ou Java ? Ces solutions sont un ensemble de mille feuilles lourds et lents qui ne permettent pas de créer des applications de classe mondiale. En automobile, y a les Fiat 500 et les Ferrari. A prix égal (voir moins cher), vous prenez quoi? Y a pas photo…

Le Cloud par Keelan C.

Dans le numéro de Programmez de Novembre 2019, Keelan nous fait partager sa vision du cloud sous forme d’Edito.

« Le Cloud computing a énormément évolué cette dernière décennie et ne se contente plus, bien heureusement, de proposer une simple approche IaaS (Infrastructure as a Service). Les cloud providers ont compris que la valeur ne se situait pas au niveau du device mais au-dessus de ce dernier en  proposant de vrais services à valeur ajoutée. Ces derniers permettent de réduire le TTM (Time To Market) tout en optimisant le coût d’exploitation, pour peu que les architectes en charge des développements respectent les bonnes pratiques et utilisent finement les leviers d’optimisation. C’est la promesse du PaaS (Platform as a Service), du CaaS (Container as a Service) et autre FaaS (Function as a Service).

Qui dit nouvelle plateforme dit nouvelle architecture. Nous avons ainsi vu apparaître les micro-services, architecture permettant de se séparer des applications plus ou moins monolithiques pour offrir à la place un ensemble de petites fonctionnalités (services), indépendantes les unes des autres, interrogeable. Le principe est simple : 1 fonctionnalité = 1 service (d’où le préfixe de micro), la communication se faisant à l’aide d’un contrat d’API.

Dans le monde Microsoft Azure, 4 approches sont disponibles pour mettre en œuvre ces micro-services :

Service Fabric, AKS (Azure Kubernetes), Azure function ou encore la solution d’API management.

Les Azure .Net Rangers vous proposent au travers de ce dossier d’étudier votre première application architecturée autour des micro-services et hébergée dans des containers Docker sur la plateforme Azure de Microsoft, afin de tirer également partie des bénéfices de déploiement, scalabilité et contrôle des coûts apportés par cette solution.»

Welcome Makram J.

Bienvenue à Makram qui est un expert Infra-Cloud.

Makram JENAYAH est un architecte cloud. Il a commencé sa carrière chez une startup avant de rejoindre Hewlett-Packard entreprise en tant que consultant senior cloud et automatisation ou il a travaillé sur des uses cases hybrid cloud et multi-cloud ainsi que l’automatisation des processus IT.
En 2017, il a rejoint Capgemini en tant qu’architecte ou il a implémenté des cloud Management Platform ainsi que des solutions d’automatisation.
Makram a un mastère en systèmes d’information intelligents.
Pendant ses études, il était très actif dans la communauté Microsoft et c’est vu attribué le titre MSP [Microsoft Student Partner] pendant 4 années consécutives.¨
 Il est également blogueur sur les techniques cloud et en particulier Azure.
Vous pouvez le contacter sur Makram (point) jenayah (arobase) mail (point) com ou sur Twitter à l’adresse @makramjenayah.