dimanche 6 avril 2014

Quelques mots sur les MOOC (Massive OnLine Open Course)

A la source


Stephen Downes et Georges Siemens en 2008

Présentation 2008 : http://fr.slideshare.net/Downes/mooc-and-mookiesthe-connectivism-connective-knowledge-online-course-presentation
Présentation de 2009 : http://fr.slideshare.net/Downes/the-connectivism-and-connective-knowledge-course
Le site de Stephen Downes : http://www.downes.ca/mooc_posts.htm
La page wikipedia de George Siemens : http://fr.wikipedia.org/wiki/George_Siemens
La page wikipedia de Stephen Downes : http://fr.wikipedia.org/wiki/Stephen_Downes

De nos jours


Il y a principalement 3 plateformes qui regroupent les MOOC les plus suivis.

  • Coursera créé en avril 2012 par Daphne Koller et Andrew Ng 
  • Edx créé en mai 2012 par le MIT et Harvard
  • Plus minoritaire udacity créé en juin 2011.

En France


Une plateforme s'est mise en place : https://www.france-universite-numerique-mooc.fr/

Sinon les écoles francaises (Centrale, ENS, Polytechnique) ont commencées à intégrer des plateformes existantes (comme coursera, voir liste des institutions partenaires) en y dispensant leurs mooc.

Quelques articles sur le sujet :
http://www.nature.com/news/online-learning-campus-2-0-1.12590
http://www.nature.com/news/education-online-the-virtual-lab-1.13383
http://www.nature.com/nature/journal/v499/n7458/full/499275a.html

mercredi 19 mars 2014

Java 8 tout chaud sorti du four

     Je ne pouvais pas ne pas mettre un petit mot, ca y est Java 8 GA (General Availability) est sortie. Un certain nombre de développeurs se sont déjà fait la main (et on blogués) sur les milestone mais cette fois c'est la version officielle.

Le mot de Mark Reinhold : http://mreinhold.org/blog/jdk8-ga
Download depuis chez Oracle : http://www.oracle.com/technetwork/java/javase/downloads/index.html


Quelques réactions à la sortie :

Les outils suivent et supportent Java 8

     Et du coup des comparaisons qui peuvent être amusantes, les deux étant du bytecode quelles sont les différences entre scala et lambda Java 8.

     Alors pour le meilleur et pour le pire (je suis sûr qu'il existe des manières très tordues d'utiliser les lambda, default method, ...) avançons, essayons, testons, hackons et regardons ce que cela va donner.

dimanche 16 mars 2014

Maven en quelques urls

     Ce billet pour donner quelques urls utiles quand on utilise Maven. Je ne détaillerais pas tout ce que permet de faire cet outil car c'est vaste et les nombreux posts, livres à ce sujet le font déjà très bien.

     Pour commencer forcément : http://maven.apache.org/

La dernière version est actuellement Maven 3.2.1
L'historique des versions est disponible sous http://maven.apache.org/docs/history.html

Maven c'est quoi


Maven dans les grandes lignes c'est (http://maven.apache.org/what-is-maven.html) :
  • un outil pour "builder" les projets Java avec un cylcle de vie  bien défini.
  • un outil qui permet de gérer les dépendances aux librairies externes.
  • un outil qui peut distribuer/versionner les librairies Java via les systèmes de repository (local, intranet, internet).
 Un peu d'histoire sur Maven et sa philosophie.

Les solutions alternatives


     Les premières alternatives plus rudimentaires sont le scripting (sh, bat, ...) ou le make. En dehors de ces dernières il existe principalement trois autres solutions plus évoluées

Ant : http://ant.apache.org/
L'un des premiers à avoir permis de scripter des builds de projets Java en standardisant des tasks.

