19th June update - cpan mapping, gephi gsoc

No I’m not dead, yet.

Here some news about my work in the gephi team:

CPAN-Explorer

- CPAN Explorer is online : http://cpan-explorer.org (see the website for more informations)

- My next blog post will be a tutorial on how publish a map generated from gephi (in SVG file format) to the web, like the ones used on http://cpan-explorer.org

- I’m not satisfied yet with the authors map, and of course the packages map, which is unreadable from the embedded javascript map. I will discuss the reasons and alternatives in my next blog post

Gephi Timeline Component

- I made some GUI mockups (created a Timeline with Gimp, pixel by pixel)that provide some guidance

- I’m just thinking about how to divide the GUI into the corresponding layers and Java components..

- … by looking at other GUI modules in the gephi 0.7 branch

GUI:

  • a menu to select the metric (data used for the chart)
  • An upper viewport containing the timeline overview, with mouse-selectable zone
  • An optional bottom viewport containing a zoom on the selection
  • A button switch for the optional bottom viewport

API:

  • Control over the current position of the timeline : setPositionTo()
  • Control over the player: play(), pause(), setSpeed()

Gephi Summer of Code 2009

Today I’ll start a new category on my blog, dedicated to my participation to google summer of code.

During this period I will work on the Gephi open-source project (gsoc related page: gephi gsoc 2009)

Timeline 0.6

I worked yesterday on an old prototype code, which was due for Gephi beta 0.6 but could never be finalized, as it was somehow weak and prone to threading errors, and really experimental. There was conflicts between runnables from my code, and runnables from other parts of gephi, since I was new to the project, and didn’t new a lot about how was implemented the other components of Gephi.

I had to came back again on it in order to create a working version for the Gephi demonstration, which will done in a few days at ICWSM 2009 (San Jose, California) by Mathieu Bastian and Sébastien Heymann. I fixed a lot of bugs and removed obsolete code, but I will really have a lot of work for the new timeline engine planned for gephi 0.7.

Timeline 0.7

The new timeline engine, will be a progressive but complete rewrite of this old code base.

There will be change on all the aspects of the engine :

  • low-level datastructure access, will be done in collaboration with Mathieu Bastian
  • event system, will be rewritten to be more coherent with other events inside gephi
  • charting system, will be done using background sampling, to be efficient with large-scale datasets
  • detailed view chart, this sub-component will be added in a late part, as it need some design work (graphics and architecture).
  • image layers, this part will be rewritten and extended, to use a more efficient layer system

Quick Tip: using the best of gz and lzma

I come back with this small compression tip:

lzma can compress gz archives too, in some cases.

On one of my files (binary dump from one of my applications), I obtain these ratios:

1.9 Gb (raw) -> 2.4 Mb (raw.gz) -> 304 Kb (raw.gz.lzma)

My original file contained a lot of redondant data (basically, a huge matrix), so it was an easy job for gz to compress it to a very small file size (791 x !!), but suprisingly even this “compressed” archive could be compressed a lot more (x 8 !!) by lzma.

Simply awesome, because operating lzma on big Gb files is very slow, so gzip is more suited for these, especially if you call it directly from a program, to read/write a compressed stream.

Just try it yourself, depending on your data, it may worth it!

Rapport de projet ic05 : NetWitch

j’ai (enfin) fais la page de mon vieux projet ic05 :
http://uxmal.paradisia.net/netwitch/

il était temps, ça date de printemps 2007 quand même :D

ceci était un communiqué de Julian, adepte du micro blogging ;)
Non, enfait le truc, c’est que maintenant je fais des “pages” wordpress, et ça apparait pas dans les flux RSS.
Donc personne n’en sait jamais rien, snif..

Substance Look & Feel pour Java

Mon coup de coeur du moment pour faire du java pas moche : Substance

https://substance.dev.java.net/webstart/test.jnlp

joli, n’est-il pas ;)

Y’a même différents thêmes : https://substance.dev.java.net/docs/skins/toneddown.html

Dépendances logicielles entre packages Perl

** UPDATE **************************************

screenshots et rapport disponibles ici : http://uxmal.paradisia.net/sigl-cpan/

**************************************************

Un projet que je suis entrain de faire en ce moment, dans le cadre d’une UV TX à l’UTC.

L’objectif de ce projet est de mettre en place un système de visualisation des dépendances logicielles de CPAN, le dépôt logiciel de la communauté Perl. Il y a environ 53 000 modules répartis dans plus de 14 000 packages, autant dire que niveau dépendances il y a pas mal de choses à voir ;)

Ainsi, ce système permettra tout simplement de voir, pour un module ou un package donné, ses dépendances, c’est à dire les composants égalements issus de CPAN nécessaires à son fonctionnement.

Basiquement, ce genre de graphe ressemblera à ça (ce n’est encore qu’une maquette) :

Graphe de dépendances

