Aside

Lettre d’espoir à Ivo et tous les devs qui n’ont d’autre choix que d’utiliser Windows

Ivo, c’est mon collègue. On se prend parfois la tête, mais force est de constater qu’on a réalisé de belles choses ensemble ! Mais surtout, comme moi, Ivo est un Linuxien qui a peu envie de passer sous Windows. Alors quand l’inéluctable se fait de plus en plus inéluctable, Ivo et moi, ben… on est sacrément tristes. Et on se pose des questions.

C’est sûr que nos ventes sous Linux sont plutôt faibles (euphémisme) et que l’utilisation de futures libs Windows-only clôt le débat: il va falloir y passer. Et abandonner Linux. Mais pour des Linuxiens, passer à Windows c’est

  • le plaisir d’un antivirus se déclenchant toujours au mauvais moment
  • les joies de la ligne de commande cmd (#partiVomir)
  • un environnement toujours à la traîne sur les grandes tendances qui facilitent la vie des devs (des conteneurs avec Windows en guest, ca existe ? Docker anyone ?!)
  • un clicodrome qui donne de mauvaises habitude aux gens (et aux devs qui connaissent pas autre chose)
  • prolonger le vieux mythe qu’il faut payer pour une suite bureautique
  • une insécurité anti-agile dûe aux licences: ai-je le droit d’installer plusieurs fois mon système en multi-boot, puis-je créer des VMs, des conteneurs, puis-je tester chez moi le même système qu’au boulot ? Et si l’envie me prend de tout réinstaller, va t’il falloir ré-activer la bête ? Quelles conséquences ? Je n’ai pas envie de me mettre dans l’illégalité moi ! Ni entraîner mon entreprise dans ma chute alors que tout ce que je veux c’est tester des nouvelles choses pour le boulot ! Je crois que dans le doute, les utilisateurs de Windows ont appris à ne rien faire ou à déléguer à l’IT tous ces problèmes. En fait ils ont peut être raison, ils ne se foulent pas trop et travaillent à la papa comme les devs des années 90… Alors qu’on a tous ces outils opensources à porté de main, ca me rend fou…

Bon, ça c’est ce dont nous avons peur Ivo et moi… Mais Ivo, il faut que je te dise: tout n’est pas si noir. Si si, regarde ! Déjà nous allons tester à nouveau un système que nous avons délaissé il y a longtemps. Ça ne peut pas nous faire de mal de réapprendre quelquechose de nouveau. Se faire un peu mal au cerveau, ça fait du bien parfois ! Et puis j’ai ouï dire que Microsoft a plutôt bien évolué récemment. Ecoutes un peu:

Alors ce n’est certes pas le Nirvana, mais il y a sans doutes moyen de faire de belles choses malgré tout. Et puis comme on n’arrêtera pas notre passage sous Windows, autant l’embrasser pleinement et tirer le meilleur de cette épreuve. Et autant aussi faire en sorte que ce passage soit bénéfique: si nous ne pouvons éviter Windows, exigeons au moins d’être root (pardon, “administrateur”) sur notre machine, exigeons les dernières versions (y compris bêta) qui nous offriront la possibilité de tester les nouveautés (Ubuntu shell, ssh, conteneurs, HyperV…)

microsoft Loves Linux

De toutes façons, et pour terminer sur une autre note d’espoir, on sait bien que l’Open Source est en train de grignoter le monde. Donc tôt ou tard, on repassera sous Linux. Au moins en partie. Car qui peut encore se passer longtemps de web, d’appstores, de Cloud et de servers distants. Et quel professionnel un minimum sérieux peut imaginer faire tourner ces serveurs sous Windows (on parle de vrai serveur sur Internet là, pas de jouets pour IT planqué derrière un Firewall dans un intranet) ?

 

 

Attention: ce post contient de vrais morceaux de vie, d’opinions, ainsi que des piques pas forcément fondées destinées à générer des commentaires:).

6928332800_5e835e7b88_z

Une idée pour aider (sauver ?!) la démocratie #uneSeuleLoi