Ant et Ivy : https://ant.apache.org/ivy/
Ivy pour une gestion de dépendances dite agile qui est devenu officiellement un sous projet de Ant en 2007 (Mail de passage à l'incubator) permettant ainsi une complémentarité de ces deux projets.

Gradle : http://www.gradle.org/
Solution open source dont la communauté est drivé par GradleWare. Le code est disponible sous GitHub.

Gradle, Ivy et Maven via des plugins peuvent s'intégrer dans les différentes EDI (Eclipse, NetBeans, IntelliJ)

Maven c'est aussi un outil en ligne de commande


     Maven un outil en ligne de commande qui s'étend par système de plugin. Il en existe de très nombreux maintenus par Apache Maven ou d'autre organisations.

     Ces plugins permettent d'apporter de nouvelles fonctionnalités (déploiement sur des serveurs applicatifs, visualisation de dépendances, couverture de code par les tests unitaires, ...) ou peuvent faciliter l'intégration dans d'autres outils comme les serveurs d'intégration continu tel Jenkins.

Quelques plugins : http://maven.apache.org/plugins/index.html

En plus des plugins existant chacun peut développer les siens, adaptés à ses besoins

Maven : un repository et un outil de gestion de dépendances

 

     Les repository Maven sont les emplacements où sont distribuées/récupérées les librairies nécessaires aux builds de vos projets. On a un repository local sur le poste sur lequel on travail mais (fonction de la configuration utilisée) on peut être en interaction avec un repository Maven central, un repository d'entreprise, un repository d'éditeur (par exemple JBoss).

Les principaux repository Maven officiels : http://maven.apache.org/repository/index.html

Les outils permettant de faciliter la gestion des repository :
Une matrice de comparaison de leurs features : http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

 Rechercher une librairie sur un repository Maven central :
http://repo.maven.apache.org/maven2/
http://search.maven.org/#browse

Comment faire lorsque l'on est développeur et que l'on souhaite voir son framework publié sur un repo centrale Maven : http://lkrnac.net/blog/2014/03/06/deploy-to-maven-central/

Quelques ressources sur Maven 



dimanche 2 mars 2014

Un nouveau français Java Champion

     Un nouveau français viens de rejoindre le cercle assez fermé des Java Champion : David Gageot (http://blog.javabien.net/2014/02/24/look-ma-im-a-java-champion/)

     Pourquoi un rapide post sur ce sujet ? Parce que je trouve que c'est une bonne chose. Ce sont ces personnes qui amènent une émulsion positive dans notre monde de développeurs, qui peuvent donner envie d'avancer et qui par leur travail nous apportent à tous.

   Les java champions c'est quoi


En résumé : groupe comprenant des passionnés, des développeurs qui œuvrent pour la communauté Java au travers différentes contributions (auteurs de livre, speakers en conférence, ...)

La définition à la source
: https://java-champions.java.net/

C'est différent des Java RockStar (http://www.oracle.com/javaone/rock-stars/2013/index.html), programme visant plutôt à reconnaitre la qualité de speaker.

Tous les Java champions et leur bio : https://java.net/website/java-champions/bios.html

    Les frenchies Java Champions


     Quelques autres Java Champions à suivre


     Je ne vais pas tous les citer mais quelques uns de ceux que j'essaye de suivre régulièrement au travers leurs présentations, publications :


mais aussi Gavin King, Bruce Eckel, Jonas Boner, Joshua Bloch, Ben Evans, Neal Gafter, Brian Goetz, Kirk Pepperdine et bien d'autres encore.

dimanche 16 février 2014

La veille technologique et les Blogs

     On a changé de monde, l'information brut qu'il fallait chercher, dénicher voir payer est maintenant abondante, à porté de main et gratuite. Par contre l'information utile, pertinente pour un besoin particulier peut rester compliquée à trouver. Elle se trouve noyée dans cette masse d'informations accessibles.
     2e temps après l'arrivé du web et la possibilité de partager cette information, les entreprises ont commencées à développer leur expertise, maturer ces changements. Elles se sont appropriées les technologies, les médias de communication et ont irriguées le web de leurs communications, informations (à dessein commercial, marketing, ...) C'est normal toute entité s'adapte à son environnement afin de s'y développer (individus comme entreprises).
     3e temps : le temps réel, l'information de plus en plus vite, au plus près de l'individu via les supports mobiles et toutes les portes ouvertes permettant d'attirer et mobiliser leur attention.

     La veille technologique est un domaine qui vit pleinement ces changements mais avant de poursuivre deux éclaircissements :

La veille technologique pour moi c'est quoi
Principalement une démarche personelle qui me permet de me tenir à niveau rapport aux changements touchant mon domaine professionel : l'informatique, le développement.

La veille technologique à quoi cela me sert
  • savoir où on l'on peut trouver l'information qui nous intéresse, l'information nécessaire le jour où j'en aurais besoin.
  • sentir les tendances. Plus on croise des flux d'informations nombreux et variés, plus on peut discerner ce qui intéresse, les technologies, pattern qui se renforcent et ceux qui au contraire s'affaiblissent et disparaissent.
  • voir les nouveautés avant qu'elles ne s'imposent et croissent dans le monde de l'entreprise.
  • renforcer ma culture générale autour de mes centres d'intérêts.
  • se promener autour de sujets technologiques de fonds ou du moment, c'est comme cela que peuvent surgir des idées, des rapprochements incongrus qui génèrent une idée qui se traduira par un développement, voir un projet.

     Pour pratiquer cette veille technologique, un type de média (parmi d'autres) m'intéressant particulièrement sont les blogs. Il en existe d'autres tels les mailings listes, les archives de mails de projets open source, les forums techniques ou généralistes, les revues, les conférences, les conversations café, ... mais pour ce billet je garderais le focus sur les blogs.

     Les blogs peuvent être de différentes natures (blog personnel, blog d'entreprise, blog communautaire, agrégateur de blogs, ...). C'est un support d'information vivant, souvent proche de l'individu pour les blogs personnels donc moins standardisés bien que chacun puisse avoir ses méthodes et centres d'intérêts particulier. Donc c'est de l'ensemble et leur diversité que l'on peut faire une veille technologique intéressante.

     Afin de pouvoir suivre cet ensemble, des outils adaptés peuvent faciliter la veille (voir juste la rendre possible).

     Outils pour suivre les blogs


     Delicious, Google Reader ont à ma connaissance été précurseurs pour cet outillage. En tout cas ce sont ceux vers lesquels, à l'époque je me suis tourné.

     Depuis Delicious a perdu de son charme pour finir par être racheté et devenir à dimension plus social que pratique (pour un développeur) et Google Reader a fermé ses portes. Du coup je me suis lancé à la recherche d'une alternative.


Les fonctionnalités en vrac que j’attends de tels outils :
  • Non payant, pas l'intention sur ce type de service de dépenser un budget pour l'instant.
  • centraliser en un endroit mes lectures au lieu de parcourir tous les sites.
  • recherche dans les articles (recherche au milieu d'un sous ensemble du web).
  • face à une masse importante d'information un bon moyen d'avancer plutôt que tout voir, c'est voir ce qui bouge : donc isoler et faciliter la lecture de ces mouvements.
  • statistiques ... c'est toujours intéressant.
  • ouvert, pour que ce que j'y ai mis soit exportable dans un format compréhensible (ceci pour le respect du temps que j'ai passé à y saisir des informations ou faciliter ma migration vers un autre outils).
  • consultable même derrière des firewall d'entreprise (pas de système login pour consulter, pas de tag word social, ...).
  • le top du top, avoir une api qui permet d'interagir de manière programmatique.
Les outils recensés

     Parmi ces possibilités : il y a des solutions payantes, des solutions plus orientés support mobile, ... Au milieu de tout cela mon choix a été oldReader pour un résultat mitigé pour l'instant :
  • Rachat peu de temps après (ils se sont fait débordés par les migrations depuis Google Reader vers chez eux). Ce n'est pas forcément une mauvaise chose en soi mais à voir le changement de positionnement et stratégie suite à cela.
  • Conservation et search dans les posts des blogs pas du niveau de Google Reader
  • Limitation du nombre flux à 100 dans la version non premium. Premium qui montre peut être la nouvelle stratégie (http://blog.theoldreader.com/post/76417559063/the-old-reader-premium)  
     Bref, ils font des choses bien mais qui ne me conviennent pas forcément pour l'utilisation que je cherche à en faire donc il est très probable que je regarde inoreader de plus prêt sous peu.

Quelques blogs pour cette fameuse veille


Disclaimer : attention cette partie du billet va ressembler à un catalogue d'url.


Donc un outil oui mais pour suivre quoi ? Regardons cela de plus prêt.

Pourquoi je les liste ici :
  • les retrouver facilement, non encapsulés dans un autre outil comme ceux cités précédemment.
  • les partager avec celles et ceux intéressés.
  • cela a été l'occasion d'écrire ce post donc ce serait dommage de ne pas les citer.

Les blogs corporates d'Oracle

Les blogs perso/oracle


Blogs de sociétés et fondations dont le coeur de métier est l'IT


Blogs de quelques autres sociétés informatiques


Des blogs plutôt communautaires

Des Aggregateurs de flux et concentrateurs d'articles (très verbose)


Quelques blog d'IT people


D'autres blogs perso IT

Pour finir, pas des blogs mais des sites tournés vers les Communautés développeurs et projet open sources

dimanche 2 février 2014

Quelques piliers de l'informatique

     On croise régulièrement leur nom (ou pas), on utilise de manière directe (ou indirecte) le fruit de leur travail et l'on ne sait pas toujours bien qui ils sont : les fondations, organismes travaillant dans le champs technologiques de l'informatique.

Ci dessous quelques uns de ces piliers.

     Côté internet


W3C (World Wide Web Consortium)
http://www.w3.org/
Présentation wikipedia : "organisme de normalisation à but non lucratif, créé en octobre 1994 pour la promotion de la compatibilité des technologies web."

IEEE (Institute of Electrical and Electronics Engineers)
http://www.ieee.org/index.html
Présentation wikipedia : "association professionnelle ayant pour but de promouvoir la connaissance dans le domaine de l’ingénierie électrique (électricité et électronique). Juridiquement, l'IEEE est une organisation à but non lucratif de droit américain."

OpenGroup
http://www.opengroup.org/
Présentation Wikipedia : "consortium de normalisation neutre vis à vis des fournisseurs et technologies."

IETC (Internet Engineering Task Force), et les RFC (Request For Comments)
http://www.ietf.org/
http://www.ietf.org/rfc.html
Présentation wikipedia : "groupe informel, sans statut, sans membre, sans adhésion. Le travail technique est accompli dans une centaine de groupes de travail. Le but du groupe est généralement la rédaction d'un ou plusieurs Request for comments (RFC), nom donné aux documents de spécification à la base d’Internet."

Une RFC symbolique sortie en 2009, la RFC 5540 "40 Years of RFCs" 
http://tools.ietf.org/html/rfc5540

ICANN (Internet Corporation for Assigned Names and Numbers)
http://www.icann.org/
Présentation wikipedia : "autorité de régulation de l'Internet. C'est une société de droit californien à but non lucratif contrôlant l'accès à tout domaine virtuel, qu'il soit générique ou national."

Plus côté développement, OS et open source


La fondation Apache
http://www.apache.org/
Présentation wikipedia : "L'Apache Software Foundation (Fondation Apache) est une organisation à but non lucratif qui développe des logiciels open source sous la licence Apache."

Les projets de la fondation Apache : http://projects.apache.org/indexes.html

Fondation Eclipse
http://www.eclipse.org/org/foundation/
Présentation wikipedia : "La fondation Eclipse est une organisation à but non lucratif supervisant le développement de l'IDE open source Eclipse et des projets gravitant autour, et qui aide à cultiver une communauté open source et un écosystème de produits et de services complémentaires autour d'Eclipse."

JCP (Java Community Process)
https://jcp.org/en/home/index
Présentation wikipedia : "Le Java Community Process (JCP) est une organisation créée par Sun en 1998. Son but est de coordonner l'évolution du langage Java et des technologies qui lui sont associées (voir la plateforme Java)."

Mozilla Foundation
http://www.mozilla.org/en-US/foundation/
Présentation wikipedia : "La Mozilla Foundation (en français, « Fondation Mozilla ») est un organisme à but non lucratif établi en juillet 2003 pour gérer le développement et assurer la publicité des logiciels libres issus de la suite Mozilla."

EFF (Electronic Frontier Foundation)
https://www.eff.org/
Présentation wikipedia : "organisation non gouvernementale internationale à but non lucratif. L'objectif essentiel de l'EFF est de défendre la liberté d'expression sur Internet. En effet, le développement de celui-ci ne peut se faire sans la prise en compte des sujets politiques, économiques et légaux.

HSA Foundation (Heterogeneous System Architecture)
http://hsafoundation.com/
"not-for-profit consortium of  SoC IP vendors, OEMs, academia, SoC vendors, OSVs and ISVs"

Ils ont été rejoint par Oracle en novembre 2013

GNU
http://www.gnu.org/
Présentation wikipedia : "GNU est un système d'exploitation libre lancé en 1983 par Richard Stallman, puis maintenu par le projet GNU. Son nom est un acronyme récursif qui signifie en anglais « GNU’s Not UNIX » (littéralement, « GNU n’est pas UNIX »). Il reprend les concepts et le fonctionnement d’UNIX."

Linux Kernel Organization
https://www.kernel.org/category/about.html
"The Linux Kernel Organization is a California Public Benefit Corporation established in 2002 to distribute the Linux kernel and other Open Source software to the public without charge. We are recognized by the IRS as a 501(c)3 private operating foundation"

FSF (Free Software Foundation)
http://www.fsf.org/
Présentation wikipedia : "La Free Software Foundation (FSF) (littéralement « Fondation pour le logiciel libre »), est une organisation américaine à but non lucratif fondée par Richard Stallman le 4 octobre 1985, dont la mission mondiale1 est la promotion du logiciel libre et la défense des utilisateurs."

OSI (Open Source Initiative)
http://opensource.org/
Présentation wikipedia : "L’Open Source Initiative est une organisation dévouée à la promotion des logiciels open source."

Un exemple d'action : la TimeZone database et l'EFF

Un exemple qui à mon sens reflète bien l'utilité d'organismes de ce type le cas de la timezone database.

C'est quoi la tz database : http://fr.wikipedia.org/wiki/Tz_database

On peut suivre les différentes étapes de cette histoire sur le blog de Stephen Colebourne (développeur Java connu entre autre pour la librairie Java JodaTime)

Le communiqué de presse de EFF qui est intervenu :



dimanche 26 janvier 2014

Web, Big data & Algo

     Les jours (mois) défilent, quelques conférences, articles et formations plus tard. Peu de temps pour écrire sur le blog mais une actualité informatique toujours aussi riche. Ce qui a attiré mon attention récemment.

Côté Web : HATEOAS et le modèle de maturité de Richardson

Brève introduction en quelques URLs :

     Cela semble dans les tendances, de plus en plus de web API proposées ce qui multiplie encore les possibilités derrières. Un bon exemple de ce que donne une bonne API Web l'api GitHub.

BigData : changement de modèle

     Côté SI, la thématique BigData continu de faire couler des bits (articles, conférences).

     En dehors des nouveaux frameworks, un idée qui fait son chemin, les DSMS (Data Stream Management System). La donnée n'est plus fournie sous un mode batch dans un format conventionné mais l'on fait face à des flux continus d'information, de différentes sources et sous différents formats (structuré, semi structuré, non structuré). Pour tirer du sens de ces informations (et de leur croisement), il va falloir être capable d'intégrer en continu, des formats hétérogènes et être capable d'interroger ces données n'importe quand pour en tirer de l'information utilisable.
  • Importance de la sémantique pour aller chercher et lier ces données
 

Java 8 prépare son arrivé

     Une présentation sympa, très didactique permettant d'aborder les nouveautés importantes (là aussi vous verrez cela parle Stream) Lambda, Streams et Collectors.

Ca bouge du côté gestionnaire de source ?

Le choix récent de FaceBook qui fait un peu de bruit : Mercurial plutot que Git

Modèles de développement Google et FaceBook
 

Back to basis

     Pour finir quelques références de livres sur le domaine des algorithmes et un de ses champs d'application que l'on subi souvent sans bien en voir le coeur : le Garbage Collector.

"Algorithm Design" de Kleinberg et Tardos
http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358

"Algorithms in Java" de Robert Sedgewick
http://www.amazon.com/Algorithms-Java-Parts-1-4-Pts-1-4/dp/0201361205/

"Introduction to Algorithms", de Cormen, Leiseron, Rivest et Stein.
http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844

"Algorithms (4th Edition)" de Robert Sedgewick, Kevin Wayne
http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/

"The Garbage Collection Handbook: The Art of Automatic Memory Management" (Chapman & Hall/CRC Applied Algorithms and Data Structures series) de  Richard Jones, Antony Hosking, Eliot Moss
http://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795/