Il s’agit du graphe des dépendances d’un package pris au hasard sur CPAN, App-Context. Il donne à voir tous les packages nécessaires à son installation automatique. Outre un véritable affichage basé sur des méta-données, qui rendra le graphe réellement utile (voir les résultats des tests officiels etc, un outil d’aide à la décision, en somme), j’ai aussi prévu de montrer le graphe des dépendances “inverses” (je n’ai toujours pas trouvé de nom pour ce concept..), c’est à dire l’arborescence des remontent les packages qui dépendent d’App-Context.

Pour ce package en particulier, il n’y en a peut-être pas beaucoup. Mais le développeur de PathTool, par exemple, aimerait peut-être savoir qui utilise son module, il doit y en avoir un certain nombre ;)

Un autre exemple : Apache Voodoo

L’objectif est bien évidemment didactique, nottamment l’occasion pour moi d’apprendre le java, un peu de gestion de projet, toute la partie crawl, représentation des données, les algos de parcours de graphes.

En ce qui concerne les outils, la partie visualisation devrait être réalisée au moyen d’un applet java existant, modifié pour l’adapter à mes besoins. Cet applet sera basé sur Géphi, un visualiseur de graphes en Java OpenGL encore en développement.

Voir la vidéo de démo de géphi.

Business Loto

Je n’ai pas pour habitude de faire des articles mono-liens “funs” (non, je suis pas un comique), mais quand même : attention à la noyade par flood de buzzwords !

http://fr.wikipedia.org/wiki/Business_loto

Grille de Business Loto

pour la forme: et blah blah bla

Opensource Business Models

Deux trois schémas de business modèles open source. Je les ai nommés en fonction de ce à quoi ils me font penser.

C’est un brouillon donc je le complèterais de temps en temps, c’est avant tout pour me faire un aide mémoire si jamais j’ai à réfléchir à un financement pour un éventuel projet opensource de type “moyen”.


The reseller

Base logicielle open-source (ex. plateforme mozilla), et extensions (modules) “à la demande”, pour vendre du “packaging”.

Avantages :

  • On peut créer des packages “libres” (si les composants sont en licence libre)
  • On peut créer des packages “non libres”.

Ligne de conduite :

  • Ex les IDE payants basés sur Eclipse, Netbeans, Firefox..

Exemple :Aptana, pleins d’éditeurs basés sur Eclipse, ou Firefox..


Modèle double jeu

Publier le logiciel avec une licence autorisant l’utilisation dans les logiciels libres, mais pas dans les applications commerciales (ex GPL).

Avantages :

  • Si on publie en GPL, ça reste totalement open source et donc la communauté peut récupérer le code, on peut l’utiliser sans problèmes pour des projets étudiants, de recherche etc…
  • Un développeur ou un étudiant habitué au logiciel et l’ayant utilisé sous licence open source sera plus enclin à le recommander pour une application commerciale dans son entreprise par exemple (sous licence payante) c’est donc très astucieux :)
  • Si la licence open source interdit la réutilisation dans des applications commerciales, il y a moins de soucis à se faire (d’un point de vu business/marketing) qu’avec les licences plus “permissives”.

Ligne de conduite :

  • -

Exemple : Qt/PyQt, de Trolltech


Le Dealer

Mettre en GPL la version N-1 de l’application. On continue de vendre la version N.

Avantages :

  • le programme reste gratuit et ouvert, toute la doc existe déjà, et surtout les personnes sachant l”utiliser aussi
  • dissuade la modification d’OpenGL (car tout ajout serait à recommencer dans la version d’OpenGL suivante)
  • L’application commerciale conserve toujours un petit plus “business” : docs, features de dernières minutes, suivi des tendances
  • La communauté libre a intérêt a voir le projet développé de manière industrielle, puisque cela fait évoluer la version opensource (à la même fréquence, mais à un niveau différent)

Ligne de conduite :

  • Release often and early :) pour décourager la concurrence de modifier le produit pour l’améliorer.
  • Suivre la communauté pour directement intégrer les requêtes de fonctionnalités dans la version commerciale
  • La version N-1 doit reste utilisable quand même, sinon personne ne l’utilisera !

Exemple : Silicon Graphics, avec GL et la version “alter” OpenGL


Modèle Deluxe

Mettre dans le domaine publique une version “light” de la version courante. On vend des versions à valeur ajoutée, avec des fonctions adaptées aux entreprises par exemple (possibilité de faire des plugins etc..)

Avantages :

  • La version opensource est la dernière mise à jour, et pas une version en retard par rapport à”l’époque”
  • La version opensource reste modifiable par la communauté si ils le souhaitent
  • L’application commerciale conserve toujours un petit plus “business” : docs, features de dernière minute, suivi des besoins des clients..

Exemple : Toutes les version “openXXXXX” ou “community” qu’on peut rencontrer : solaris, suse, des éditeurs UML…


Libre Service

Aux modèles précédents peuvent se greffer des services :

  • support
  • consulting
  • formations
  • version modifiée pour chaque client..

Ces services peuvent aussi purement et simplement justifier le tarif d’un “package” applicatif, qui serait alors totalement mis dans le libre, à la version N.