Je vais vous conter une réflexion qui nous anime, mon père et moi depuis quelques jours. Elle concerne une idée qui, nous pensons, est la seule susceptible d’être réellement mise en place afin d’apporter un garde fou sérieux à la démocratie. La vraie démocratie, pas celle que nos politiciens nous vendent depuis toujours.

Le constat

  • la classe politique est constituée principalement de professionnels de la politique.
  • Ces gens ont un agenda personnel
  • Les vraies réforme qu’il faudrait faire ne sont souvent pas prises car susceptible de se mettre à dos une partie de la population
  • Il y aurait sans doutes plein de “petites” lois à faire passer qui ne passeront jamais avec le système actuel
  • Ce système que l’on appel démocratie est à bout de souffle
  • Mais que proposer d’autre ?

Personnellement, ça fait un moment que j’en suis convaincu.

J’ai lorgné du coté du Parti Pirate pensant qu’il pourrait apporter du sang neuf…

Récemment je lorgnais du coté du tirage au sort tel que vanté par Etienne Chouard. Même si ça me semble être LA meilleure des solutions pour le bien de tous…  franchement… comment envisager une seule seconde qu’une fichue équipe de politiciens véreux mette ce système en place ? Cela serait scier la branche sur laquelle ils se vautrent comme des cochons (vous n’avez jamais vu de cochons vautrés dans les arbres ?!).

L’idée

L’idée, L’IDEE quoi, est toute con. Elle reprend en fait en grande partie ce qu’a tenté Lawrence Lessig aux USA mais en la prolongeant. Il suffirait, à chaque élection présidentielle, d’avoir un candidat dont le programme se limiterait à une loi. Une seule. Il promettrait solennellement de:

  • démissionner dés que cette loi aurait été mise en place
  • ne pas toucher de salaire de président à vie
  • … ajouter ici tout ce qui pourrait éviter le faire passer pour un vendu…

Contraintes sur LA loi

LA loi défendu tous les 5 ans devrait être:

  • évidente
  • plaire à tous (sauf aux politiciens l’intérêt étant d’arriver enfin à faire passer les quelques lois bonnes pour tous mais que eux ne prennent jamais)
  • vraiment bénéfique

La première loi qui correspond à cette description est évidemment le non cumul STRICT des mandats.

Avantages

Avec une seule loi dans sa besace, le candidat de notre… hum… parti (?!) n’aura que peu à faire pour expliquer son programme. Les électeurs, les journalistes devraient facilement comprendre l’enjeu.

Tous les déçus de la politique devraient logiquement voter pour notre candidat.

Au final on pourrait réparer/patcher/améliorer le système loi après loi, à chaque élection présidentielle.

Problématiques

Elire un président pour une loi et ensuite re-convoquer des élections juste ensuite peut sembler “un peu” lourd.

Il faudrait quelqu’un en qui les Français ont confiance et dont les compétences, la droiture et l’honnêteté ne peut être remise en cause (Nicolas Hulot ?!).

Cette solution au problème politique me semble tellement évidente maintenant que je ne voit pas comment les tout puissants hommes politiques ne mettraient pas TOUT en œuvre pour l’éviter (menaces, etc…)

 

6928332800_5e835e7b88_z

Photo Olivier PanzaCC by NC 2.0

Aller, dites dans les commentaires si vous pensez aussi ou non que #uneSeuleLoi est la meilleure façon de s’en sortir !

 

#uneSeuleLoi #oneLawToRuleEmAll #inspiredByLawrenceLessig

 

Add an existing bean/object to a Spring ApplicationContext using JavaConfig

Here’s a (very) little post to demonstrate how to add a pre constructed instance to Spring in order to make it known by the ApplicationContext. Then you can inject it into any classic Spring-managed bean.

When would it be usefull ? Imagine you have a legacy application not using Spring. A new feature of this app uses Spring and needs to call methods of an object created by the legacy part (and thus unmanaged by spring). If you use the old XML Spring config, there are numerous exemples on the net. If you want to use the shiny new Javaconfig way, you may have a hard time figuring out how despite you know it must be so simple. Yes it is and here’s how:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.getBeanFactory().registerSingleton("myBeanName", new String("String handled as Singleton in Spring"));
context.register(AppSpringConfig.class);
context.refresh();

