Archive for the ‘Informatique’ Category

Web scraping, web mashing

Thursday, March 8th, 2007

5 Ways to Mix, Rip, and Mash Your Data introduces promising web and desktop applications that extract structured data feeds from web sites and mix them together into something possibly useful to you. Think of things like getting filtered Monster job ads as a convenient RSS feed, along with job ads from your other favorite job sites. This reminds me my Python hacks for automating web crawling and web scraping. Sometimes, I wish I could find time for working a bit further on that…

Missions solidaires pour prestas en intercontrat

Friday, February 23rd, 2007

Christian, Bader, Jef et Jjay m’ont donné quelques pistes pour améliorer mon idée: comment convaincre des sociétés informatiques de s’investir dans des projets technologiques à vocation solidaire? Merci à tous les 4!
Un gros risque, c’est que ce genre de choses “terminent à la comm’” comme l’indique Christian. Les SSII n’ont probablement “aucune velléité de changer le monde”, en tout cas, ce n’est pas leur vocation. Leur préoccupation évidente semble être “le profit court terme”. Mais pourquoi les SSII n’emploient-elles pas leurs prestataires en inter-contrat à des projets profitables pour elles à plus long terme (projets internes, contribution open source, …) plutôt que de les laisser moisir dans un coin le temps qu’un commercial arrive à les recaser chez un client? D’une boîte à l’autre et d’une personne à l’autre, l’inter-contrat est vécu plus ou moins bien, avec des situations parfois cocasses. En tout cas, l’intercontrat est une source de problèmes pour les SSII et pour leurs employés.

D’un autre côté, il y a peut-être des leviers accessibles pour faire changer cette situation et, du même coup, répondre aux besoins technologiques des innovateurs sociaux.

La notion d’entrepreuriat social, ou d’ethique est très à la mode chez toutes les entreprises qui ont une médiocre image de ce côté là (ça inclue banques et SSII amha).

Que faire? Voici vos suggestions:

faire que les CLIENTS des SSII soient attentifs à ces démarches (dans leur processus de décision ), et comme par hasard tout se débloque

[Peut-être créer des] jeux-projets-concours [:] sélection des meilleurs projets et financement + aide logistique, ça peut marcher.