Avantages :

  • Approche professionnelle et industrielle.
  • L’application sera entièrement libre et donc sûrement récupérée ou modifié : mais en contrepartie elle bénéficiera d’extensions, plugins, libres ou non, de partenariat… tout ceci participant à la diffusion de l’application. Très positif.

Ligne de conduite : Il faut un bon support technique, doc etc.. toute cette partie doit être irréprochable.

Exemple : nombreux


L’ange gardien

Application 100% libre. Fonctionne par dons, dans une entité indépendante. Le business se fait par une entreprise de services et/ou consulting et/ou formation à part, et qui utilise l’outil libre avec de la valeur ajoutée.C’est un peu comme la version précédente, sauf que c’est un peu plus “séparé”.

Avantages :

  • L’application se développera grâce aux dons et aux développeurs bénévole
  • Ca a le mérite de ne pas associer l’application à une boite “commerciale et lucrative”. en contrepartie la boite de service sera un peu plus anonyme par contre, et clairement exposée à la concurrence…

Note : cette liste n’a pas la prétention d’être pertinente ou exhaustive malgré son titre tape à l’oeil. Elle le sera peut-être un jour, je la modifierais au fur et à mesure de l’évolution des choses

Kamaelia - python fiber network

http://kamaelia.sourceforge.net/

très très très similaire au framework réseau que je comptais faire pour mon projet d’interface traktopel… meilleur même. ça ressemble un peu au framework Anet que j’utilise sur mon projet de stage, en perl, pour le coté “parallélisme sans threads ni process” (même si tout comme Anet ça reste possible avec Kamaelia)

Pour le reste c’est vraiment différent, sous Kamaelia il s’agit d’un réseau d’éléments communiquant entre eux : ex linker un bouton d’interface graphique avec un élément qui fait se changer des photos d’un diaporama, linker la sortie de ce “changeur d’image” à une fenêtre, linker un socket d’entrée à un parseur…

http://kamaelia.sourceforge.net/Cookbook/PipelinesAndGraphlines

apparemment on peut tout faire, son, image, vidéo, 3D, réseau.

http://kamaelia.sourceforge.net/Components

impressionnant… ça me laisse encore sans voix ^^

Sinon dans un autre genre il y avait ce projet : http://freevo.sourceforge.net/about/features.php

abouti, une sorte de serveur d’application “pour la maison” : domotique, mp3, films… ce qui est proche de ce que je voulais faire.

Bon, comme j’aime pas faire des trucs qui existent déjà, je pense que je vais devoir trouver une nouvelle super idée géniale pour mon interface “de contrôle” ^^

Traktopel

Voilà, je suis passé du coté obscur je vais utiliser Google Code Hosting pour héberger mon projet actuel…

C’est une interface Web en python visant les smartphones ou consoles wifi, afin de les transformer en “super télécommandes” pour commander des choses dans une maison depuis son sofa ou sa petite chambre d’étudiant 600 km plus loin ;)

keywords : Python, YAML, SOAP, RPC

Une fois terminé je pense que ça sera sous la forme de :

  • serveur web “light” en python (c’est pour un outil personnel normalement donc…)
  • bibliothèque de petits modules librement éditables et extensibles

J’en reparlerais au fur et à mesure de l’avancement. Quelques shots non représentatifs de l’appli non fonctionnelle ^^ :

img_0354.jpg traktopel_alpha3.png img_0356.jpg img_0357.jpg

update :

projet à surveiller (principe similaire au miens) :

http://code.google.com/p/jellyroll/source/browse

Adresse IP sans points

Hier, en surfant sur le site de l’auteur du moteur à automate cellulaire golly, je suis tombé sur…ceci.

Très surprenant! je pense tout de suite à une question de conversion de base, et effectivement, d’après wikipedia :

IPv4, the most common form of IP address, uses 32-bit values, usually represented in dotted-decimal notation (four numbers, each ranging from 0 to 255, separated by dots, e.g. 147.132.42.18).

Each range from 0 to 255 can be represented by 8 bits, and is therefore called an octet.

J’en déduis donc qu’il est possible de remplacer la valeur n’importe quels des 4 étendues, codées sur 255 bits, par son équivalent octal.

Des codes de conversions sont dispos dans les commentaires de la doc PHPNet.

Il y a aussi un bout d’explication sur la conversion ip decimal <-> octal ici.

On dirait aussi que c’est une astuce très pratique pour stocker une IP en mémoire ou en base de données.

D’après la doc de Mysql :

mysql1.png

Là on voit qu’effectivement les points sont optionnels dans certains cas, ça à l’air d’être une bonne piste!

résultat sur manynames

Hélas j’ai rien trouvé de plus, je ne sais toujours pas dans quelles conditions on peut se passer des points… vous savez vous ? :D

Après, on peut s’interroger sur l”utilité de la chose sortie du contexte de la BDD ou de l’obfuscation… vu que ça ne marche qu’avec les clients qui respectent la rfc complète.

(avec Opera par exemple, ça ne marche pas).