This is the simplest way I found. Then up to you to autowire this “legacy” bean in you brand new Spring managed code !

Tutorial: CXF Webservice using Maven & an XML Catalog

I’ve just published on Github a tutorial about separating the webservice (with WSDL) Maven project from the project containing the XSD. The goal is to enhance all projects overall testability.

The tutorial is available in the project wiki on Github: https://github.com/fmarot/xml-mapping-tutorial/wiki

The Maven projects are available on Github too: https://github.com/fmarot/xml-mapping-tutorial

JavaFX: the “whaou !” factor

Yesterday’s evening was Paris JUG (Java User Group) meeting dedicated to RIA technologies. The first presentation by Francois le Droff (from Adobe) was about Flex and the second one by Simon Ritter (from Sun) was about JavaFX.

Flash / Flex for the frontend, Java / Spring for the backend

First of all, let me state that I have never ever been a huge fan of Flash. From the early days of the web, I’ve always found that “simpler is better” and when I encountered website with flash based animated menu I was always horrified: it was so low, so “in your face”, so not standard… So my impressions may not be objective. But nevertheless I know that some useful and pro applications are made possible thanks to flash.
So basically, Francois started by presenting Flash, Flex (Flex is ActionScript + MXML for GUI building compiled into a swf file) and Air (the VM). Then he became more specific about Flash/Flex and Spring integration on the server. He demonstrated how a flash application sent to a client could communicate with Java/Spring code in the server. This allows to keep existing backend in Java while providing clients with the great experience (well, that’s the marketing terms, not my own thoughts😉 ) of a flash based app. The thing is that now, Flash and Spring can be even more tightly integrated than before, when the “Spring factory” was used.
The new framework seems to offer synchronizing facilities. When the client is offline, modifies locally some bunch of data, and then is back online, then some conflict detection may be used. Moreover, thanks to the experience of Adobe in this field and the existing tools, the integration of artists work is said to be easy.
But the important problem for me lies with all the plumbing involved. Watching the presentation reminded me of the EJB 2 days where simple things required a lot of code, of configuration and the developer had to maintain many files coherent. It was very error prone. And even more here where 2 different languages are involved ! In the end, I feel like it may be a good technology but that may require a lot of efforts to deal with both the Java code AND the Flash code.

JavaFX, impressive in 2D. But only a toy ?

Regarding JavaFX, I was just curious because I never really took the time to dive into this new Framework/langage. Simon Ritter started with the basics of what JavaFX is. Basically, Java FX is a declaration language in which you describe what you want and how to display it instead of building from scratch your app. So its declarative nature takes it more toward HTML than toward Swing. It is said to be simpler to integrate UIDesigner and graphists work (the one done in Photoshop and Illustrator) but I don’t really see how… Nevertheless, apparently you can export their work from Adobe CS3 and CS4 files directly to JavaFX. And a Designer Tool is said to be ready quite soon (the marketing department did not allow Simon to show it if I remember well. What a shame !). What is sure is that JavaFX really seems a simpler Java2D than a “Swing 2” framework.
– First of all, the notion of ‘scene graph’ is fundamental. The elements are all grouped together with a parent/son relationship
– out of the box, many effects are available (motion blur, lightning shadows), plus transitions (fade, scale, rotate…), animations (timelines, keyframes…). They all allow to customize easily the components of a scene.
– medias can be integrated. Video for example are rendered at worst using a software codec if no hardware is available. And the Mediaview is a part of the scenegraph and treated as all other nodes (effects can be applied and so on…)
All of this reminded me of a 3 month internship I did in the video game studio Cyanide. At the time I worked on the menus (main GUI) of a rugby management game using a custom scripting language. What a shame we did not have JavaFX at that time ! I really think it can allow to create easily very good-looking menus even in videogames.

But the thing is that you still have to CODE your app. And for this, JavaFX makes thing (supposedly) easier by removing (most of the) need for the listener pattern in GUI because it provides the concept of *binding*. You can define that a variable (‘a’) depends on another variable (‘b’). So each time ‘b’ is modified, the new value of ‘a’ is computed again. The binding is optionally lazy.
I was quite disturbed by the lack of object orientation of its syntax though… For example you can write:

  • var revDays = reverse days
  • delete 31 from days
  • insert 5 into days