[De toute façon,] les idées ne peuvent pas venir de l’intérieur [et il faut que la solution permette d'] identifier une retombée financière à quelques mois

Ce n’est pas les SSII qu’il faut convaincre mais d’abord ceux qui travaille dans ces entreprises (de préférence d’une taille respectable à mon avis). S’ils sont motivés ils peuvent faire bouger leur management et toi tu peux les aider à trouver les arguments pour cela.

J’ai envie d’extraire de ces suggestions quelques éléments pour un cahier des charges : la solution doit…

  • apporter une carotte économique pour la SSII, du profit à court terme, peut-être en impliquant certains clients
  • s’appuyer à fond sur la motivation des employés, exploiter celle-ci par des formes d’animation adéquates
  • être économique viable (entreprise sociale, donc entreprise également)

Et si on achetait les prestataires en inter-contrats à leur SSII à un pourcentage symbolique de leur tarif journalier habituel? Cela fournirait l’incitation économique à leur SSII: “Du moment que je sais que je peux disposer de cet intercontrat dès que je le veux pour le mettre chez en client, pourquoi ne pas le vendre à 1% de son prix habituel à un client ‘entreprise sociale’. Si, en plus, ça redore un peu l’image de marque de la boîte et que ça motive certains employés, c’est ça de gagné en plus!”?

Et si ce montant symbolique était réuni par les employés motivés pour participer à l’opération et changer le monde à leur échelle? Pour 10 à 20 employés en mission (selon les périodes et les sociétés), il y en a, disons, 1 en intercontrat. Avec un abonnement/cotisation de quelques dizaines ou centaines d’euros par an et par personne, on réunit le montant nécessaire pour financer une mission solidaire. “Aujourd’hui, je suis chez un client. Mais demain, ça pourrait être moi en intercontrat. Alors, comme j’aimerais bien que certains de mes collègues et moi puissions avoir un véritable impact sur l’environnement/les plus pauvres/la démocratie/le développement des pays du Sud/la priorité de mon choix grâce à ce que l’on sait faire le mieux (la techno), j’achète avec eux le droit de participer à une telle mission lors de mon prochain intercontrat”.

Cette solution consisterait donc à créer un fournisseur de missions solidaires pour prestataires en intercontrat. Les clients sont des prestas qui veulent profiter d’un futur intercontrat pour essayer de changer le monde à leur échelle (plutôt que de se faire chier à éviter les patates et à traîner dans l’agence ou au siège). Les produits sont des missions à forte qualité sociale/environnementale pilotées par des pros du secteur, des gens de terrain qui peuvent vite faire sentir au presta les problèmes sociaux/environnementaux ou autres à traiter. Les autres fournisseurs, ce sont des SSII qui voient d’un bon oeil l’idée d’arrondir leurs fins de mois en vendant certains intercontrats sur un second marché, ultra-discount.

Comment répondre aux questions que ce genre de proposition pourrait soulever? Qu’est-ce qui donnerait suffisamment envie et confiance à un presta pour qu’il achète à l’avance, avec des collègues, son droit de participer à une mission technologique solidaire sur le terrain de son choix? Cette idée a sans doute un côté complètement délirant, mais qu’est-ce qu’on pourrait en faire de bien et d’un peu plus près de la réalité? Qu’est-ce que cela vous inspire? A votre tour!

How to install dozens of linux boxes with FAI?

Friday, February 9th, 2007

[updated: the version of the python script was an obsolete one, I updated it, and changed the title of the post for more clarity]

I have 40 old computers (donation from a corporation) that are to be dispatched among small social work non-profit organizations and needy people in several French cities and probably also in Senegal. How to install a customized and usable version of linux on all of them despite the hardware heterogeneity of that collection of PCs and our lack of time? How to allow them to be reinstalled remotely without requiring any computer person to be present on site? I want the linux distribution to be Ubuntu, with a specific list of packages and configuration parameters. Some PCs have 1 hard drive of 9 GB or more, some others have up to 3 hard drives of sometimes 4GB, etc. The solution I found is to use FAI (Fully Automatic Installation) with a couple of custom enhancements such as a Python script that calculates the optimal partition tables for every PC.

Here are some notes about how I proceeded. If you want to contribute to similar projects (Information Technology and innovation for small non-profit organizations working in the field of social work in France or Africa), please drop me a comment here or by email at sig at akasig dot org.

Requirements and architecture

The way FAI works is as follows. The computer to install boots locally either from a CD-ROM, from a floppy disk or via a local networking protocol such as PXE or BOOTP. It then connects to a central installation server. It is served with instructions about how to install itself. It then downloads and installs packages from official repositories (e.g. Ubuntu repositories) or from the installation server if ever this server contains a mirror of the distribution repository. It is a package-based installer and differs from file-based installers such as System Imager (that relies on rsync).

Therefore, the main requirement is to have a server for centralizing the installation process. For testing purposes, I used my home PC with its DSL line and its Ubuntu Dapper distribution. But the production server is hosted in a data center and runs a debian.

For booting, the usual FAI way is to use a local DHCP server for retrieving information such as the address of the installation server. But in my case, I want to allow computers to (re-)install themselves from the premises and local area networks of non-profit organizations or even at home of individuals. I obviously can’t control the DHCP servers that are usually serving this critical installation information. Therefore, I had to work around this by using some special FAI options when creating the bootable CD-ROMs (see below).

Another issue I had to tackle is that FAI supports a limited amount of hardware heterogeneoity. For instance, if your computers don’t have the exact same amount of hard drive space, that’s usually not a problem for FAI. It comes with configuration mechanisms that handle that quite smoothly. But in my case, I have unknown computers to install, with various numbers and sizes of hard drives for instance. Therefore, I had to let computers calculate by themselves the optimal partitioning scheme for any hard drive setup. I did that with the help of a constraint programming library for Python. I also had to make sure that Python would be available on the computer at that stage of the installation process.

Eventually, I had to work around some access control constraints of FAI so that I could write the calculated optimal partitioning scheme to the computer to install. Indeed, when the computer to install first connects to the installation server, it mounts its root partition via NFS in read-only mode. And it doesn’t have access to the hard drive(s) yet. The solution I adopted is to write the optimal partitioning configuration to the FAI RAMdisk (on the computer to install) and to pre-define a symlink from the NFS-mounted root (on the installation server) to that configuration file so that FAI knows where to find it once it has been calculated (details below).

Other modifications I had to do include correcting some shebang lines in scripts that used sh whereas they should have been using bash in the case of an ubuntu server environment. I also had to correct the path a grub post-installation script to adapt it to Ubuntu. Eventually, I had to find the proper collection of FAI “classes” to define in order for Ubuntu to work properly.

I did not invent all of these tweaks and hacks (except the partitioning one). All of them were suggested by the extremely supportive FAI community via their #fai IRC channel on irc.oftc.net (special thanks to MrFai, sanso and h01ger). And I could not get into FAI without the great (but partly outdated!) FAI guide.

Now come the more detailed notes about how to (hopefully) reproduce the steps and tweaks described above.

A bit of FAI magic

On my Ubuntu dapper, the FAI package was a rather old one (v.2.10). Therefore I retrieved the more recent 3.1ubuntu1 package from the edgy repository and installed it manually. The first thing to do was then to go to /etc/fai and check every configuration file for possible updates to make. In /etc/fai/NFSROOT, for instance, I added python as a package to install in the virtual root partition that will be mounted via NFS by the computers to install. I also made sure that my NFS service would allow the target computers to connect and that the iptables firewall would not block these connections either. Then, I was ready for a sudo faisetup that created this virtual root partition under /srv/fai.

Once the NFS root hierarchy has been created, I manually added to it the python constraint programming library required by my partitioning hack. I downloaded the source tarball, pre-compiled it on my installation server with python setup.py build (probably useless). And I manually copied the .py and .pyc file to the proper site-packages directory of the NFS root (to /srv/fai/nfsroot/usr/lib/python2.4/site-packages/).

In order to create the bootable CD-ROMs that would allow computers to start using their local DHCP server but still to know how to connect to the central installation server, I had to use the following command line and options:

sudo make-fai-bootfloppy -B -Ieth0 -l -f /tmp/fai_floppy.img -i /tmp/fai_cdrom.iso -d f -F -v nfsroot=192.168.0.100:/srv/fai/nfsroot ip=:192.168.0.100:::::dhcp FAI_ACTION=install

It creates an ISO image of that bootable CDROM (/tmp/fai_cdrom.iso) that is then to be burnt. It also tells the path to the installation server. I had first tried without the -l option that asks for LILO to be used instead of GRUB but I could not figure out how to let GRUB not ignore the required nfsroot option. That option always disappeared from the kernel options GRUB specifies for booting. Therefore, I decided to use LILO instead. I also had troubles mixing the use of DHCP and the use of my nfsroot option and had to use the -d f option that is supposed to tell the computer to boot with a fixed IP address whereas it will actually refer to my ip= option that tells it to boot with DHCP but to notice that the installation server is at a given IP address. A bit tricky, isn’t it… Anyway, it worked and you just have to replace 192.168.0.100 by the IP address of your installation server and everything should be fine (let’s be optimistic…). As an alternative, you should refer to the man page of fai-cd which is another FAI command for creating a bootable CDROM. Maybe fai-cd is even more recommended than make-fai-bootfloppy indeed but I did not try because it has not yet been properly documented in the FAI guide.

Then, I added my partitioning script as a FAI hook that gets called just before the “partition” FAI task and only for computers that are assigned to my custom FAI class. In order to do so, I saved my script under /srv/fai/config/hooks with the filename partition.MYCLASS (where MYCLASS is the name you choose for describing the class of computers that will be using this partitioning script). Note that you should remove the .txt extension from the filename once you download it from this site.
When called, that script would create a new file name called MYCLASS that would contain the FAI syntax for specifying how partitions are to be created on disks (it’s called a FAI disk_config file indeed). But since this script is called at install time from a computer that mounted its root partition via NFS in read-only, I had to let the script save this MYCLASS file under /tmp/ which is then a writeable RAM disk. But for FAI to be aware of the existence of that file during its partitioning task, I first had to create a symlink from /srv/fai/config/disk_config/MYCLASS to /tmp/MYCLASS. (ln -s /tmp/MYCLASS /srv/fai/config/disk_config/MYCLASS). After some discussion with FAI folks on IRC, I understood this is not the optimal solution. Ideally, I should use the FAI mkrw script instead: it would create an appropriate writeable path on the RAM disk and the script would be stored there. Anyway, the symlink option also works though it’s less elegant.

Beyond creating this customized disk_config file for MYCLASS computers, I also modified and re-used the simple example files that are provided under the FAI examples directory. I created a FRENCH class by copying and modifying the GERMAN class that is provided there so that it tells that KEYMAP=fr-latin9. I used the FAIBASE class file and just modified it a bit: TIMEZONE=Europe/Paris. In the /srv/fai/class/50-host-classes script that defines default classes, I added to the last case the following classes: FRENCH, FAI_BOOTPART (in desperate hope it would add to the GRUB menu an option for booting the computer using FAI from the hard-drive in case of re-installation without CD), NTP and NETWORK (being unsure these were required for the NTP service to be installed by default and to receive proper configuration parameters. In /srv/fai/config/debconf/ I created a FRENCH debconf file by re-using the GERMAN one given as example. In /srv/fai/config/package_config/, I also copied and modified the GERMAN file into one called FRENCH and containing the identifiers of Ubuntu packages related to French setups.

As explained above, I also had to modify several FAI scripts in order to fully adapt them to the Ubuntu environment. These modifications were suggested to the FAI mailing list and forwarded to me by MrFai. They consisted in changing the #! /bin/sh shebang lines into #! /bin/bash lines for the following scripts: class/10-base-class, class/50-host-class, hooks/instsoft.FAIBASE, scripts/FAIBASE/10-misc, scripts/FAIBASE/30-interface, scripts/LAST/50-misc and also the mount2dir script. Last but not least, these modifications included modifying the config/files/boot/grub/menu.lst/postinst file so that it made reference to /sbin/update-grub instead of /usr/sbin/update-grub. I suppose that these changes are soon to be available right from the downloadable FAI packages once they get propagated there.

That’s it. With all of these operations, you should be able to install a fresh (and French) Ubuntu on any computer using the CD you have burnt. Or at least I could install a couple of them.

More things to do

But even then, we are not done with what’s required for our distributed infrastructure to be remotely maintainable. Here is my to-do list:

  • many of the hacks and tricks indicated above should probably not be done directly under the /srv hierarchy but under something like /usr/lib/fai/ or you might face the risk that they some of them get lost next time you recreate your nfsroot using the fai-setup script; there is probably some cleaning to be made here
  • check that the FAI_BOOTPART class was really taken into account because, at the moment, I could not see any FAI option in the GRUB menu of the installed computers
  • add bcfg2 with custom parameters to the classes to install so that the configuration can be properly managed remotely
  • check once again that the way NFS is offered to these remote computers will not create any security issue
  • create a new script that will select the flavor of the distribution to install depending on the amount of RAM on the PC. For instance, with less than 256 MB of RAM, it would be preferable to install a basic Ubuntu (without its Gnome desktop) and use another windows manager
  • setup the default user because the one provided by the DEMO class does not suit my need
  • add some more intelligence to the partitioning script so that it checks if ever there already is a suitable home partition and then ask FAI to preserve it instead of recreating it (and loosing the data it contains)
  • setup a proper SSH account on the server so that FAI can save its log files on it once the installation is done
  • activate the option that will let FAI save on the installation server the detailed hardware information it could read from the PC
  • create a unique and permanent identifier to be stored on the machine and on the server so that we can track PCs; in a first step, the MAC address may be usable but in some future, assigning a permanent UID to the whole list of hardware characteristics could be better if done smartly
  • check that the default Xorg options do not put old screens at risk (resolution and speed)
  • bring a bit of graphical customization in order to brand the desktops
  • add openvpn to the PCs so that we can connect to them remotely even when they are behing NAT routers
  • configure the authentication so that it is made against the central database (MySQL) that would also be used for the identity management of our Plone sites, with an nss_update mechanism that will allow authentication to succeed even when the central server is not reachable (caches the credentials on the PC)
  • for facilitating the initial installation, I should probably stop using bootable CDs and get back to the orthodox FAI way of booting from the network and using DHCPd for delivering instructions about the location of the installation server; however I first have to figure out how to let the computers’ GRUB menus offer a boot option that will not require the DHCPd to deliver those instructions and that will let them use the central installation server somewhere over the Internet

If you are interested in helping some social non-profit ventures with the maintenance and configuration of their PCs and/or have some clues about how to take action on some items of this todo list, please don’t hesitate to get in touch with me and to leave some comment here. Your help would be very much welcome!

Recherche informatique à vocation sociale

Wednesday, February 7th, 2007

J’ai une idée un peu fumeuse de projet qui me trotte dans la tête et j’aimerais bien avoir vos conseils pour la rendre un peu plus réaliste. Il s’agit de proposer à des sociétés de “haute technologie” en informatique (SSII, éditeurs, constructeurs) d’investir quelques ressources (prestataires en inter-contrat, cotisation, …) dans des projets d’innovation technologique et sociale menés conjointement avec des chercheurs et des responsables d’associations reconnues dans leur secteur (action sociale, environnement, humanitaire, handicap, seniors…). Quels moyens pourraient exister pour rendre ce genre de chose attractives pour des SSII par exemple? Qu’est-ce qui pourrait leur donner envie de s’investir dans des projets de recherche informatique à vocation philantropique? Des projets qui visent à “changer le monde” à très grande échelle mais sur des points très spécialisés par le biais des TIC.

Par exemple, j’ai pensé à divers bénéfices possibles qu’une SSII pourrait tirer de ce genre d’action. Mais j’ai du mal à identifier lesquels pourraient avoir le plus de valeur aux yeux de dirigeants de ce genre de boîtes.

  • retombées médiatiques et amélioration qualitative de l’image de marque de la boîte en s’associant à des “grandes marques” du social (Croix-Rouge, Restos du Coeur, ATD, …), de l’environnement (WWF, Greenpeace, fondation Ushuaïa, …) ou de l’humanitaire (Croix-Rouge, médecins du monde, …)?
  • retombées médiatiques et accroissement quantitatif de la notoriété publique de la boîte ?
  • fidélisation des salariés: réduction du turn over, motivation “par les valeurs” de la société ?
  • facilitation du recrutement des jeunes diplômés ?
  • facilitation des relations avec les parties prenantes externes (syndicats, pouvoirs publics, certains actionnaires…) ?
  • formation à la communication interpersonnelle, acquisition par les salariés de “savoir-êtres” sur le terrain, au contact de populations en difficultés (milieux populaires, handicaps, seniors, …) ?
  • acquisition par les salariés de compétences techniques nouvelles au contact de chercheurs de pointe également impliqués dans ces projets (centres de recherche universitaire, recherche privée du genre Google Labs ou autres) ?
  • facilitation des relations avec certains clients (clients du secteur public: Etat, collectivités territoriales ou clients de l’économie sociale: mutuelles, coopératives, associations, fondations) ?
  • satisfaction personnelle des dirigeants de la boîte (philantropie) ?
  • autre idée de bénéfice pour la société?

Je sais que vous êtes nombreux à évoluer professionnellement avec moi dans le secteur de l’informatique, alors vos avis (même candides) me seraient précieux. Lesquels des points ci-dessus vous paraissent les plus prometteurs pour convaincre des dirigeants d’entreprises high-tech de se lancer dans ce genre d’aventure? Des suggestions? Qu’est-ce que vous en pensez?

A Periodic Table of Visualization Methods

Friday, January 19th, 2007

A Periodic Table of Visualization Methods présente de Mendeleïve manière un aperçu des grandes méthodes de visualisation d’information complexe. On y retrouve nos préférées: mind maps, treemaps, graphes sémantiques, hype cycle, magic quadrant, diagramme d’Ishikawa, etc. Les amateurs de l’atlas de cybergéographie apprécieront. J’y ai découvert une jolie chose: les diagrammes de tenseurs (également appelés visualisations de champs de tenseurs). Joli. Utile? J’aimerais bien m’amuser avec une bibliothèque python ou java pour générer ce genre de diagrammes de tenseurs… Une fonctionnalité à ajouter à prefuse?

Déployer 40 PCs dans les banlieues

Thursday, January 4th, 2007

Avec des copains, nous aidons des associations de quartier de banlieues à s’équiper en informatique pour proposer toute sorte d’activités à leurs publics: aide à la recherche d’emploi, atelier création de CV, expression libre pour les jeunes, découverte de l’informatique, formation, recherche d’informations administratives, … Avec l’une de ces associations, nous avons récupéré auprès d’une entreprise 40 ordinateurs que nous allons donc prêter aux assos de quartier. Mais comment automatiser l’installation de ces PC (sous linux)? Comment en assurer la maintenance à distance? Comment en assurer la mise à jour? Bref, comment aider les associations utilisatrices à faire vivre techniquement leur informatique sans avoir à se déplacer à chaque fois dans les quartiers? Et si nous étions capables de gérer 40 PCs, pourrions-nous rêver d’en gérer 40 000 et offrir cette même aide à de plus larges populations d’associations, de bénévoles et d’habitants des quartiers sensibles? et si on passait ensuite aux besoins d’associations avec lesquelles on pourrait travailler en Afrique ou ailleurs?

Le problème est que nous sommes tous nous-mêmes bénévoles, avons un boulot ou des études le jour et une famille la nuit… Nous avons donc très peu de temps pour faire de l’administration de workstations et voulons pourtant simplifier au maximum la vie de ces assos qui n’ont pour ainsi dire aucune compétence informatique poussée. Heureusement, nous avons un peu d’expertise technique ainsi qu’une bonne infrastructure serveurs à notre disposition.

C’est pourquoi nous avons identifié plusieurs logiciels susceptibles de nous être utiles. Les connaissez-vous et avez-vous de bons conseils ou avis à nous donner? Pourriez-vous faire passer ce message à vos geeks préférés pour leur demander leurs conseils? Voici l’état actuel de nos discussions:

Mon pote JM me dit:

> Fred suggere l’utilisation de “system imager”
> pour installer un parc et le gerer a distance, ce qui est une partie des
> questions soulevée par l’usage des machine, et ainsi gagner un temps
> precieux.
>
> J’ai donc trouvé quelques lien dans google,
>
> Cela semble efficace pour faire des clones, et les maintenir.
> http://www.systemimager.org/doc/html/
> http://www.falkotimme.com/howtos/systemimager/index.php
> http://people.debian.org/~jblache/events/sl2004/talks/packages.pdf

J’ai jeté un coup d’oeil à tout ça. J’ai compris qu’il ne faut pas confondre:

  • les cloneurs ou installeurs de machine comme systemimager
  • les gestionnaires de configuration comme bcfg2
  • les utilitaires d’inventaire comme lshw
  • les progiciels de gestion de parc comme GLPI

Ils sont complémentaires (mais pas tous forcément nécessaires pour notre projet) quoique les uns empiètent partiellement sur les fonctionnalités des autres…

Dans tous les cas, puisque les associations ont divers moyens de se connecter à Internet en haut débit (ADSL, câble, …), une bonne idée semble d’équiper ces PC d’un logiciel comme OpenVPN pour être sûr de pouvoir toujours y accéder quelque soit leur configuration réseau.
Les cloneurs/installeurs les + intéressants pour notre projet associatif semblent être:

Les gestionnaires de configuration les + intéressants pour notre projet semblent être:

  • bcfg2, avec notamment ses fonctionnalités de suivi des mises à jour
  • puppet
  • cfengine est + populaire mais + lourd à mettre en place et - moderne

Les utilitaires d’inventaire les + intéressants semblent être:

Et question distribution, en évitant toute guerre de religion, nous hésitons entre:

J’ai repéré plusieurs discussions à propos des usages combinés ou comparés de certains de ces outils mais aucune ne donne un avis définitif sur la question. Et je ne suis pas sûr que les avis évoqués ici ou là correspondent bien à notre situation:

  • extrêmement peu de temps d’administrateurs système,
  • peu (ou pas) de possibilités d’intervention sur place,
  • gestion (et ré-installations?) via l’Internet et non sur un LAN, ou bien ré-installations automatiques à partir d’un CD
  • hétérogénéité matérielle: nombre et taille des disques différents d’un PC à l’autre par exemple
  • mais usages simples et “standards” de ces workstations: bureautique, Web, mail, IM, quelques jeux… plus un peu de VoIP à l’occasion notamment pour des formations informatiques à distance?

Voici les liens intéressants que j’ai parcourus:

Alors, quel est le bon choix? Quelle est la bonne combinaison d’outils pour être efficaces en prenant le minimum de temps de maintenance et la combinaison la plus rapide à mettre en place? Quels sont vos avis?

Web 2.0 architectures with Java

Tuesday, December 5th, 2006

Here are two things to go beyond Web Services (with ReSTfullness in mind):

Take-away: beyond theory (ReST), there now are concepts (WOA) and tools (restlets) for building composite Web applications without requiring SOAP, WSDL and the whole bunch of overbloated WS-* standards that come with them.

WikiCalc: Web 2.0 spreadsheets wikified

Wednesday, July 26th, 2006

WikiCalc is a nice piece of GPLed software that pusblishes wiki pages that are structured like Excel spreadsheets are: one can view and edit tables, modify calculation formulas in cells, manage their formatting through the web browser, etc. It brings to spreadsheets the inherent advantages of many wikis: ease of use for Web publications, ease of modification, revisions track for undoing unwanted changes by other users, RSS views on recent changes made to the page. It brings to wikis the inherent advantages of spreadsheets: live calculations, nice formatting, compliance with corporate way of thinking and managing things (will we see a WikiSlides with bulletpoints and animations in some future?). More than this, WikiCalc lets spreadsheets grab input data from external web sites and do live calculations from it: some formulas generate HTTP requests to web services in order to retrieve the latest value for a stock quote, weather forecasts, and so on. Last but not least, the flexible architecture of WikiCalc allows an offline use still via the user’s browser and a synchronization mechanism will let the online version get updated once the connection is restored.

A nice 10 min long WikiCalc screencast with audio is available here.

In a former life, I was managing a team of web project managers in a multinational industrial corporation. As my boss wanted to get simple-to-update weekly/monthly status report about every project, we had tried using a wiki page per project in order to publish and update those reports. It was tedious and not nicely formatted for a corporate environment. I imagine that a nice immediate use of WikiCalc would be to let small project teams update project status reports on an intranet, including nicely formatted timelines and budget indicators. It would still maintain the update effort at a minimal and convenient level and would preserve the wiki flexibility of linking to the project documentation and resources.

We knew structured wiki pages for managing forms or category schemes. WikiCalc introduces spreadsheet structures while preserving the open and unstructured spirit of wikis. Next steps for future wikis would be to allow semantic structures to be managed the wiki-way, like in some early semantic wiki prototypes. [update: see Danny Ayers blog entries on how WikiCalc could relate to the Semantic Web vision]

How to video-record what’s happening on your screen? (screencasting)

Friday, July 7th, 2006

Here is a nice piece of software for creating screencasts (video recordings of what you can see and do on your screen, for instance for demonstration or training purposes): pyvnc2swf. It is an open source package, running on both Linux and Windows. It requires that you first install:

You then install pyvnc2swf and launch it with a command line such as: c:\Python24\python.exe vnc2swf.py -o test.swf localhost:0 This will launch a nice small GUI from which you can start and stop your recording. This package also provides edition utilities so that you can edit or convert the video file that is created. Several video formats are supported.

In order to protect your machine and prevent any hacker to use your VNC server to take control of your computer, go to VNC options (tightvnc: right click on the tray icon, then “properties” and “Advanced” button for advanced options) and make sure that:

  • you setup a secure password (long enough, with letters, numbers and special characters)
  • you allow loopback connections (connections from your local machine)
  • you ONLY allow loopback connections (refuse any connection coming from anywhere else)
  • you select “query console for incoming connection” so that a popup window will ask for your confirmation everyonce someone (maybe yourself using pyvnc2swf) tries to connect to your VNC server to see (and maybe control) what’s happening on your screen

Combien de temps pour craquer votre mot de passe?

Tuesday, April 4th, 2006

Combien de temps faudra-t-il à un pirate pour deviner votre mot de passe? Avec un PC rapide et dans de bonnes conditions, il lui suffira de 30 secondes si votre mot de passe ne contient que 6 lettres, toutes en minuscules. Si vous avez mis des majuscules et des chiffres dans votre mot de passe de 7 caractères, il faudra 4 jours de calcul. Si vous passez à un mot de passe de 8 caractères contenant lettres majuscules et minuscules, chiffres et signes de ponctuation, il lui faudra tout de même 23 ans… à moins qu’il ne s’agisse d’un gouvernement ou d’une organisation équipée d’un super-calculateur, auquel cas 83 jours de calculs intensifs en viendront largement à bout!

L’Etat, mauvais client

Wednesday, March 22nd, 2006

Cette chronique de Bertrand Lemaire (LMI) au sujet des appels d’offres des marchés publics de l’Etat m’a rappelé combien les administrations centrales gèrent mal leurs décisions d’achat. Les administrations centrales de l’Etat, d’une manière générale, me semblent être des organisations bien malades, souvent bien plus malades que les bureaucraties privées. Leur difficultés à acheter des prestations informatiques n’est qu’un symptôme parmi tant d’autres. Les SSII qui font affaire avec elles sont peut-être à plaindre mais elles y trouvent quand-même leur compte. C’est surtout les fonctionnaires qui y travaillent et les citoyens qu’ils sont sensés servir que j’aurais tendance à plaindre. Pauvres de nous…

Davantage d’offres d’emploi pour les informaticiens en France

Wednesday, March 22nd, 2006

+28% en 2005, +34% à +46% prévus en 2006, c’est le nombre d’offres d’emploi pour informaticiens en France. Fin 2005, près d’un tiers des offres de recrutement de cadres concernaient des informaticiens, surtout en SSII. Et la demande est particulièrement forte pour les chefs de projet avec un profil plutôt “business” et les programmeurs et architectes Java ou .Net. Les causes? Départs à la retraite de nos anciens et baisse du nombre de diplômés en informatique. Ca devrait être bon pour mon porte-monnaie, tout ça.

Construire son propre téléphone mobile Wifi

Wednesday, March 8th, 2006

Certains s’amusent à construire leur propre téléphone mobile. En Wifi pour s’affranchir de l’opérateur télécom. Ca peut donner ce qu’on appelle de l’open source hardware.

Les mashups

Wednesday, March 8th, 2006

Les mashups, c’est cette activité très à la mode (”Web 2.0″) qui consiste à combiner (agréger) des services Web existants pour en faire un “mashup” à votre sauce et développer ainsi un nouveau business. Il existe autant de mashups possibles que de combinaisons de services Web.
Problème pour l’opérateur de site Web qui envisage de publier un service Web: est-ce que cela va me rapporter de l’argent ou ne vais-je pas, au contraire, perdre du traffic direct et donc des revenus publicitaires? Matt McAlister s’est penché sur la question.

InfoCards: bien ou mal ?

Wednesday, February 15th, 2006

On se souvient de Microsoft Passport et du rejet de cette technologie par la communauté des développeurs. Microsoft revient à l’assaut avec les InfoCards qui seront présentes dans IE 7, Active Directory et Windows Vista. Techniquement, cette solution paraît beaucoup plus intéressante et plus respectueuse de la vie privée. Son inventeur, Kim Cameron, est connu pour être l’un des inventeurs des méta-annuaires (à l’époque où il était CTO de ZoomIt). C’est LE gourou de la gestion d’identité. Il a proposé les 7 “lois” de l’identité qui forment le cahier des charges du système de gestion des identités idéal : viable, fiable et respectueux de la vie privée. Bref, c’est quelqu’un dont on peut penser beaucoup de bien. Pour en savoir plus, rien ne vaut un bon petit podcast de chez IT conversations.
Pour autant, son invention doit susciter la méfiance. Que va en faire Microsoft ? Comment Microsoft va-t-il l’utiliser pour asseoir sa domination sur l’industrie informatique ? Encore une bonne techno promise à un succès commercial qui fera grincer les dents des développeurs libres ? Il faut le craindre.

Mise en relation par le web sémantique

Wednesday, February 15th, 2006

Le projet européen de recherche Vikef vise à développer des technologies de mise en relation de personnes grâce aux technologies du Web Sémantique. Principale application envisagée: la mise en relation de professionnels dans des salons et de scientifiques lors de conférences. Lancé en avril 2004, le projet prendra fin en mars 2007. Ce projet est mené notamment par Xerox, l’insitut Fraunhofer et Telefonica.
Spontanément, je ne peux m’empêcher de me réjouir d’un tel projet et de m’inquiéter de l’utilisabilité des applications qui vont en découler: va-t-on demander aux utilisateurs de modéliser leurs centres d’intérêts? Ca ne me paraît pas très réaliste. Je demande à voir !

$64 million for the NSA to mine through social networks of terrorists (and US citizens ?)

Thursday, January 26th, 2006

It seems like the NSA is conducting a 3,5 years long $64 million worth research program on data mining maybe based on the eavesdropping of domestic and foreign phone calls and email exchanges. This program is called NIMD which stands for Novel Intelligence from Massive Data. Their approach is said to be based on the analysis of the social networks of people communicating one with another.

Critiques du web sémantique

Tuesday, September 6th, 2005

Le Web Sémantique est l’objet de nombreuses critiques. On reproche principalement à cette vision technologiste son manque de pragmatisme. Voici les références de deux articles illustrateurs de ces critiques.

Clay Shirky soutient que la gestion d’ontologies n’est pas une sinécure et que les technologies de “social tagging”/”folksonomies” sont une alternative beaucoup plus adaptée à l’Internet que ne l’est la vision du Web Sémantique des spécialistes des ontologies. Selon moi, l’alternative proposée (le social tagging) est bonne mais la critique anti-ontologies est exagérée car je ne pense pas que la vision de Tim Berners-Lee du web sémantique soit autant portée sur une modélisation ontologique top-down des connaissances que l’on veut bien le dire. Bref, pour moi, la solution d’avenir ce serait quelque chose du genre “semantic social tagging”. Cet article est un bon point de départ pour découvrir les folksonomies, comparées à la modélisation ontologique des connaissances.

Sur un ton plus comique, on peut trouver une libre reprise d’un sketch des comiques anglais “Monty Python” qui se moque de l’approche top-down des spécialistes du web-sémantique ; la critique est aisée depuis que Tim Berners Lee a été adoubé chevalier par la reine d’Angleterre… Elle n’en reste pas moins tout à fait amusante et intéressante.

Au passage, je vous suggère une manière simple de se représenter le web sémantique : imaginez que le web devienne non pas simplement un gros document hyper-texte mais également une grosse base de données. Avec le web sémantique, les applicatifs (agents ou non) pourront “librement” traiter des données produites par d’autres applications.

From flat text to structured data

Monday, September 5th, 2005

This article shows an example of how to build structured data sets from flat text. The example given is the detection of existing relationships between (ex-)members of the British government by data-mining the wikipedia. This relates to “bubble-up folksonomies”. These folks at the BBC are smart !

How to ReSTfully Ajax

Thursday, August 25th, 2005

Here are some pointers for learning more about the Ajax programming model and how to properly design your Ajax application :

While I am mentionning the Representational State Transfer (ReST) architecture style, here are some additional and valuable resources on this topic :