The summit of the presentation was the demos: Simon did a HUGE performance there, using Netbeans running on Ubuntu. It started with a round clock where the hands of the watch were replaced by concentric circles. With curved text on each circles ! But it was only a matter correctly positioning each character of the String, no magic involved here… Then he demonstrated the demo of a book: each page had a specificity (some writing, a video, a translucent page…) and you could turn each page with the mouse resulting in a realtime animation extremely realistic. It was a bit like this demo, but much more advanced. The crowd really like this one and applauded loud. The last demo was the ‘magical’ one. It was inspired by Johnny Chung Lee’s work with the wiimote. The impressive part was when Simon handed a plastic frame equipped with IR-sensors in front of both a wiimote linked to the laptop (thanks to a Java bluetooth stack) and a videoprojector. A card was displayed by the computer+projector onto the frame, and when Simon moved (or flipped !) the frame, the program moved the image accordingly. In realtime ! Even if its hard to describe it here, believe me: that was amazing and the crowd gave an ovation. It reminded me of the Natal project that Microsoft recently showed at E3, on a lower scale though.
In the end, I think that JavaFX has the opportunity to become something very useful: it can create wonderful good-looking application while staying in the Java World. The advantage of using FX for the front end GUI is the same as using Groovy as a scripting language: it enhances the possibilities while leveraging all the existing code and staying on the well-known VM and Java ecosystem. But Simon did not talk at all about the communication between the fat FX client and the backend server. Whether it involves as much plumbing as Flex does or not, I don’t know. I just hope not because, after all, it’s all “Java” !

What’s the future ?

To conclude we have 2 great technologies. But I think, some questions remain:
It seems we can do more and more extraordinary stuffs in basic Javascript. Why use flash or Java FX ? And what’s their advantage versus Google Gears ?
Flash seems not really SEO compatible (although an agreement has been made with Google to reference flash based app content), and deep linking is not a very trivial task (although Deezer made it, each state of the app has a different URL). I think it’s the same for JavaFX.
Nevertheless, the future looks promising and I can’t wait to see JavaFX become mainstream !

minor edit on 2009-07-14: added links + corrected typos

Soirée Grid Computing au JUG Paris & annonce JavaRebel

“Cache distribué”, “Network Attached Memory” et “Data Grid”, tel était le thème principal de la soirée du Java User Group de Paris. La présentation était tres intéressante et a fait bien réfléchir sur les meilleurs moyens de stocker les données selon les cas d’utilisation (peu d’écriture & beaucoup de lectures ou inversement etc…). Une telle présentation fait aussi prendre conscience des contraintes (et solutions !) qui se posent aux énormes sites d’e-commerce et de réservation en ligne (SNCF par exemple).
Pourtant, ce qui m’a le plus marqué, c’est la présentation du framework/librairie/utility JavaRebel. Je le connaissais déjà et avais déjà lu du bien de cet outils: il permet de modifier son code Java et de le recharger dans son application à la volée, de façon transparente, pour pouvoir tester immédiatement les modifs. Les développeurs Web me diront qu’ils peuvent déjà le faire avec les JSP… Mais là, on peut quasiment tout modifier (changer la signature des méthodes, ajouter des méthodes, faire des refactor du code) meme dans le code des controllers, des DTO, des objets métier etc… Et ceci sans être obligé de redéployer son appli pour pouvoir tester. La démo live Eclipse/Spring Pet Clinic qui nous a été faite était bluffante. Que de temps gagné pour les développeurs !
Mais la grosse news était quand meme l’annonce d’une version live qui pourrait (à terme car elle est actuellement en dev) agir sur LA VERSION DU CODE EN PRODUCTION et non plus simplement sur le poste du dévelopeur ! Cet outil pourrait analyser tout seul les modifications de code et dire si oui ou non les modifs sont applicables de façon transparente sans avoir à redéployer toute l’appli. Je trouve ca énorme, quelle avancée. A surveiller de prés donc.