Planète Web Sémantique

June 18, 2013

David Larlet

Startups et frameworks

En quelques mots, nous savons que l'exercice n'est pas facile, pourriez vous nous donner quelques arguments qui, selon vous, feraient pencher la balance en faveur de Django (avec ou sans la connaissance de Ruby On Rails).

Choix d'un framework pour une nouvelle entreprise. Django ?

Ce n'est pas la première fois que je reçois ce type de mail de la part de personnes souhaitant monter une startup et d'après mon expérience ce choix de framework ne changera rien.

Il y a 3 choses à la limite qui peuvent influer sur le choix technique initial :

  • une brique existante dans un certain langage dont il n'existe pas d'équivalent dans un autre et qui constitue le cœur de la valeur de votre projet (pas le framework donc), ce qui procurerait un avantage compétitif ;
  • un membre de l'équipe qui a une compétence technique sur un langage et qui va la mettre à profit sur le projet car il prend du plaisir à coder avec, à en explorer les possibilités et à se tenir informé des améliorations ;
  • un prestataire avec lequel vous avez l'habitude de travailler et avec lequel vous avez établi une relation de confiance dans votre boulot précédent.

Mais alors pourquoi est-ce que ce choix technique ne va avoir aucune influence malgré ces points ? Pourquoi est-ce que l'on ne trouve aucun article de blog dans la sphère des entrepreneurs sur LE framework qui a permis à telle startup de décoller ? Tout simplement car la réussite d'un projet dépend de tellement d'autres facteurs plus importants (valeur, cible, marketing, relations, recrutements, financements, etc) que le choix du framework en devient insignifiant !

Mon conseil si vous devez faire un choix technique : rencontrez des humains passionnés qui vont mettre en œuvre ces choix, pas seulement les conseiller.

June 18, 2013 11:00 PM

June 17, 2013

Eric van der Vlist

When MVC becomes a burden for XForms – XML London 2013

This paper, presented at XML London 2013, is also available as a presentation and as a screencast:

Abstract

XForms is gaining traction and is being used to develop complex forms, revealing its strengths but also its weaknesses.

One of the latest is not specific to XForms but inherent to the MVC (Model View Controller) architecture which is one of the bases of XForms.

In this talk we see how the MVC architecture dramatically affect the modularity and reusabilty of XForms developments and some of the solutions used to work around this flaw.

Practice: a quiz

Let’s start with a quiz…

Basic XForms

Question

Given the following instance:

<figures>
   <line>
      <length>
         <value>10</value>
         <unit>in</unit>
      </length>
   </line>
</figures>

implement a standard XForms 1.1 form displaying the following user interface:

Answer

Model:

<xf:model>
   <xf:instance>
      <figures>
         <line>
            <length>
               <value>10</value>
               <unit>in</unit>
            </length>
         </line>
      </figures>
   </xf:instance>
</xf:model>

View:

<xf:group ref="line/length">
   <xf:input ref="value">
      <xf:label>Length: </xf:label>
   </xf:input>
   <xf:select1 ref="unit">
      <xf:label></xf:label>
      <xf:item>
         <xf:label>pixels</xf:label>
         <xf:value>px</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>font size</xf:label>
         <xf:value>em</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>font height</xf:label>
         <xf:value>ex</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>inches</xf:label>
         <xf:value>in</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>centimeters</xf:label>
         <xf:value>cm</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>millimeters</xf:label>
         <xf:value>mm</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>points</xf:label>
         <xf:value>pt</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>picas</xf:label>
         <xf:value>pc</xf:value>
      </xf:item>
      <xf:item>
         <xf:label>%</xf:label>
         <xf:value>%</xf:value>
      </xf:item>
   </xf:select1>
</xf:group>

Using instances and actions

Question

Implement the same user interface if the instance uses the CSS2 / SVG 1.1 conventions for sizes:

<xf:instance id="main">
   <figures>
      <line length="10in"/>
   </figures>
</xf:instance>

Answer

Model:

<xf:model>
   <xf:instance id="main">
      <figures>
         <line length="10in"/>
      </figures>
   </xf:instance>
   <xf:instance id="split">
      <line>
         <length>
            <value/>
            <unit/>
         </length>
      </line>
   </xf:instance>
   .../...
</xf:model>

View:

<xf:group ref="instance('split')/length">
   <xf:input ref="value" id="length-control">
      <xf:label>Length: </xf:label>
   </xf:input>
   <xf:select1 ref="unit" id="unit-control">
      <xf:label/>
      <xf:item>
         <xf:label>pixels</xf:label>
         <xf:value>px</xf:value>
      </xf:item>
      .../...
      <xf:item>
         <xf:label>%</xf:label>
         <xf:value>%</xf:value>
      </xf:item>
   </xf:select1>
</xf:group>

Controller:

<xf:model>
   .../...
   <xf:action ev:event="xforms-ready">
      <xf:setvalue ref="instance('split')/length/value" value="translate(instance('main')/line/@length, '%incmptxe', '')"/>
      <xf:setvalue ref="instance('split')/length/unit" value="translate(instance('main')/line/@length, '0123456789', '')"/>
   </xf:action>
   <xf:action ev:event="xforms-value-changed" ev:observer="length-control">
      <xf:setvalue ref="instance('main')/line/@length" value="concat(instance('split')/length/value, instance('split')/length/unit)"/>
   </xf:action>
   <xf:action ev:event="xforms-value-changed" ev:observer="unit-control">
      <xf:setvalue ref="instance('main')/line/@length" value="concat(instance('split')/length/value, instance('split')/length/unit)"/>
   </xf:action>
</xf:model>

Modularity

Question

Still using XForms 1.1 standard features, extend this user interface to edit the height and width of a rectangle:

<xf:instance id="main">
   <figures>
      <rectangle height="10in" width="4em"/>
   </figures>
</xf:instance>

Hint: copy/paste is your friend!

Answer

Model:

<xf:model>
   <xf:instance id="main">
      <figures>
         <rectangle height="10in" width="4em"/>
      </figures>
   </xf:instance>
   <xf:instance id="height">
      <height>
         <value/>
         <unit/>
      </height>
   </xf:instance>
   .../...
   <xf:instance id="width">
      <width>
         <value/>
         <unit/>
      </width>
   </xf:instance>
   .../...
</xf:model>

View:

<xf:group ref="instance('height')">
   <xf:input ref="value" id="height-value-control">
      <xf:label>Height: </xf:label>
   </xf:input>
   <xf:select1 ref="unit" id="height-unit-control">
      <xf:label/>
      <xf:item>
         <xf:label>pixels</xf:label>
         <xf:value>px</xf:value>
      </xf:item>
      .../...
   </xf:select1>
</xf:group>
<xh:br/>
<xf:group ref="instance('width')">
   <xf:input ref="value" id="width-value-control">
      <xf:label>Width: </xf:label>
   </xf:input>
   <xf:select1 ref="unit" id="width-unit-control">
      <xf:label/>
      <xf:item>
         <xf:label>pixels</xf:label>
         <xf:value>px</xf:value>
      </xf:item>
      .../...
   </xf:select1>
</xf:group>

Controller:

<xf:model>
   .../...
   <xf:action ev:event="xforms-ready">
      <xf:setvalue ref="instance('height')/value" value="translate(instance('main')/rectangle/@height, '%incmptxe', '')"/>
      <xf:setvalue ref="instance('height')/unit" value="translate(instance('main')/rectangle/@height, '0123456789', '')"/>
   </xf:action>
   <xf:action ev:event="xforms-value-changed" ev:observer="height-value-control">
      <xf:setvalue ref="instance('main')/rectangle/@height" value="concat(instance('height')/value, instance('height')/unit)"/>
   </xf:action>
   <xf:action ev:event="xforms-value-changed" ev:observer="height-unit-control">
      <xf:setvalue ref="instance('main')/rectangle/@height" value="concat(instance('height')/value, instance('height')/unit)"/>
   </xf:action>
   .../...
   <xf:action ev:event="xforms-ready">
      <xf:setvalue ref="instance('width')/value" value="translate(instance('main')/rectangle/@width, '%incmptxe', '')"/>
      <xf:setvalue ref="instance('width')/unit" value="translate(instance('main')/rectangle/@width, '0123456789', '')"/>
   </xf:action>
   <xf:action ev:event="xforms-value-changed" ev:observer="width-value-control">
      <xf:setvalue ref="instance('main')/rectangle/@width" value="concat(instance('width')/value, instance('width')/unit)"/>
   </xf:action>
   <xf:action ev:event="xforms-value-changed" ev:observer="width-unit-control">
      <xf:setvalue ref="instance('main')/rectangle/@width" value="concat(instance('width')/value, instance('width')/unit)"/>
   </xf:action>
</xf:model>

Homework: repeated content

Still using standard XForms features, extend this form to support any number of rectangles in the instance.

Hint: you will not be able to stick to atomic instances for the width and height but act more globally and maintain instances with a set of dimensions which you’ll have to keep synchronized with the main instance when rectangles are inserted or deleted.

What’s the problem?

XForms lacks a feature to define and use “components” that would package a group of controls together with their associated model and actions.

Theory: the MVC design pattern

XForms describes itself as a MVC architecture:

An XForm allows processing of data to occur using three mechanisms:

  • a declarative model composed of formulae for data
    calculations and constraints, data type and other property declarations, and data submission
    parameters
  • a view layer composed of intent-based user interface
    controls
  • an imperative controller for orchestrating data
    manipulations, interactions between the model and view layers, and data submissions.

Micah Dubinko argues that the mapping is more obvious with Model-view-presenter
(MVP)
, a derivative of the MVC software pattern but that’s not the point I’d like to make and
I’ll stick to the MVC terminology where:

  • The model is composed of XForms instances and binds
  • The view is composed of the XForms controls together with the HTML elements and CSS stylesheets
  • The controller is composed of the actions

Orbeon Form Builder/Form Runner go one step forward and add a fourth concern for localization and we get a model/view/localization/controller pattern.

This separation of concerns is great to differentiate different roles and split work between specialists but doesn’t play well with modularity and reusability.

I am currently working on a project to develop big and complex forms and this is becoming one of the biggest issues: these forms share a number of common fields and group of fields and, not even speaking of sharing these definitions, this separation of concerns adds a significant burden when copying these definitions from one form to another.

To copy a field from one form to another you need to copy definitions from the model, the view, the localization and the controller and can’t just copy a “component”.

And of course, there is no easy way to reuse common components instead of copying them.

This kind of issue is common with the MVC design pattern and the Hierarchical model–view–controller (HMVC) has been introduced for this purpose, but how can we use such a pattern with XForms?

Solutions

A number of solutions are being used to work around this issue with XForms.

Copy/Paste

This is what we’ve done for our quiz and we’ve seen that this is easy -but very verbose and hard to maintain- until we start to deal with repeated content.

I would guess that this is the most common practice when fields (or group of fields) are being reused in XForms though!

XForms generation or templating

We’re XML developers, aren’t we? When something is verbose we can use XSLT or any other tool to generate it and XForms is no exception.

XForms can be generated from any kind of model including annotated schemas or other vocabularies such as DDI (we’ll be presenting this option at the Balisage International Symposium on Native XML User Interfaces in August.

Projects without any obvious model formats in mind often chose to transform simplified versions of XForms into plain XForms. In that case the approach may tends toward a templating system where placeholders are inserted into XForms documents to be transformed into proper XForms.

We may want for instance to define <my:dimension/> placeholders which would look like XForms controls and generate the whole model, view and controller XForms definitions.

The source form would then be something as simple as:

<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"
   xmlns:my="http://ns.dyomedea.com/my-components/">
   <xh:head>
      <xh:title>Template</xh:title>
      <xf:model>
         <xf:instance id="main">
            <figures>
               <rectangle height="10in" width="4em"/>
            </figures>
         </xf:instance>
      </xf:model>
   </xh:head>
   <xh:body>
      <my:dimension ref="rectangle/@height">
         <xf:label>Height</xf:label>
      </my:dimension>
      <br/>
      <my:dimension ref="rectangle/@width">
         <xf:label>Width</xf:label>
      </my:dimension>
   </xh:body>
</xh:html>

A simplistic version of a transformation to process this example is not overly complex. The controls are quite easy to generate from the placeholders:

<xsl:template match="my:dimension">
    <xsl:variable name="id" select="if (@id) then @id else generate-id()"/>
    <xf:group ref="instance('{$id}-instance')">
        <xf:input ref="value" id="{$id}-value-control">
            <xsl:apply-templates/>
        </xf:input>
        <xf:select1 ref="unit" id="{$id}-unit-control">
            <xf:label/>
            <xf:item>
                <xf:label>pixels</xf:label>
                <xf:value>px</xf:value>
            </xf:item>
            .../...
        </xf:select1>
    </xf:group>
</xsl:template>

A model can be appended to the <xh:head/> element:

<xsl:template match="xh:head">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" mode="#current"/>
        <xf:model>
            <xsl:apply-templates select="//my:dimension" mode="model"/>
        </xf:model>
    </xsl:copy>
</xsl:template>

And the instances and actions can be generated similarly:

<xsl:template match="my:dimension" mode="model">
    <xsl:variable name="id" select="if (@id) then @id else generate-id()"/>
    <xf:instance id="{$id}-instance">
        <height>
            <value/>
            <unit/>
        </height>
    </xf:instance>
    <xf:action ev:event="xforms-ready">
        <xf:setvalue ref="instance('{$id}-instance')/value"
            value="translate(instance('main')/{@ref}, '%incmptxe', '')"/>
        <xf:setvalue ref="instance('{$id}-instance')/unit"
            value="translate(instance('main')/{@ref}, '0123456789', '')"/>
    </xf:action>
    <xf:action ev:event="xforms-value-changed" ev:observer="{$id}-value-control">
        <xf:setvalue ref="instance('main')/{@ref}"
            value="concat(instance('{$id}-instance')/value, instance('{$id}-instance')/unit)"/>
    </xf:action>
    <xf:action ev:event="xforms-value-changed" ev:observer="{$id}-unit-control">
        <xf:setvalue ref="instance('main')/{@ref}"
            value="concat(instance('{$id}-instance')/value, instance('{$id}-instance')/unit)"/>
    </xf:action>
</xsl:template>

As always, the devil is in details and this would be far from perfect:

  • In actions, references to the main instance do not take into account the context node under which the <my:dimension/> placeholder is defined (paths are therefore
    expected to be relative to the default instance). Mimicking the behavior of an XForms control and its support of the context node would be much more challenging.
  • Supporting repetitions would be another challenge.

Orbeon Forms’ XBL implementation

Orbeon’s
component architecture
is inspired by XBL 2.0 which describes itself as:

XBL (the Xenogamous Binding Language) describes the ability to associate elements in a document with script, event handlers, CSS, and more complex content models, which can be stored in another document. This can be used to re-order and wrap content so that, for instance, simple HTML or XHTML markup can have complex CSS styles applied without requiring that the markup be polluted with multiple semantically neutral div elements.It can also be used to implement new DOM interfaces, and, in conjunction with other specifications, enables arbitrary tag sets to be implemented as widgets. For example, XBL could be used to implement the form controls in XForms or HTML.
XBL 2.0

Even if this specification is no longer maintained by the W3C Web Applications Working Group, the concepts described in XBL 2.0 fit very nicely in the context of XForms documents even though the syntax may sometimes look strange, such as when CSS selectors are used where XPath patterns would look more natural in XForms documents.

Note

The syntax of XBL declarations has been changed between Orbeon Forms version 3 and 4. The syntax shown in this paper is the syntax of version 4.

The definition of an XBL component to implement our dimension widget would be composed of three parts: handlers, implementation and template:

<xbl:binding id="my-dimension" element="my|dimension" xxbl:mode="lhha binding value">
   <xbl:handlers>
      .../...
   </xbl:handlers>
   <xbl:implementation>
      .../...
   </xbl:implementation>
   <xbl:template>
      .../...
   </xbl:template>
</xbl:binding>

A fourth element could be added to define component specific resources such as CSS stylesheets.

The XForms component’s model goes into the implementation:

<xbl:implementation>
   <xf:model id="my-dimension-model">
      <xf:instance id="my-dimension-instance">
         <dimension>
            <value/>
            <unit/>
         </dimension>
      </xf:instance>
      .../...
</xbl:implementation>

The XForms component’s controls are defined into the template:

<xbl:template>
   <xf:input ref="value" id="my-dimension-value-control"/>
   <xf:select1 ref="unit" id="my-dimension-unit-control">
      <xf:label/>
      <xf:item>
         <xf:label>pixels</xf:label>
         <xf:value>px</xf:value>
      </xf:item>
      .../...
   </xf:select1>
</xbl:template>

The XForms actions are split between the handlers and the implementation (or the template): handlers are used to define actions triggered by events which are external to the component (such as in our case xforms-ready) while traditional XForms actions are used to handle events “internal” to the component such as user actions.

The handlers would thus be:

<xbl:handlers>
   <xbl:handler event="xforms-enabled xforms-value-changed">
      <xf:setvalue ref="instance('my-dimension-instance')/value" 
          value="translate(xxf:binding('my-dimension'), '%incmptxe', '')"/>
      <xf:setvalue ref="instance('my-dimension-instance')/unit" 
          value="translate(xxf:binding('my-dimension'), '0123456789', '')"/>
   </xbl:handler>
</xbl:handlers>

And the remaining actions:

<xbl:implementation>
   <xf:model id="my-dimension-model">
      .../...
      <xf:setvalue ev:event="xforms-value-changed" ev:observer="my-dimension-value-control" 
          ref="xxf:binding('my-dimension')" 
          value="concat(instance('my-dimension-instance')/value, instance('my-dimension-instance')/unit)"/>
      <xf:setvalue ev:event="xforms-value-changed" ev:observer="my-dimension-unit-control" 
          ref="xxf:binding('my-dimension')" 
          value="concat(instance('my-dimension-instance')/value, instance('my-dimension-instance')/unit)"/>
   </xf:model>
</xbl:implementation>

I won’t go into the details which are described in Orbeon’s XBL – Guide to Using and Writing XBL Components but it is worth noting that there is a strict encapsulation of both the model, the view and the controller of this component that seen from the outside acts as a standard XForms control.

Of course, this component can be used as a standard XForms control:

<xh:body>
   <my:dimension ref="rectangle/@height">
      <xf:label>Height</xf:label>
   </my:dimension>
   <br/>
   <my:dimension ref="rectangle/@width">
      <xf:label>Width</xf:label>
   </my:dimension>
</xh:body>

The complete form with the component definition would be:

<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<?xsltforms-options debug="yes"?>
<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"
   xmlns:xxf="http://orbeon.org/oxf/xml/xforms" xmlns:ev="http://www.w3.org/2001/xml-events"
   xmlns:xbl="http://www.w3.org/ns/xbl" xmlns:xxbl="http://orbeon.org/oxf/xml/xbl"
   xmlns:fr="http://orbeon.org/oxf/xml/form-runner" xmlns:my="http://ns.dyomedea.com/my-components/">
   <xh:head>
      <xh:title>Simple XBL Component</xh:title>
      <xbl:xbl script-type="application/xhtml+xml">
         <xbl:binding id="my-dimension" element="my|dimension" xxbl:mode="lhha binding value">
            <xbl:handlers>
               <xbl:handler event="xforms-enabled xforms-value-changed">
                  <xf:setvalue ref="instance('my-dimension-instance')/value" value="translate(xxf:binding('my-dimension'), '%incmptxe', '')"/>
                  <xf:setvalue ref="instance('my-dimension-instance')/unit" value="translate(xxf:binding('my-dimension'), '0123456789', '')"/>
               </xbl:handler>
            </xbl:handlers>
            <xbl:implementation>
               <xf:model id="my-dimension-model">
                  <xf:instance id="my-dimension-instance">
                     <dimension>
                        <value/>
                        <unit/>
                     </dimension>
                  </xf:instance>
                  <xf:setvalue ev:event="xforms-value-changed" ev:observer="my-dimension-value-control" ref="xxf:binding('my-dimension')" value="concat(instance('my-dimension-instance')/value, instance('my-dimension-instance')/unit)"/>
                  <xf:setvalue ev:event="xforms-value-changed" ev:observer="my-dimension-unit-control" ref="xxf:binding('my-dimension')" value="concat(instance('my-dimension-instance')/value, instance('my-dimension-instance')/unit)"/>
               </xf:model>
            </xbl:implementation>
            <xbl:template>
               <xf:input ref="value" id="my-dimension-value-control"/>
               <xf:select1 ref="unit" id="my-dimension-unit-control">
                  <xf:label/>
                  <xf:item>
                     <xf:label>pixels</xf:label>
                     <xf:value>px</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>font size</xf:label>
                     <xf:value>em</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>font height</xf:label>
                     <xf:value>ex</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>inches</xf:label>
                     <xf:value>in</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>centimeters</xf:label>
                     <xf:value>cm</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>millimeters</xf:label>
                     <xf:value>mm</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>points</xf:label>
                     <xf:value>pt</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>picas</xf:label>
                     <xf:value>pc</xf:value>
                  </xf:item>
                  <xf:item>
                     <xf:label>%</xf:label>
                     <xf:value>%</xf:value>
                  </xf:item>
               </xf:select1>
            </xbl:template>
         </xbl:binding>
      </xbl:xbl>

      <xf:model>
         <xf:instance id="main">
            <figures>
               <rectangle height="10in" width="4em"/>
            </figures>
         </xf:instance>

      </xf:model>
   </xh:head>
   <xh:body>
      <my:dimension ref="rectangle/@height">
         <xf:label>Height</xf:label>
      </my:dimension>
      <br/>
      <my:dimension ref="rectangle/@width">
         <xf:label>Width</xf:label>
      </my:dimension>

      <fr:xforms-inspector/>
   </xh:body>
</xh:html>

Subforms

Subforms are implemented by XSLTForms and betterFORM. They have been considered for inclusion in XForms 2.0 but no consensus have been reached and they won’t be included in 2.0.

There are a number of differences between the XSLTForms and betterFORM implementations but the principle -and the shortcomings- are the same.

The basic principle behind subforms is to embed (or load) a form within another one. This embedding must be specifically performed using an <xf:load> action with a @show="embed" attribute. Subforms can also be unloaded.

The fact that subforms are explicitly loaded and unloaded in their “master” form is a key feature for big forms where this mechanism reduces the consumption of resources and leads to important performance improvements.

Subforms, betterFORM flavor

Subforms are described, in the betterFORM documentation, as a way to avoid redundancies and keep the documents maintainable:

As XForms follows a MVC architecture the XForms model is the first logical candidate when decomposing larger forms into smaller pieces. Aggregating more complex forms from little snippets of UI (or snippets of a model) is a limited approach as the interesting parts are located on the bind Elements. This is where controls learn about their constraints, states, calculations and data types. Instead of just glueing pieces of markup together the inclusion of complete models allow the reuse of all the semantics defined within them.
betterFORM
“Modularizing forms”

Joern Turner, founder of Chiba and co-founder of betterFORM, makes it clear that subforms haven’t been introduced to implement components, though:

Sorry i need to get a bit philosophic here but subforms are called subforms as they are *not* components ;) I don’t want to dive into academic discussions here but the main difference for us is that from a component you would expect to use it as a part of a form as a means to edit one or probably several values in your form and encapsulate the editing logic inside of it. A subform on the other hand should be designed to be completely standalone. Typically we build our subforms as complete xhtml documents which can be run and tested standalone without being a part of a host document.
Joern Turner on the betterform-users mailing list

A proper solution for components, based on Web Components) should be implemented in betterFORM 6:

We have also considered to implement this [XBL] but decided against it due to the acceptance and future of XBL and due to the fact that we found it overly complex and academic. We will come up with our own component model in betterFORM 6 which will orient at more modern approaches (Web Components).
Joern Turner on the betterform-users mailing list

In the meantime it is still possible to use subforms to design component like features assuming we take into account the following constraints:

  • Communications between the master form and the subform are done using either
    in memory submissions (ContextSubmissionHandler identified by a model:
    pseudo protocol), the instanceOfModel() function which gives access to
    instances from other models or custom events passing context information.
  • There is no id collision between the main form and the subforms which are loaded
    simultaneously.

This second constraint should be released in the future but the current version of the processor doesn’t address it. In practice it means that in our sample we cannot load simultaneously an instance of the subform to edit the width and a second instance to edit the height but we can still take a “master/slave approach” where a single instance of the subform will be used to edit the width and the height separately or mimic an “update in place feature” where an instance of the subform will replace the display of the width or height.

A way to implement our example using these principles could be:

  • In the master form:
    • Define an instance used as an interface with the subform to carry the
      value to edit and identify the active subform instance.
    • Include triggers to load and unload subforms.
    • Define actions to load and unload the subforms and maintain the
      “interface” instance.
    • Control when to display the triggers to avoid that simultaneous loads of
      the subform.
  • In the subforms:
    • Synchronize the local model with the instance used as an interface.
    • Perform all the logic attached to the component.

The master form would then be:

<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events"
    xmlns:xf="http://www.w3.org/2002/xforms">
    <xh:head>
        <xh:title>Subforms</xh:title>
        <xf:model id="master">
            <xf:instance id="main">
                <figures>
                    <rectangle height="10in" width="4em"/>
                </figures>
            </xf:instance>

            <!-- Instance used as an "interface" with the subform -->
            <xf:instance id="dimension-interface">
                <dimension active=""/>
            </xf:instance>
        </xf:model>

        <!-- Dirty hack to style controls inline -->
        <xh:style type="text/css"><![CDATA[

.xfContainer div {
    display: inline !important;
}

.xfContainer span {
    display: inline !important;
}
]]>
        </xh:style>
    </xh:head>
    <xh:body>
        <xf:group ref="rectangle">
            <!-- Height -->
            <xf:group ref="@height">
                <xf:label>Height: </xf:label>
                <!-- This should be displayed when the subform is not editing the height -->
                <xf:group ref=".[instance('dimension-interface')/@active!='height']">
                    <xf:output ref="."/>
                    <!-- Display the trigger when the subform is not loaded anywhere -->
                    <xf:trigger ref=".[instance('dimension-interface')/@active = '']">
                        <xf:label>Edit</xf:label>
                        <xf:action ev:event="DOMActivate">
                            <!-- Set the value of the interface instance -->
                            <xf:setvalue ref="instance('dimension-interface')" value="instance('main')/rectangle/@height"/>
                            <!-- Remember that we are editing the height -->
                            <xf:setvalue ref="instance('dimension-interface')/@active">height</xf:setvalue>
                            <!-- Load the subform -->
                            <xf:load show="embed" targetid="height" resource="subform-embedded.xhtml"/>
                        </xf:action>
                    </xf:trigger>
                </xf:group>
                <xh:div id="height"/>
                <!-- This should be displayed only when we're editing the height -->
                <xf:group ref=".[instance('dimension-interface')/@active='height']">
                    <xf:trigger>
                        <xf:label>Done</xf:label>
                        <xf:action ev:event="DOMActivate">
                            <!-- Copy the value from the interface instance -->
                            <xf:setvalue value="instance('dimension-interface')" ref="instance('main')/rectangle/@height"/>
                            <!-- We're no longer editing any dimension -->
                            <xf:setvalue ref="instance('dimension-interface')/@active"/>
                            <!-- Unload the subform -->
                            <xf:load show="none" targetid="height"/>
                        </xf:action>
                    </xf:trigger>
                </xf:group>
            </xf:group>
            <br/>
            <!-- Width -->
            <xf:group ref="@width">
                <xf:label>Width: </xf:label>
                <xf:group ref=".[instance('dimension-interface')/@active!='width']">
                    <xf:output ref="."/>
                    <xf:trigger ref=".[instance('dimension-interface')/@active = '']">
                        <xf:label>Edit</xf:label>
                        <xf:action ev:event="DOMActivate">
                            <xf:setvalue ref="instance('dimension-interface')" value="instance('main')/rectangle/@width"/>
                            <xf:setvalue ref="instance('dimension-interface')/@active">width</xf:setvalue>
                            <xf:load show="embed" targetid="width" resource="subform-embedded.xhtml"/>
                        </xf:action>
                    </xf:trigger>
                </xf:group>
                <xh:div id="width"/>
                <xf:group ref=".[instance('dimension-interface')/@active='width']">
                    <xf:trigger>
                        <xf:label>Done</xf:label>
                        <xf:action ev:event="DOMActivate">
                            <xf:setvalue value="instance('dimension-interface')" ref="instance('main')/rectangle/@width"/>
                            <xf:setvalue ref="instance('dimension-interface')/@active"/>
                            <xf:load show="none" targetid="width"/>
                        </xf:action>
                    </xf:trigger>
                </xf:group>
            </xf:group>
        </xf:group>
    </xh:body>
</xh:html>

And the subform:

<xh:div xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events"
    xmlns:xf="http://www.w3.org/2002/xforms">
    <xf:model id="dimension-model">
        <xf:instance id="concat">
            <data/>
        </xf:instance>
        <xf:instance id="split">
            <height>
                <value/>
                <unit/>
            </height>
        </xf:instance>
        <!-- Get the value from the "interface" instance and initialize the   -->
        <xf:submission id="get-dimension-value" resource="model:master#instance('dimension-interface')/*"
            replace="instance" method="get">
            <xf:action ev:event="xforms-submit-done">
                <!--<xf:message level="ephemeral">Subform has updated itself.</xf:message>-->
                <xf:setvalue ref="instance('split')/value" value="translate(instance('concat'), '%incmptxe', '')"/>
                <xf:setvalue ref="instance('split')/unit" value="translate(instance('concat'), '0123456789', '')"/>
            </xf:action>
            <xf:message ev:event="xforms-submit-error" level="ephemeral">Error while subform update.</xf:message>
        </xf:submission>
        <xf:send ev:event="xforms-ready" submission="get-dimension-value"/>
        <xf:submission id="set-dimension-value" resource="model:master#instance('dimension-interface')/*" replace="none"
            method="post">
            <xf:action ev:event="xforms-submit-done">
                <!--<xf:message level="ephemeral">Main form has been updated</xf:message>-->
            </xf:action>
            <xf:message ev:event="xforms-submit-error" level="ephemeral">Error while main form update.</xf:message>
        </xf:submission>
    </xf:model>
    <xf:group ref="instance('split')">
        <xf:input ref="value">
            <xf:action ev:event="xforms-value-changed">
                <xf:setvalue ref="instance('concat')" value="concat(instance('split')/value, instance('split')/unit)"/>
                <xf:send submission="set-dimension-value"/>
            </xf:action>
        </xf:input>
        <xf:select1 ref="unit">
            <xf:action ev:event="xforms-value-changed">
                <xf:setvalue ref="instance('concat')" value="concat(instance('split')/value, instance('split')/unit)"/>
                <xf:send submission="set-dimension-value"/>
            </xf:action>
            <xf:item>
                <xf:label>pixels</xf:label>
                <xf:value>px</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>font size</xf:label>
                <xf:value>em</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>font height</xf:label>
                <xf:value>ex</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>inches</xf:label>
                <xf:value>in</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>centimeters</xf:label>
                <xf:value>cm</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>millimeters</xf:label>
                <xf:value>mm</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>points</xf:label>
                <xf:value>pt</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>picas</xf:label>
                <xf:value>pc</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>%</xf:label>
                <xf:value>%</xf:value>
            </xf:item>
        </xf:select1>
    </xf:group>
</xh:div>

The code for defining the subform has the same level of complexity than the definition of the XBL in Orbeon Forms but a lot of geeky stuff needs to be added around the invocation of the form which becomes tricky.

From a user perspective, the page would initially look like:

When a user clicks on one of the “Edit” buttons, the corresponding subform is loaded (note that all the “Edit” buttons have disappeared):

Once the user is done editing the values in this subform, (s)he can click on “Done” to come back to a state where both the height and width are displayed and can be edited:

The presentation can be improved replacing for instance the buttons by trendy icons but we had to bend our requirements to get something that can be implemented with subforms.

Of course here we are misusing subforms to implement components, something which was not a design goal, and it’s not surprising that the resulting code is more verbose and that we’ve had to accept a different user interface. The future component feature announced by Joern Turner should solve these glitches.

Subforms, XSLTForms flavor

The support of subforms in XSLTForms is illustrated by a sample: a writers.xhtml master form embeds a books.xhtml subform.

The main principle behind this subform implementation appears to be the same than for betterFORM but there are some important differences between these two implementations:

  • XSLTForms doesn’t isolate the models from the master form and its subform and it is
    possible to access directly to any instance of the master form from the subforms.
  • The features to communicate between models implemented by betterFORM are thus not necessary and do not exist in XSLTForms.
  • The context node is not isolated and is available directly from the controls in the
    subform (see the writers/books example for an illustration.
  • A specific action (xf:unload) is used to unload subforms in XSLTForms while an xf:load action with an @show="none" attribute is used in betterFORM for the same purpose.

With these differences, the code developed for betterFORM could be adapted to work with XSLTForms as:

<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<?xsltforms-options debug="yes"?>
<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events"
   xmlns:xf="http://www.w3.org/2002/xforms">
   <xh:head>
      <xh:title>Subforms</xh:title>
      <xf:model id="master">
         <xf:instance id="main">
            <figures>
               <rectangle height="10in" width="4em"/>
            </figures>
         </xf:instance>

         <!-- Instance used as an "interface" with the subform -->
         <xf:instance id="dimension-interface">
            <dimension active=""/>
         </xf:instance>
      </xf:model>

      <!-- Dirty hack to style controls inline -->
      <xh:style type="text/css"><![CDATA[

.xforms-group-content, .xforms-group, span.xforms-control, .xforms-label {
   display:inline; 
}

]]>
      </xh:style>
   </xh:head>
   <xh:body>
      <xf:group ref="rectangle">
         <!-- Height -->
         <xf:group ref="@height">
            <xf:label>Height: </xf:label>
            <!-- This should be displayed when the subform is not editing the height -->
            <xf:group ref=".[instance('dimension-interface')/@active!='height']">
               <xf:output ref="."/>
               <!-- Display the trigger when the subform is not loaded anywhere -->
               <xf:trigger ref=".[instance('dimension-interface')/@active = '']">
                  <xf:label>Edit</xf:label>
                  <xf:action ev:event="DOMActivate">
                     <!-- Set the value of the interface instance -->
                     <xf:setvalue ref="instance('dimension-interface')" value="instance('main')/rectangle/@height"/>
                     <!-- Remember that we are editing the height -->
                     <xf:setvalue ref="instance('dimension-interface')/@active">height</xf:setvalue>
                     <!-- Load the subform -->
                     <xf:load show="embed" targetid="height" resource="subform-embedded.xml"/>
                  </xf:action>
               </xf:trigger>
            </xf:group>
            <xh:span id="height"/>
            <!-- This should be displayed only when we're editing the height -->
            <xf:group ref=".[instance('dimension-interface')/@active='height']">
               <xf:trigger>
                  <xf:label>Done</xf:label>
                  <xf:action ev:event="DOMActivate">
                     <!-- Copy the value from the interface instance -->
                     <xf:setvalue value="instance('dimension-interface')" ref="instance('main')/rectangle/@height"/>
                     <!-- We're no longer editing any dimension -->
                     <xf:setvalue ref="instance('dimension-interface')/@active"/>
                     <!-- Unload the subform -->
                     <xf:unload targetid="height"/>
                  </xf:action>
               </xf:trigger>
            </xf:group>
         </xf:group>
         <br/>
         <!-- Width -->
         <xf:group ref="@width">
            <xf:label>Width: </xf:label>
            <xf:group ref=".[instance('dimension-interface')/@active!='width']">
               <xf:output ref="."/>
               <xf:trigger ref=".[instance('dimension-interface')/@active = '']">
                  <xf:label>Edit</xf:label>
                  <xf:action ev:event="DOMActivate">
                     <xf:setvalue ref="instance('dimension-interface')" value="instance('main')/rectangle/@width"/>
                     <xf:setvalue ref="instance('dimension-interface')/@active">width</xf:setvalue>
                     <xf:load show="embed" targetid="width" resource="subform-embedded.xml"/>
                  </xf:action>
               </xf:trigger>
            </xf:group>
            <xh:span id="width"/>
            <xf:group ref=".[instance('dimension-interface')/@active='width']">
               <xf:trigger>
                  <xf:label>Done</xf:label>
                  <xf:action ev:event="DOMActivate">
                     <xf:setvalue value="instance('dimension-interface')" ref="instance('main')/rectangle/@width"/>
                     <xf:setvalue ref="instance('dimension-interface')/@active"/>
                     <xf:unload targetid="width"/>
                  </xf:action>
               </xf:trigger>
            </xf:group>
         </xf:group>
      </xf:group>
   </xh:body>
</xh:html>

for the main form and:

<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<?xsltforms-options debug="yes"?>
<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"
   xmlns:ev="http://www.w3.org/2001/xml-events">
   <xh:head>
      <xh:title>A subform</xh:title>
      <xf:model id="subform-model">
         <xf:instance id="split">
            <height>
               <value/>
               <unit/>
            </height>
         </xf:instance>
         <xf:action ev:event="xforms-subform-ready">
            <xf:setvalue ref="instance('split')/value" value="translate(instance('dimension-interface'), '%incmptxe', '')"/>
            <xf:setvalue ref="instance('split')/unit" value="translate(instance('dimension-interface'), '0123456789', '')"/>
         </xf:action>
      </xf:model>
   </xh:head>
   <xh:body>
      <xf:group ref="instance('split')">
         <xf:input ref="value">
            <xf:label/>
            <xf:setvalue ev:event="xforms-value-changed" ref="instance('dimension-interface')" value="concat(instance('split')/value, instance('split')/unit)"/>
         </xf:input>
         <xf:select1 ref="unit">
            <xf:label/>
            <xf:setvalue ev:event="xforms-value-changed" ref="instance('dimension-interface')" value="concat(instance('split')/value, instance('split')/unit)"/>
            <xf:item>
               <xf:label>pixels</xf:label>
               <xf:value>px</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>font size</xf:label>
               <xf:value>em</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>font height</xf:label>
               <xf:value>ex</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>inches</xf:label>
               <xf:value>in</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>centimeters</xf:label>
               <xf:value>cm</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>millimeters</xf:label>
               <xf:value>mm</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>points</xf:label>
               <xf:value>pt</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>picas</xf:label>
               <xf:value>pc</xf:value>
            </xf:item>
            <xf:item>
               <xf:label>%</xf:label>
               <xf:value>%</xf:value>
            </xf:item>
         </xf:select1>
      </xf:group>
   </xh:body>
</xh:html>

for the subform.

Acknowledging that things could be easier, XSLTForms has introduced a new experimental feature, derived from subforms, to implement simple components:

I have implemented a new component control in XSLTForms. It is named "xf:component” and has two attributes named “@ref” and “@resource“. There are still restrictions within a component: ids cannot be used if the component is to be instantiated more than once. The default instance is local to each instantiated component and the subform-instance() function can be used to get the document element of it. From the main form to the component, a binding with a special mip named “changed” is defined. The subform-context() allows to reference the node bound to the component control in the main form. The corresponding build has been committed to repositories: http://sourceforge.net/p/xsltforms/code/ci/master/tree/build/
Alain Couthures on the Xsltforms-support mailing list

With this new experimental feature and another extension (the @changed MIP implemented in XSLTForms), the master form would be:

<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<?xsltforms-options debug="yes"?>
<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events"
   xmlns:xf="http://www.w3.org/2002/xforms">
   <xh:head>
      <xh:title>Subforms</xh:title>
      <xf:model>
         <xf:instance id="main">
            <figures>
               <rectangle height="10in" width="4em"/>
            </figures>
         </xf:instance>

      </xf:model>
   </xh:head>
   <xh:body>
      <xf:group ref="rectangle">
         <!-- Height -->
         <xf:group ref="@height">
            <xf:label>Height: </xf:label>
            <xf:component ref="." resource="component-subform.xml"/>
         </xf:group>
         <br/>
         <!-- Width -->
         <xf:group ref="@width">
            <xf:label>Width: </xf:label>
            <xf:component ref="." resource="component-subform.xml"/>
         </xf:group>
      </xf:group>
   </xh:body>
</xh:html>

and the subform (or component):

<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" 
    xmlns:xf="http://www.w3.org/2002/xforms" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:ev="http://www.w3.org/2001/xml-events">
    <xh:head>
        <xh:title>Size</xh:title>
        <xf:model>
            <xf:instance>
                <size>
                    <value xsi:type="xsd:decimal">2</value>
                    <unit>cm</unit>
                </size>
            </xf:instance>
            <xf:bind ref="subform-instance()/value" 
                changed="translate(subform-context(), '%incmptxe', '')"/>
            <xf:bind ref="subform-instance()/unit" 
                changed="translate(subform-context(), '0123456789', '')"/>
        </xf:model>
    </xh:head>
    <xh:body>
        <xf:input ref="subform-instance()/value">
            <xf:label/>
            <xf:setvalue ev:event="xforms-value-changed" 
                ref="subform-context()" value="concat(subform-instance()/value, 
                subform-instance()/unit)"/>
        </xf:input>
        <xf:select1 ref="subform-instance()/unit">
            <xf:label/>
            <xf:item>
                <xf:label>pixels</xf:label>
                <xf:value>px</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>font size</xf:label>
                <xf:value>em</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>font height</xf:label>
                <xf:value>ex</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>inches</xf:label>
                <xf:value>in</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>centimeters</xf:label>
                <xf:value>cm</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>millimeters</xf:label>
                <xf:value>mm</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>points</xf:label>
                <xf:value>pt</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>picas</xf:label>
                <xf:value>pc</xf:value>
            </xf:item>
            <xf:item>
                <xf:label>%</xf:label>
                <xf:value>%</xf:value>
            </xf:item>
            <xf:setvalue ev:event="xforms-value-changed" 
                ref="subform-context()" value="concat(subform-instance()/value, 
                subform-instance()/unit)"/>
        </xf:select1>
    </xh:body>
</xh:html>

The level of complexity of both the definition of the subform component and its invocation are similar to what we’ve seen with Orbeon’s XBL feature. The main difference is the encapsulation (no encapsulation in XSLTForms and a controlled encapsulation in Orbeon Forms which handles the issue of id collisions).

Note that we are escaping the issue caused by id collision because we are accessing the instance from the master form directly from the subform using the subform-context() function.

This feature allows us to use only one local instance in the subform and we take care of not defining any id for this instance and access it using the subform-instance() function.
This trick wouldn’t work if we needed several instances or if we had to define ids on other elements in the subform.

Conclusion

The lack of modularity has been one of the serious weaknesses in the XForms recommendations so far.

A common solution is to generate or “template” XForms but this can be tricky when dealing with “components” used multiple times in a form and especially within xf:repeat controls.

Different implementation have come up with different solutions to address this issue (XBL for Orbeon, subforms for betterFORM and XSLTForms).

The main differences between these solutions are:

  • The syntax:
    • XBL + XForms for Orbeon Forms
    • XForms with minor extensions for betterFORM and XSLTForms)
  • The encapsulation or isolation and features to communicate between the component and other models:
    • complete for betterFORM with extensions to communicate between models
    • either complete or partial for Orbeon Forms with extension to communicate between models
    • no isolation for XSLTForms with extensions to access to the context node and default instance from a component
  • The support of id collisions between components and the main form:
    • Id collisions are handled by Orbeon Forms
    • They are forbidden by betterFORM and XSLTForms

The lack of interoperability between these implementations will probably not be addressed by the W3C XForms Working Group and it would be very useful if XForms implementers could work together to define interoperable solutions to define reusable components in XForms.

In this paper, generation (or templating) has been presented as an alternative to XML or subforms but they are by no mean exclusive. In real world projects, hybrid approaches mixing XForms generation (or templating) and components (XBL or subforms) are on the contrary very valuable. They have been demonstrated in a number of talks during the pre-conference day at XML Prague.

These hybrid approaches are easy to implement with common XML toolkits. The generation/templating can be static (using tools such as XProc, Ant or classical make files) or dynamic (using XProc or XPL pipelines or plain XQuery or XSLT) and Orbeon Forms XBL implementation even provides a feature to dynamically invoke a transformation on the content of the bound element).

Acknowledgments

I would like to thank Erik Bruchez (Orbeon), Joern Turner (betterFORM) and Alain Couthures (XSLTForms) for the time they’ve spent to answer my questions and review this paper.

by Eric van der Vlist at June 17, 2013 02:24 PM

June 15, 2013

Karl Dubost

Le passé-maintenant

Plaque de rue 11 juin 2013, Tsujido, Japon

Bergson nous montre que le souvenir n'est pas la représentation de quelque chose qui a été; le passé, c'est ce dans quoi nous nous plaçons d'emblée pour nous souvenir. Le passé n'a pas à survivre psychologiquement, ni physiologiquement dans notre cerveau car il n'a pas cessé d'être, il a seulement cessé d'être utile, il est, il survit en soi. Et cet être en soi du passé n'est que la conséquence immédiate d'une bonne position du problème: car si le passé devait attendre de ne plus être, si ce n'était pas tout de suite et dès maintenant qu'il était passé, « passé en général », il ne pourrait jamais devenir ce qu'il est, jamais il ne serait ce passé. Le passé, c'est donc l'en-soi, l'inconscient ou justement, comme dit Bergson, le virtuel.

Giles Deleuze, L'île déserte.

Il faut repartir et oublier.

Il faudra revenir et se souvenir.

Une fois de plus.

Sac sur tatami 12 juin 2013, Tsujido, Japon

June 15, 2013 12:05 PM

La couleur de la pluie

rue et parapluie 11 juin 2013, Tsujido, Japon

Bergson disait constamment que la durée, c'était le changement de nature, de qualité. « Entre la lumière et l'obscurité, entre des couleurs, entre des nuances, la différence est absolue. Le passage de l'une à l'autre est lui aussi un phénomène absolument réel. »

Giles Deleuze, L'île déserte.

Il a demandé il y a quelques jours, pourquoi le choix de ces couleurs au Japon. Aujourd'hui il pleut à Tsujido. Enfin. Je marche dans les rues. J'écoute le son désordonné. Tout est sombre et les couleurs deviennent vives. « Pourquoi les couleurs ? » La pluie. La couleur de la pluie. Oui c'est ce que je veux lui répondre. Au moins, aujourd'hui. Je marche et j'observe.

mur de maison bleu et arbre 11 juin 2013, Tsujido, Japon

June 15, 2013 11:49 AM

Béton, végétal, deux temps

bâtiment de béton 10 juin 2013, Tokyo, Japon

L'éternel retour n'est certes pas négation du temps, suppression du temps, éternité intemporelle. Mais comment expliquer qu'il soit à la fois cycle et instant: d'une part continuation, d'autre part itération? d'une part continuité du processus d'un devenir qui est le Monde, d'autre part reprise, éclair, vue mystique sur ce devenir ou ce processus? d'une part recommencement continuel de ce qui a été, d'autre part retour instantané à une sorte de foyer intense, à un point « zéro » de la volonté ?

Giles Deleuze, L'île déserte.

Dans le même pas, au même endroit dans Shibuya, l'impermanence du béton baigné dans le renouvellement perpétuel végétal. Le bâtiment est préparé pour sa destruction prochaine, le végétal trouve son chemin. L'urbain présente une fragilité que la nature n'a pas.

Végétation abondante sous les arbres 10 juin 2013, Tokyo, Japon

June 15, 2013 11:32 AM

June 14, 2013

David Larlet

Python & JavaScript

J'ai co-présenté avec Vincent des expérimentations utilisant Python et JavaScript lors de la conférence Web-5 qui se tenait à Béziers ces 2 derniers jours. C'était l'occasion de comprendre un peu mieux JavaScript et les frameworks/bibliothèques récentes dans les 2 langages et ça m'a presque réconcilié avec JavaScript. Au programme, il y avait :

  • Django & React : une simple réalisation du tutoriel, peut-être l'exemple le moins intéressant (on ne l'a même pas montré faute de temps) mais le concept de mettre directement son html dans le js me rappelle les belles années de PHP :-) ;
  • Node & Brython : ce qui était à la base un gros troll (JS côté serveur et Python côté client) s'est révélé être ludique puis prise de tête suite à mes déboires avec le parsing JSON de Brython qui est manifestement cassé à l'heure actuelle, en tout cas ça ne m'a pas donné envie d'aller creuser plus loin ;
  • RapydScript : digne successeur de Pyjamas et déniché par Vincent la veille de notre intervention. La lisibilité du code JavaScript généré à partir d'un code utilisant des classes et de l'héritage côté Python m'a vraiment bluffé ;
  • Python 3.3 avec Tulip + websockets & AngularJS : pas grand chose à dire sur Angular si ce n'est qu'il intègrera vraisemblablement Polymer (voir la suite) dans une future version. Par contre l'utilisation de Python 3.3 avec les websockets a été douloureuse, surtout en raison de mon incompétence sur le sujet mais j'ai finalement réussi à faire tourner un exemple minimaliste ;
  • Tornado & Polymer : toujours un plaisir de servir des websockets avec Tornado, dans ce cas précis il renvoyait des données du CPU récupérées via psutil pour tracer un graphe dynamique en temps-réel. La bonne surprise de toute la grappe de technologies utilisées c'est vraiment Polymer qui implémente les Web Components comme le fait x-tags par exemple mais en étant plus complet et en tentant de standardiser une certaine logique dans les templates pour avoir plus de flexibilité avec le Shadow DOM de manière native. Si vous considérez votre application web comme une série de composants réutilisables et indépendants (voir l'exemple du dashboard) ça devient vraiment puissant !

Vous retrouverez l'ensemble de ces exemples codés à l'arrache sur le dépôt dédié à la session mais agrémentés d'un README dédié à chaque exemple qui devrait vous aider à comprendre. N'hésitez pas à bidouiller et à proposer vos améliorations !

June 14, 2013 11:00 PM

Karl Dubost

Dans l'avion

visage plissé à l'excès 11 mai 2013, Montréal, Canada

Pick this coin of copper, not silver or gold,
To reflect on times remote and things old.
Sweat and grime stained its faded face,
Touched by trouble, toil and tedium that time won’t erase.

Andrew Yip, A copper coin.

Dans un avion, je mets mes écouteurs anti-bruit. Je regarde des films, je réponds à des emails, je travaille sur l'ordinateur, je lis. Je mange en même temps que les turburlences, je souris aux hôtesses, je maugrée les passagers qui sont désagréables, je vais aux toilettes. Je m'étire, j'essaie de dormir sans jamais de succès sauf au décollage. Je dors presque toujours au décollage, je ne sais pas pourquoi. Je mets la couverture sur moi contre le froid. Dans un avion, je ne voyage pas. Je suis immobile, prisonnier. Je veux m'allonger sur le sol de l'avion. Je ne le fais pas. Je regarde les autres passagers. Je ne regarde pas les autres passagers. On évite le regard sans pouvoir le faire. C'est dense un avion. Je me demande combien de temps cela prendrait pour voyager en dirigeable. En avion, je remplis le temps que je perds à ne pas voyager.

June 14, 2013 07:28 PM

Long voyage vers Singapour

visage face à un écran 16 mai 2013, Montréal, Canada

In that moment of magic, reality and vision merged,
Lights and shadows, fused, lifted or submerged,
Lines and forms transformed and wrote life in auto.
Time stood still, save the hints of playful lights in adagio.

Andrew Yip, A precious moment.

Montréal ✈ Vancouver ✈ Tokyo ✈ Singapour. Je prépare dans l'avion la semaine qui s'approche. À Narita, une pause d'environ 6 ou 8 heures, douche dans l'aéroport, et dormir sur les sièges en attendant le prochain vol.

June 14, 2013 07:12 PM

La nuit humide

foule dans un restaurant 26 mai 2013, Singapour

Until you came, the day is always tardy and tame,
A dreary, weary time; mundane each mirthless day.
Then as I drove down some funky lanes with no name,
The precious moment, least expected, came my way.

Andrew Yip, A precious moment.

Après 33 heures de voyage porte à porte, le taxi me dépose à l'hôtel près de l'aéroport. Nous venons de passer des étales de cuisine en bas d'une résidence d'immeubles. Il est un peu plus 3h le matin. La nuit est chaude, humide, parfumée. La fatigue n'y fera rien. – Check-in ? — Yes. Je pose mon sac dans la chambre et je redescends aussitôt. L'envie de la nuit, l'envie des saveurs, l'envie de la chaleur qui étouffe même l'épuisement. Une cinquantaine de personnes regardent un match de foot. Je commande du poulet, du riz et un jus de starfruit.

Plat cuisiné 26 mai 2013, Singapour

Après la nuit humide, c'est le jour luxuriant que je découvre de la fenêtre de la chambre.

Forêt 26 mai 2013, Singapour

June 14, 2013 06:56 PM

June 13, 2013

David Larlet

Conférences conviviales

Les conférences passives m'ennuient. De plus en plus. Dans la lignée des outils conviviaux, je me demande si l'on ne pourrait pas définir une conférence conviviale ainsi :

  • elle encourage la participation de toutes les personnes présentes ;
  • elle maximise les rencontres et minimise l'organisation ;
  • elle ne génère pas de hiérarchie entre les participants ;
  • elle est source d'inspiration et d'interactions.

C'est ce que j'ai essayé de faire avec les rencontres Django ou plus récemment Pytong et je pense qu'il y a encore beaucoup à explorer dans le domaine.

June 13, 2013 11:00 PM

June 12, 2013

David Larlet

Outils conviviaux

Nous avons récemment déjeuné avec les personnes s'occupant d'Outils-Réseaux dans les locaux de scopyleft (d'ailleurs, si vous passez dans le coin de Montpellier/Clapiers n'hésitez pas à venir nous voir) qui nous ont parlé des outils conviviaux introduits par Ivan Illich :

Illich définit alors trois critères indispensables pour qu'une instrumentation ou une institution soit considérée comme juste ou conviviale :

  • elle ne doit pas dégrader l'autonomie personnelle en se rendant indispensable
  • elle ne suscite ni esclave, ni maître
  • elle élargit le rayon d'action personnel

Critères de convivialité, sur Wikipédia.

Lorsque l'on applique ces critères à l'informatique, on se rend compte du chemin qu'il reste à faire pour obtenir des outils numériques conviviaux. Cela m'a amené à penser à l'utilisation des frameworks comme outils d'industrialisation à l'origine d'une hiérarchisation entre ceux qui connaissent le langage et ceux qui connaissent les méta-outils associés au langage. On en arrive à une hiérarchie entre développeurs avant même de pouvoir rendre ces outils accessibles au grand public.

Permettre à nos outils de communiquer localement sans passer par un réseau distant à des propriétés sociales intéressantes :

  • Interactions physiques couplées à l'interaction du réseau local
  • Renforcement du contrat social
  • Augmentation de l'opacité vis à vis des infrastructures distantes

L'édition en intimité sur un réseau local, Karl Dubost

Pour un projet que l'on a en interne, j'ai pas mal réfléchi à la simplicité extrême que pouvait prendre une application et j'en suis arrivé à la solution conviviale suivante :

  • un seul fichier HTML à transmettre à l'utilisateur final contenant les css/js/html non minifiés et commentés, celui-ci doit être capable de le modifier ;
  • un espace de stockage local pour avoir du cache en situation de déconnexion ou si les données ne sont pas destinées à être échangées/publiées ;
  • une centralisation des données via une API (par exemple webdis) en attendant d'avoir une solution de pair-à-pair efficace pour synchroniser les données entre plusieurs personnes ;
  • la possibilité d'exporter les données dans un format lisible et traitable.

Est-ce que vous avez des exemples d'applications web conviviales ?

June 12, 2013 11:00 PM

June 10, 2013

Karl Dubost

Le besoin de la rouille

affiche dans le métro 8 juin 2013, Oiso, Japon

Et matière et durée ne se distinguent jamais comme deux choses, mais comme deux mouvements, deux tendances, comme la détente et la contraction.

Giles Deleuze, L'île déserte.

Le vide est bien souvent un plein. Le paysage est constitué de cet ordre rouillé et patiné. Le temps y est présent non pas dans le creux, mais bien dans le volume. Il constitue le canevas nécessaire à la prouesse du détail. Le sens existe par sa respiration à travers la surface poreuse. Le sens surgît avec la rouille. Wabi-Sabi.

June 10, 2013 04:16 AM

Le Web et son matérial : présentation

affiche dans le métro 8 juin 2013, Tokyo, Japon

Cette propriété de fusion dans l'imagination constitue l'habitude (je m'attends…), en même temps que la distinction dans l'entendement proportionne la croyance au calcul des cas observés (probabilité comme calcul des degrés de croyance). Le principe d'habitude, en tant que fusion des cas semblables dans l'imagination, et le principe d'expérience en tant qu'observation des cas distincts dans l'entendement, se combinent donc pour produire à la fois la relation, et l'inférence suivant la relation (croyance), conformément auxquelles la causalité fonctionne.

Giles Deleuze, L'île déserte.

Dans nos discussions à propos de CSS, de HTML, etc. et de leurs évolutions, nous nous emprisonnons bien souvent de la bonne façon de faire sur papier. Nous tentons de reproduire des modèles de présentation tels que les livres enluminés. Comprendre le matériel du Web pour mieux concevoir les possibilités de présentation est essentiel. Doit-on avoir pour but celui de reproduire les modèles anciens, surtout si l'on considère le papier comme un appareil particulier avec ses propres contraintes. Des questions à explorer avant, pendant et après ParisWeb.

June 10, 2013 03:55 AM

June 09, 2013

Karl Dubost

Sous les cryptomérias du Japon

caractère mu gravé sur un bloc noir 7 juin 2013, Kita-Kamakura, Japon

Vendredi 7 juin.
Pleine lune.

Yasujirō Ozu, Carnets: 1933-1963.

À Kita-Kamakura, nous sommes allés voir le maître. Un printemps tardif sous les cryptomérias de Engaku-ji, l'endroit était approprié. Le parfum, le vent frais de l'océan et juste le paysage qui vous absorbe pour laisser place au vide. C'est dans l'absence qu'émergent les idées et l'envie de créer. Nous préparons.

mousse 7 juin 2013, Kita-Kamakura, Japon

June 09, 2013 12:36 PM

June 06, 2013

Karl Dubost

Les déboires de UTF-8 et le mail

dessert en forme de visage 5 juin 2013, Kugenuma, Japon

En effet, l'imagination a deux dimensions essentielles, l'appréhension successive et la compréhension simultanée.

Giles Deleuze, L'île déserte.

La communication entre personnes de différents pays avec des priorités de langages différentes est toujours un enjeu. Voici un scénario classique mal géré par Mail.app .

J'envoie un premier message, il est bien encodé en UTF-8. Il est écrit en japonais. Cependant les caractères sont encodés. (J'ai simplifié et enlevé certains headers)

Subject: Eboshi
From: karl@***
Content-Type: text/plain;
    charset=utf-8
To: ***@hotmail.co.jp
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Apple Message framework v1283)

[…]
=
=E3=81=82=E3=82=8A=E3=
[…]

Mes messages sont envoyés en UTF-8 car j'ai configuré mon mailer ainsi.

→ defaults read com.apple.mail NSPreferredMailCharset
UTF-8

La réponse est intéressante et comprend des choses un peu bizarre. Mais la réponse est en iso-2022-jp, soit en japonais. Certaines lignes de textes démarrent avec un ESC (U+001B) que j'ai converti pour qu'il soit visible.


Content-Type: text/plain; charset="iso-2022-jp"
Subject: Re: Eboshi
From: ***@hotmail.co.jp
To: karl@***
MIME-Version: 1.0 (1.0)
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by nerval.la-grange.net id r52CMHm3031694

U+001B$B$d$"$d$"!
[…]

Cela commence à être intéressant. Alors que j'ai forcé mon mail à repondre en UTF-8, il répond en iso-2022-jp. Le nom de la personne est en japonais, mais le texte est en anglais. Donc la personne n'a aucun problème à le lire. Cependant je remarque que dans ma réponse le nom de la personne est complètement détruit sur cette ligne particulière.


Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: text/plain;
    charset=iso-2022-jp-2
Content-Transfer-Encoding: 7bit
From: karl@***
Subject: Re: Eboshi
To: ***@hotmail.co.jp

Quelques échanges de plus, je décide de répondre en japonais et cette fois-ci c'est tout le message qui est illisible. Mon mailer a décidé également d'ajouter iso-2022-jp-2 défini par RFC 1554. Cela explique les caractères ESC.

J'ai finalement compris pourquoi aujourd'hui. Lors de ma réponse, le logiciel de mail ajoute automatiquement un « machin a écrit ». Le caractère accentué n'est pas dans iso-2022-jp. Cela ne poserait aucun problème si… Mail.app respectait mon choix par défaut de utf-8. Toujours est-il que mon interlocuteur ne pas lire le message.

Je continue mes tests. Affaire à suivre.

June 06, 2013 07:49 AM

Les rencontres tranquilles de mon quotidien

dessert en forme de visage 4 juin 2013, Tsujido, Japon

C'est vrai que la vie quotidienne est pleine de dramatisations.

Giles Deleuze, L'île déserte.

Un dessert en forme de visage. Un homme finit sa nuit, trop arrosée, allongé dans la rue gardé par un chat. Une femme me regarde fixement à travers la fenêtre.

chat et homme allongé 4 juin 2013, Tokyo, Japon
chat et homme allongé 4 juin 2013, Tokyo, Japon

June 06, 2013 06:27 AM

L'édition en intimité sur un réseau local

perles de couleur 12 avril 2003, Montréal, Canada

La belle âme ne se contente pas de l'état de nature; elle rêve avec tendresse aux relations humaines. Or ces relation s'incarnent toujours dans des situations délicates.

Giles Deleuze, L'île déserte.

Sur le macintosh en utilisant RendezVous, devenu Bonjour, il est possible de développer et utiliser des outils de coopération locale. Il y a près de 10 ans, nous pouvions par exemple utiliser le défunt Hydra. Bonjour utilise UDP sur le port 5353. Dix ans plus tard, nous sommes pratiquement sur le même point. Il y a cependant un peu d'espoir avec le développement de la spécification Network Service Discovery.

C'est un sujet qui me tient à cœur car je crois beaucoup aux interactions et coopérations locales entre individus. Permettre à nos outils de communiquer localement sans passer par un réseau distant à des propriétés sociales intéressantes :

  • Interactions physiques couplées à l'interaction du réseau local
  • Renforcement du contrat social
  • Augmentation de l'opacité vis à vis des infrastructures distantes

En effet si vos données circulent uniquement localement, cela résoud de nombreux problèmes quand à la censure ou la surveillance d'éléments jugés subversifs, comme par exemple, une manifestation, un événement de protestation locale, etc. Finalement cela permet une certaine forme de résilience face aux contraintes extérieures.

Développer des projets coopératifs, des ateliers d'écritures, de création, etc devient également beaucoup plus intéressant.

Outils

Ils pourraient utiles de faire une liste des outils qui fonctionnent aujourd'hui comme cela.

Ce sont des notes beaucoup plus qu'un billet complet

June 06, 2013 05:55 AM

June 05, 2013

Christian Fauré

L’approche pre-mortem d’un projet

Pre-MortemGary Klein a  proposé une approche qu’il a qualifiée de pre-mortem concernant la prise de décision de lancement d’un projet ou d’une quelque autre décision importante pour une entreprise. Il s’agit de prendre le contre pied du diagnostic classique post-mortem suite à l’échec d’un projet ou d’une décision particulièrement engageante.

L’approche pre-mortem est un exercice auquel les participants se livrent volontiers et souvent avec un certain délice.

Imaginez donc une organisation qui va prendre une décision importante, par exemple le lancement d’un projet structurant, ou encore le rachat d’une autre entreprise, etc.

Juste avant que l’annonce ne soit officiellement faite, il s’agit de rassembler en séance les quelques personnes qui sont déjà informées de ce qui va être annoncé, et leur dire :

« Imaginez que nous soyons dans un an. Nous avons mis le plan en œuvre tel qu’il est. Le résultat est une catastrophe. Prenez cinq à dix minutes pour rédiger une histoire succincte de cette catastrophe. »

Les mêmes personnes qui ont participé à la mise en place de ce qui va être annoncé officiellement doivent à présent imaginer le pire ; après avoir construit une stratégie et un plan d’action, ils ont à présent quelques minutes pour imaginer le pire scénario catastrophe.

Je suis convaincu que ce genre d’exercice devrait être plus souvent réalisé, car quand on est partie-prenante d’un projet on a tendance à le défendre coûte que coûte et parfois à s’illusionner sur ses chances de réussite en occultant un certain nombre d’informations.

Une fois l’exercice fait, on dispose avec ces scénarii d’un bon contre-point qui peut vacciner le projet contre des biais qui avaient été sous-estimés.

Signaler sur Twitter

by Christian at June 05, 2013 09:35 AM

Karl Dubost

Louer une connexion wifi au Japon

sac et appareils électroniques 3 juin 2013, Tsujido, Japon

Ce planétarisme, qui donne une extrême mobilité à chacun de ces sens, se présente ainsi : trouver le fragment représenté par chaque objet, de telle manière que la pensée fasse la somme (et la soustraction) toujours ouverte de tous les fragments subsistant comme tels.

Giles Deleuze, L'île déserte.

Pour ce séjour d'une dizaine de jours au Japon, je savais que je n'aurais pratiquement pas assez à Internet facilement. J'ai donc décidé de louer un routeur wifi mobile. Softbank propose un service de location pour 1500 Yens par jour. Le transfert de données est illimité. Et il vous permet de rester connecté au wifi un peu partout avec une connexion 3G vers le réseau. Les performances ne sont pas trop mauvaises, cela dépend bien sûr du lieu. La batterie ne dure que 3 ou 4 heures. C'est à considérer si vous êtes mobile tout le temps. En revanche si vous avez un point fixe, ce n'est pas vraiment un problème.

J'ai réservé en ligne grâce à un formulaire en anglais. J'ai récupéré ma réservation à l'aéroport de Narita à mon arrivée au comptoir de Softbank. Cela a pris 2 minutes, juste le temps de vérifier que l'appareil se connectait bien avec le bon mot de passe. Je dois le rendre à l'aéroport au moment du départ. Pour un court séjour, c'est un bon investissement, pour le long terme, cela deviendra une solution onéreuse.

June 05, 2013 04:50 AM

Les gens du Japon

Jardins potager et maisons 5 juin 2013, Tsujido, Japon

La conscience était déjà là, avec et dans la différence d'elle-même. La durée par elle-même est conscience, la vie par elle-même est conscience, mais elle l'est en droit. Si l'histoire est ce qui ranime la conscience, ou plutôt le lieu dans lequel elle se ranime et se pose en fait, c'est seulement parce que cette conscience identique à la vie s'était endormie, engourdie dans la matière, conscience annulée, non pas conscience nulle.

Giles Deleuze, L'île déserte.

Je marchais dans les ruelles de Tsujido, avec l'intention de me rendre dans un café perdu au milieu des maisons entre la voie ferrée et l'océan. L'appareil photo, toujours dans la main. C'est essentiel pour saisir la lenteur du monde. Le pas assuré vers une destination incertaine, je débouche sur un de ses champs clos par les maisons.

Une puissante odeur d'oignons se dégageait du champ. Le parfum envahit et donne l'envie de cuisiner. Je n'avais pas vu. Un vieil homme le dos courbé dans son champ sortait les oignons de la terre. C'était lui le sorcier qui capturait mon imagination de cuisine. Il se relève et me regarde. Peut-être m'a t'il observé depuis longtemps prenant des photos de son champ. Il me demande « 玉ねぎ…好き? » Je passe dans ma tête rapidement les sons tama-negui-sou-ki. Ah! Il me demande si j'aime les oignons. J'ai à peine le temps de répondre que je les aime. Il se penche de nouveau. Il continue sa besogne. Il met les oignons arrachés dans un sac en plastique blanc. Et il me le tend. Je le remercie mille fois. Un grand sourire sur le visage. Je ne sais plus vraiment quoi faire. Je ne peux pas vraiment engager une conversation soutenue. Je pars en remerciant encore mille fois, la main sur le cœur et en lui disant que cela sent bon.

Oignons 5 juin 2013, Tsujido, Japon

Dans mon sac à dos, c'est le parfum de son jardin que j'emporte avec mes pas. Dans mon cœur, c'est la gentillesse et la générosité des japonais que j'emporte avec mon bonheur. Je continue et j'arrive au café que je cherchais. Je rentre. Je suis le seul client. Je demande à l'homme où je dois m'assoir. Il me désigne le comptoir avec un grand sourire. Il me demande ce que je veux boire en me présentant le menu. Je lui laisse le choix. Il me propose un café au lait. C'est un bon départ. Il sort du frigo une bouteille de lait en verre contenant le café. Il verse le café dans une casserole en émail blanc. Il le chauffe. Doucement. Façon japonaise. Il ajoute le lait et continue à chauffer l'ensemble en ne quittant jamais la casserole. Et il sert la tasse. Il me demande d'où je viens. Nous commençons à discuter en contournant les absences de mon vocabulaire japonais. Il est patient et souriant. Il me parle des lieux où il est allé en vacances. Il mentionne quelques icônes de France : Jean Reno, Zidane, Alain Delon. Il a une carte du monde. Je pointe Montréal. Il me demande des informations sur l'appareil photo. Nous avons le dialogue cette fois-ci. Je pars avec le sourire et deux beaux souvenirs des gens du Japon.

Merci.

June 05, 2013 04:34 AM

June 03, 2013

Karl Dubost

Prévention des tsunamis

Carte avec dégradés de couleurs 2 juin 2013, Zushi, Japon

Et vraiment, il n'y a pas de pouvoir des mots, mais seulement des mots au service du pouvoir: le langage n'est pas information ou communication, mais prescription, ordonnance et commandement.

Giles Deleuze, L'île déserte.

Détail Légende de la carte de tsumani

Dans la gare de Zushi, une carte du district donnant les aires atteintes en fonction de la hauteur du tsunami. Pratiquement tout le district est en dessous de 10 mètres au-dessus du niveau de l'océan. Lors d'un tsunami important comme en mars 2011, toute la zone serait inondée à l'exception du haut des quelques tours bien sûr.

Il y a deux problèmes sur la carte, les couleurs sont inversées par rapport à la légende. Est-ce une erreur de conception ? Dans le cadre d'une zone urbaine, les immeubles et leurs hauteurs devraient être indiqués. En effet, il devient intéressant de pouvoir se diriger vers un immeuble proche. C'est un de mes réflexes dorénavant à chaque fois que je suis proche de l'océan, j'identifie les sommets naturels et construits.

June 03, 2013 11:36 AM

La forêt et l'océan

Plage 2 juin 2013, Hayama, Japon

Les unes nous rappellent que la mer est sur la terre, profitant du moindre affaissement des structures les plus hautes; les autres, que la terre est encore là, sous la mer, et rassemble ses forces pour crever la surface.

Giles Deleuze, L'île déserte.

Je suis la forêt, elle est l'océan.

L'humide, l'humus, le champignon, la charmille, les mousses et lichens, les verts. Et puis les feuilles qui craquent, l'ombre sous les arbres.

Le soleil, le sable, les vagues, les coquillages usés, les bleus. Et puis le pas qui s'enfonce, l'ombre nette sur le sol.

Le vent pour seul maître.

June 03, 2013 11:06 AM

June 02, 2013

Karl Dubost

Le télétravail, une organisation d'entreprise

Trou de chantier 10 mai 2013, Montréal, Canada

Nous pouvons dire aussi que le trou qui circule sur la toile est un réel qui s'ouvre sur un autre réel, mais ça, c'est la métaphysique et les autres-mondes.

Giles Deleuze, L'île déserte.

Chaque fois que j'observe le trou béant d'un chantier annonçant un nouvel immeuble, je m'attriste de l'opportunité ratée de passerelles urbaines. J'aimerais tant voir les immeubles munis d'axes de circulations bien au-dessus du niveau de la rue.

June 02, 2013 12:48 AM

Le télétravail, une organisation d'entreprise

Papiers accumulés sur le sol 12 mai 2013, Montréal, Canada

Considérons l'interprétation du marxisme par Althusser et ses collaborateurs : avant tout, les rapports de production y sont déterminés comme des rapports différentiels qui s'établissent, non pas entre des hommes réels ou des individus concrets, mais entre des objets et des agents qui ont d'abord une valeur symbolique (objet de la production, instrument de production, force de travail, travailleurs immédiats, non-travailleurs immédiats, tels qu'ils sont pris dans des rapports de propriété et d'appropriation).

Giles Deleuze, L'île déserte.

Récemment, Marissa Mayer, CEO de Yahoo!, a fait les choux de la presse informatique et surement de toute la presse en gestion des ressources humaines. La décision était de rappatrier tous les employés qui « travaillaient à distance » de revenir près d'un des bureaux de Yahoo! ou bien… de quitter leur emploi. Nombre de personnes de RH se réjouissent de cette décision. La réaction illustre le fossé qui existe entre la réalité du travail à distance et son organisation dans la plupart des entreprises. Et pourtant, il n'y a pas de quoi se réjouir de la décision de Marissa Meyer. Nous n'avons pas assez d'informations pour évaluer sa décision. Il est tout à fait possible que ce soit une excellente décision.

Travailler hors du bureau

Certaines professions autorisent de pouvoir travailler hors du bureau, surtout dans le milieu informatique où la matière avec laquelle nous travaillons est numérique et donc souvent indépendante du lieu—Ce n'est pas toujours le cas. Quelques exemples de messages récoltés dans mes courriers de lieu où j'ai pu travailler :

  • « Bonjour, je télétravaille ce matin pour terminer ma facturation d'août. »
  • « J'ai un test médical cet après-midi. Donc, je vais rester chez moi aujourd'hui. Je suis capable de travailler jusqu'à 14h. »
  • « Je serais en télétravail demain, des ouvriers viendront refaire mon plancher de cuisine. »

Il y a trois catégories dans ces messages : la recherche d'un environnement calme pour travailler (écrire un rapport, finir une tâche unique), l'indisponibilité médicale (rhume, gastro, etc) et la contrainte sur le lieu de résidence (réception d'un colis, réparations, maladie d'un enfant, etc). Tous ces éléments ne constituent pas—pour moi—le travail à distance, mais bien un travail hors du bureau.

Dans mes archives de courrier, le plus vieux message à propos de télétravail date de 1996. Ce n'est pas une notion neuve.

Le mal-nommé

Le travail à distance est mal nommé, mais il n'existe peut-être pas d'autre terme plus approprié. Il ne s'agit aucunement de pouvoir permettre à un employé de travailler à l'extérieur du bureau sur le court ou long terme. L'employé est d'ailleurs un élément secondaire dans le choix. L'organisation du travail par l'entreprise est en revanche primordiale au succès d'une politique de travail à distance. Le travail à distance est un système planifié et organisé de gestion de l'entreprise.

Le système doit être organisé, non pas en étant à distance d'un point central, mais bien a-localisé. Il est nécessaire que tout ce qui sert à travailler fonctionne autant localement qu'ailleurs. Chaque ressource dans l'entreprise doit être accessible en tout point. La localisation devient un élément caduque du travail.

Organisation et astuces

Chaque entreprise aura ses modes propres de fonctionnement et d'organisation. Certaines professions sont très dépendantes de la localisation de l'éxécution de la tâche : un ouvrier sur une chaîne de montage (outil de travail fixe), un ouvrier sur un chantier (loin du bureau), les soins hospitaliers (relations au patient), etc. Il y a cependant de nombreuses professions où il est possible d'avoir une organisation a-localisée du travail partielle ou totale. Il est également possible que seulement certaines professions de l'entreprise puissent travailler ainsi. Voici une liste d'éléments (non exhaustive) à réfléchir pour réussir. Dans l'analyse des processus de travail,

  • comprendre toutes les actions qui dépendent d'une présence physique dans un lieu précis.
  • Déterminer exactement la dépendance à la localisation. Pourquoi ?
  • Définir l'ensemble des modes d'accès à l'information nécessaires pour le travail indépendamment de la localisation.
  • Définir l'ensemble des modes de production de l'information nécessaires pour le travail indépendamment de la localisation.

Tout employé doit être considéré comme travaillant à distance, même ceux qui sont locaux. Par exemple, s'il y a une réunion, les notes de réunions sont prises en même temps que la réunion possiblement avec un système dynamique (chat room, irc, etc). Les conversations sont organisées afin qu'elles soient utiles pour tous les participants. Il est souvent nécessaire de nommer un président de séances (pour les temps de paroles) et un secrétaire (pour les notes), de ne pas permettre les conversations de côté (impossible à entendre au téléphone). Les notes de la réunion doivent être accessibles en tout temps par toutes les personnes partageant le contexte de ces notes. Les points d'actions, les résolutions doivent être enregistrés.

Dans une organisation permettant le travail à distance, il y a bien plus de conséquences pour les employés qui travaillent localement que ceux qui ne sont pas locaux. C'est normal, puisque nous avons vu que l'organisation de ce travail ne dépend pas du lieu. Les employés discutant d'un point important dans le couloir ou la machine à café pour l'éxécution du travail ne peuvent pas se contenter du contexte local. Ils doivent partager avec tous les membres attachés au contexte. Cela signifie rédigé un document, un courrier, ou enregistrer un point dans un gestionnaire de tâche accessible à tous.

Et de nombreuses autres organisations possibles sont imaginables. L'important est bien de se souvenir qu'il s'agit de l'organisation de l'entreprise indépendamment de la localisation de l'employé.

Est-ce possible ?

Vous vous dites donc que ce n'est pas possible. Je réponds que ce n'est pas toujours souhaitable, que pour le faire bien, cela demande un effort concommittant de l'ensemble de la hiérarchie et de tous les employés, que cela demande de la préparation pendant la phase de transition. Mais oui, c'est possible. Je l'ai vécu au moins deux fois : W3C (très bien en général) ou Opera (avec quelques problèmes à régler). J'ai aussi travaillé avec des entreprises avec l'ambition de pouvoir le faire mais sans succès car pas assez engagées dans le processus.

Si vous aviez l'idée de permettre à votre entreprise de le faire, je peux vous y aider.

June 02, 2013 12:35 AM

June 01, 2013

Karl Dubost

Le modèle de la femme selon Ajinomoto

Femme dans la foule 1er juin 2013, Tokyo, Japon

Il est la loi d'un monde sans être, sans unité, sans identité.

Giles Deleuze, L'île déserte.

Ajinomoto est une marque japonaise de condiments pour préparer la cuisine. Une publicité est diffusée par la marque pour venter les mérites de ses produits. La femme se lève de bonne heure pour cuisiner. Lorsque les enfants mangent, elle accroche le linge pendant que le mari pianote son ordinateur sur le canapé. Elle conduit les enfants à l'école, part bosser tout en pensant à ses enfants. Elle va les chercher après la journée de travail et va au supermarché pour… préparer le repas pour les enfants, puisque de toutes façons, le mari boit avec ses collègues. Le début de la chanson « tous les jours »

vignettes d'une vidéo Publicité Ajinomoto

June 01, 2013 10:33 AM

Le modèle de la femme selon Ajinomoto

Femme dans la foule 1er juin 2013, Tokyo, Japon

Il est la loi d'un monde sans être, sans unité, sans identité.

Giles Deleuze, L'île déserte.

Ajinomoto est une marque japonaise de condiments pour préparer la cuisine. Une publicité est diffusée par la marque pour venter les mérites de ses produits. La femme se lève de bonne heure pour cuisiner. Lorsque les enfants mangent, elle accroche le linge pendant que le mari pianote son ordinateur sur le canapé. Elle conduit les enfants à l'école, part bosser tout en pensant à ses enfants. Elle va les chercher après la journée de travail et va au supermarché pour… préparer le repas pour les enfants, puisque de toutes façons, le mari boit avec ses collègues. Le début de la chanson « tous les jours »

vignettes d'une vidéo Publicité Ajinomoto

June 01, 2013 10:33 AM

Métro de Montréal et accessibilité

Affiche dans le métro 31 mars 2013, Montréal, Canada

Car l'inconscient n'est pas autre chose: cet ordre de la subjectivité de groupe qui introduit des machines à explosion dans les structures dites signifiantes comme dans les chaînes causales, et qui les force à s'ouvrir pour libérer leurs potentialités cachées comme réel à venir sous l'effet de rupture.

Giles Deleuze, L'île déserte.

Il n'est jamais trop tard pour se moderniser. Le métro de Montréal finalement a commencé à équiper ses stations de bande jaunes rugueuses en bordure du quai. Afin que les aveugles et mal-voyants puissent déterminer le bon endroit pour prendre ou ne pas prendre son élan. Ce système existe depuis longtemps au Japon. Votre site Web souffre d'enjeu d'accessibilité, il n'est pas trop tard pour améliorer le contenu et les gabarits d'une progressivement en continu.

June 01, 2013 12:01 AM

May 25, 2013

Christian Fauré

Critique des démarches agiles

Ce texte est celui de ma conférence à Agile France 2013 (où j’ai fait un carton avec 6 auditeurs dans une salle de 300 places :-) )

Critique des démarches agiles sur des logiques temporelles très grandes.

Mon propos va aborder l’Agile selon des perspectives temporelles beaucoup plus larges que celles dont on parle généralement quand il est question d’Agile.

C’est donc un choc de temporalité auquel je vous invite.

Si je vais convoquer anthropologie et l’histoire des techniques, c’est pour mettre en place un cadre de compréhension de l’enjeu des démarches Agiles ; ce qui me permettra de faire une proposition en conclusion de mon article.

Le contexte anthropo-technologique

La perspective anthropologique

 Le discours Anthropologique qui m’intéresse, c’est celui qui porte sur le processus d’hominisation, c’est à dire la généalogie et l’évolution de l’homme qui s’étudient sur des millions d’années et dont nous sommes, ici et maintenant, les représentants actuels.

L’anthropologue Leroi-Gourhan a très bien montré que le propre de l’homme – ce qui s’exprime dans notre évolution – c’est un phénomène d’extériorisation de nos fonctions naturelles : le bâton qui prolonge le bras, le silex qui est une prothèse de nos ongles, et bien sûr l’extériorisation de la fonction de mémoire sur des supports de mémoire.

 A ce processus d’extériorisation répond en retour un processus  d’intériorisation : nous ré-intériorisons en permanence ce que nous avons extériorisé. C’est cette boucle qui est le moteur du processus d’hominisation.

Leroi-Gourhan a montré la corrélation entre l’évolution des outils, des techniques et l’évolution du corps et du cerveau humain, c’est à dire que la technique conditionne et sur-détermine le processus d’hominisation dont je vous parle.

Le post-darwinisme de la sélection artificielle

 

Si vous me suivez bien, vous ne serez pas étonnés si je vous dis qu’avec cette thèse le darwinisme et sa sélection naturelle des espèces devient dépassée. Oui, nous sommes issu d’une sélection naturelle, mais depuis au moins deux millions d’années l’importance de la sélection artificielle, par la technique, n’a cessé de prendre de l’importance : nous sommes dans une période post-darwinienne.

Le grand physicien qu’est Stephen Hawking n’aurait jamais pu devenir ce qu’il est si nous étions toujours sous le règne de la sélection naturelle. C’est grâce à la technique qu’il a survécu ; grâce à des artefacts sans lesquels il ne tiendrait pas plus de quelques heures ou de quelques jours.

Même sans aller jusqu’à ces situations extrêmes, combien d’entre vous ne seraient pas ce qu’ils sont s’ils n’avaient ne serait-ce que des lunettes pour lire cet article. Nous sommes des animaux dont l’évolution est conditionné et surdéterminé par une autre évolution – avec laquelle nous devons de co-évoluer – qui est l’évolution des systèmes techniques qui constituent notre milieu.

 Philosophie des techniques

Si la question de la technique est si importante et déterminante pour le processus d’hominisation, il est alors d’autant plus judicieux de porter un regard sur l’évolution des objets techniques et des systèmes techniques.

Bertrand Gille et les systèmes techniques

C’est exactement ce que fait Bertrand Gille dans son Histoire des Techniques : à chaque fois que le système technique évolue, il se retrouve en désajustement par rapport aux autres systèmes (juridiques, commerciaux, politiques, etc.). L’enjeu est dès lors de procéder à un réajustement.

 Accélération – Désajustement & Réajustement

Mais ces évolutions du système technique qui provoquent des désajustements ont une fréquence de plus en plus importante : dans le processus d’hominisation, le chopper a été le système technique qui a duré plus d’un million d’années, aujourd’hui, c’est plusieurs innovations par jour qui font que l’on est dans un rythme d’enfer.

 

Depuis la révolution industrielle les déasjustements sont chroniques et, aujourd’hui, nous vivons nos vies en sachant que nous allons traverser plusieurs ruptures de systèmes techniques : entre le moment où nous naissons et celui ou nous mourrons, tout a changé.

Or, plus les systèmes techniques se développent, plus il faut procéder à des réajustements ; ce rôle a été joué historiquement par la puissance publique en menant à la fois des politiques industrielles tout aussi bien que des politiques sociales. (Çà a commencé avec Colbert en France).

 Mais la situation a changé à la fin des années 1970.

 La montée en puissance du Marketing Stratégique comme substitut à la puissance publique

 

Avec la révolution conservatrice de la fin des années 70 et du début des années 80 –celle qui affirmait que l’état n’est pas la solution mais le problème – nous avons assisté à une liquidation de la puissance publique sous toutes ses formes et, par voie de conséquence, de la fonction de réajustement entre les systèmes sociaux et les systèmes techniques.

La première conséquence est donc que le système technique ne fait plus l’objet d’une politique d’accompagnement et d’adoption menée par la puissance publique – par exemple le New Deal de Roosevelt.

 

Or comment se réajuster vis-à-vis d’un système technique – à présent technologique – qui invente et innove chaque jour ? Comment gérer et digérer l’avalanche de nouveaux brevets, produits et services qui mettent sous pression et sur-sollicitent la société que l’on désigne déjà à cette époque de l’expression de “société de consommation” ?

 

A partir du moment où la puissance publique ne joue plus son rôle de réajustement, va émerger une nouvelle puissance :  le marketing stratégique, notamment via le l’internationalisation de cabinets de conseils en marketing, qui va avoir tendance poser la question du réajustement à partir d’une logique non plus d’adoption, mais d’adaptation.

Pour les entreprises, cela veut dire qu’il faut de nouvelles méthodes de travail au service du marketing stratégique et de sa logique de portfolio de produits qui doit à présent en permanence assurer le renouvellement des gammes et la récurrence des revenus : la fonction commerciale et la fonction production sont à présent au service du marketing stratégique qui ajuste l’offre et la demande.

Les méthodes Agiles vont être ces nouvelles façon de travailler.

 

Un des textes fondateur, souvent cité dans les démarches agiles, est celui de Takeuchi et Nonaka, daté de 1986 et intitulé the “New New Product Developement Game” (on trouvera une traduction française de Fabrice Aimetti), texte qui décrit le changement de situation qui s’est opéré précisément à la fin des années 70.

Comme le rappellent ces auteurs au début de leur article, l’accélération des nouveaux produits à lancer sur le marché – accélération observée au cours des années 70 – est devenue si importante et cruciale pour la survie des entreprises qu’il a fallu travailler autrement.

 En effet :

“Un sondage datant de 1981 et concernant 700 entreprises des Etats-Unis indique que les nouveaux produits représenteront un tiers des profits générés dans les années 80, alors que seulement un cinquième dans les années 70.”

Travailler autrement pour pouvoir lancer des produits plus rapidement, cela se fît en remettant en question les approches séquentielles et leur lot de planification, il fallait réduire les délais, et le “time to market” devînt un indicateur majeur pour évaluer sa capacité à s’adapter et à répondre à l’impatience croissante du marché.

Les vertus de l’Agile

Avant de tracer les limites des démarches Agiles dans le contexte que je viens de décrire, il faut toutefois que j’en précise les forces et les vertus.

Ces dernières sont connues, je vais donc aller très vite pour n’en retenir que l’essentiel, ce qui peut se résumer à ce que j’appelle le “triangle de l’Agile” – qui n’a pas grand chose à voir avec le triangle cout-qualité-délai dont on parle souvent.

 
Les trois sommets de ce triangle Agile sont : le principe d’ignorance, les logiques d’expérimentation et les chemins de retour.

Principe d’ignorance

Ce qui caractérise les démarches agiles c’est qu’elles mettent toutes à la base de leur réflexion ce que j’appelle le principe d’ignorance : on ne sait pas ce exactement et dans le détail ce que l’on va faire ni ce qu’il faut faire, mais le fait de le savoir et de le poser comme postulat de départ prend le contre-pied des démarches descriptives, planificatrices et séquentielles.

 

L’Agilité c’est : comment travailler dans l’incertitude et dans l’ignorance (celle des évolutions technologiques, des clients, des marchés, etc.).

Principe d’expérimentation

 

Une des premières conséquence du principe d’ignorance est la valorisation des essais et des erreurs, via des démarches expérimentales et des logiques de prototypage. Ce qui fait que l’on peut aujourd’hui dire, comme l’a fait Pierre Pezziardi dans sa conférence à Agile France 2013 : “Do the wrong thing Faster”. Ce qui est une façon de répondre à la contradiction suivante : comment avancer sans voir ?

Principe du Feedback, des chemins de retour

 

 Enfin la notion de boucle de retour, de feedback , qui a été formalisé par Norbert Wiener dans le cadre de travaux miliaires sur les missiles. Concept qui s’est répandu comme une trainée poudre : du calcul de trajectoire pour les missiles et les batteries anti-aériennes jusqu’à la psychologie et la sociologie, en passant par la biologie et tant d’autres disciplines.

Avec la correction de trajectoire, on peut tirer sans avoir à faire de puissants calculs a priori, la correction se fera chemin faisant. Ce qui vaut pour la balistique vaut également pour les démarches agiles.

 Les limites de l’Agile

 

 J’en viens à la critique de l’Agile, critique au sens où il y a des choses qu’on ne peut pas faire ou qui ne sont pas adaptées aux démarches Agiles.

 Ce n’est pas dévaloriser les vertus de l’Agile que d’en chercher les limites. Et déjà en 1986, l’article de Takeuchi et Nonaka en énonçait certaines, parmi lesquelles :

  • l’effort extraordinaire de la part des membres du projets, notamment en terme d’heures de travail ;
  • l’inadéquation à des projets gigantesques où la taille et le nombre d’intervenants limitent les possibilités de discuter face à face ;
  • l’inadéquation à des projets de ruptures qui exigent une innovation révolutionnaire ;

Une des principale difficulté que rencontrent les démarches Agiles c’est le « passage à l’échelle » : comment passer d’une équipe de 10 personnes à plusieurs dizaines de personnes voire à de plus larges échelles au sein des organisations ?

 Tendance Lean

Ce que je constate, c’est que dès que les démarches agiles ne concernent plus seulement une poignée d’individus, il y a une tendance à ce que l’Agile laisse la place au Lean.

L’explication est presque mécanique  : quand on est dans des logiques d’itération très rapides, avec des sprint de deux semaines, plus on multiplie les intervenants plus le rythme des itérations et la synchronisation nécessaire entre les individus devient ingérable.

Les logiques d’itérations, avec leur principe du feedback, amènent plus de confusion qu’autre chose quand le nombre d’intervenants augmente ; d’où une tendance à lisser si ce n’est à supprimer les itérations pour tendre vers une logique de flux.

Le Lean dévore l’agile quand ce dernier est poussé au delà de ses limites. Mais aussi le Lean dénature les démarches Agiles.

 

Pourquoi cela ? Parce que le Lean, en tant qu’il provient du Toyotisme, n’est pas autre chose que de l’hyper-Taylorisme. En ce qui me concerne je n’oppose pas Taylorisme et Toyotisme comme je l’entends souvent faire : il y a bien sûr des différences mais, au-delà de ces différences, ces deux organisations du travail ont tendance à produire des pertes de savoirs de la part des salariés. Un travail qui ne permet pas de développer des savoirs et des savoirs-faire n’est d’ailleurs plus un travail, il n’a plus de saveurs et se transforme en un emploi.

La dissociation entre d’un côté ceux qui conçoivent et de l’autre ceux qui exécutent, que l’on associé traditionnellement au Taylorisme, se rejoue avec encore plus de vigueur dans le Toyotisme.

Comprenez moi bien, si je suis très critique vis-à-vis du Toyotisme, cela ne veut pas dire que je sois opposé à tout ce que peut apporter ce qui a été formalisé sous le nom de “Lean” (une galaxie de recettes, de méthodes et d’attitudes).

Je dis simplement que le Lean tue l’Agile : du “triangle Agile” que j’ai présenté ci-dessus, le Lean n’est pas guidé le principe d’ignorance et la logique d’expérimentation ; il ne garde la boucle de retour que comme principe d’ajustement – voir de surveillance – pour garantir la fluidité du flux.

Bien sûr, il est toujours très intéressant pour les consultants de prodiguer des conseils et une assistance pour mettre en place des démarches Lean, mais il l’est beaucoup moins de travailler dans un contexte Lean. Ceux qui mettent en place le Lean ne sont généralement pas ceux qui vont travailler en mode Lean.

 

Ça produit de belles histoires, comme avec le livre “The Goal” de Eliyahu M. Goldratt, sorte d’aventures de Sherlock Holmes au pays de la logistique, mais allez donc écouter certains témoignages, ou voir la médecine du travail pour avoir un autre visage du Lean.

Le Toyotisme avec sa logique de flux se met en place dans des logiques fortement dissociées : chacun doit rester à sa place pour être fonctionnel et la co-individuation ressemble alors beaucoup a ce que l’on constate dans les fourmilières, ce qui avait d’ailleurs poussé la première ministre française, Edith Cresson, à comparer à deux reprises, en 1989 et 1991, les travailleurs de l’industrie japonaise à des fourmis. Ce qui n’a pas manqué de refroidir les relations diplomatiques entre nos deux pays.

Or on n’a pas cette dissociation “concepteur / opérateur” dans les démarches Agiles où ceux qui mettent en place sont souvent eux-mêmes des praticiens et où il y a une frontière poreuse entre les théoriciens et les praticiens : c’est ce que j’appelle un milieu associé pour le distinguer du milieu dissocié du taylorisme, aussi bien que du Toyotisme.

*

Pour en revenir à l’Agile et refermer cette parenthèse sur le Lean, le triangle de l’agilité est une très bonne chose, mais le risque est qu’il tourne en boucle, qu’il se laisse enfermer dans le court terme, qu’il ne produise pas de savoirs et n’offre pas de perspectives reste très fort.

Du coup, la question devient : comment articuler les démarches Agiles avec des logiques de moyen terme et de long terme mais  :

  • sans retomber ni dans les travers de l’organisation en mode projet en cascade très justement écartée dans le manifeste Agile ;
  • sans dénaturer l’agile dans les logiques Lean.

 Au dela de l’Agile : l’enjeu de l’adoption

 

Complémentarité de la Recherche Action avec les démarches Agile

 Pour aller plus loin que l’Agile mais sans renier l’Agile, il faut jeter un œil sur les démarches de Recherche-Action.

 

Les démarches de Recherche-Action dont Kurt Lewin est considéré comme le fondateur (travaux sur la dynamique des groupes), sont très similaires à ce que l’on retrouve dans les démarches Agiles ; on retrouve ainsi le triangle Agile que j’évoquais tout à l’heure avec le postulat d’ignorance, l’expérimentation et les chemins de retour.

On cite souvent trois expériences pionnières de recherche-action dans les années 40 à 60 avec le Tavistock Institute en Grande Bretagne, la démarche Démocratie Industrielle de la Suède dans les années 60 et celle qui a eu lieu à l’hôpital Saint Alban en Lozère pendant la seconde guerre mondiale.

 

S’il y une forte similarité avec les démarches Agiles, il y a toutefois certaines différences qui sont instructives :

  • il ne s’agit pas de lancer un nouveau produit ou service : il s’agit généralement d’opérer une transformation de l’organisation elle-même. Souvent c’est une démarche de plusieurs années.
  • l’emphase est mis sur le refus de séparer radicalement la recherche de l’action, la théorie de la pratique. L’objectif est double : trouver des solutions en produisant des savoirs.
  • Cette production de savoirs est collective et s’effectue dans une logique de contribution où toutes les parties prenantes sont considérées.
  • C’est un milieu associé qui se met en place où il n’y a pas d’un côté les producteurs (de solution) et de l’autre ceux qui les mettent en oeuvre. Ainsi, dans le domaine du soin et de la santé, c’est le malade qui va contribuer à sa propre thérapie avec le docteur. Le fait que le patient soit contributeur et actif dans le traitement bouscule les logiques dissociées.
  • En ce sens c’est une démarche profondément axée sur une logique de dé-prolétarisation (prolétarisation = perte de savoirs).

En conséquence, on ne parle plus tellement d’adaptation mais d’adoption, et c’est peut-être autour de cette différence entre adaptation et adoption que se comprend le mieux la différence entre l’Agile et la Recherche-Action.

Prospective : Un avenir ou un devenir ?

J’ai inscris les des démarches agiles dans une perspective très large qui est celle du processus d’hominisation, j’aimerais à présent terminer en montrant qu’en regardant  loin derrière on peut voir loin devant. Ce qui sera une manière de compléter le court terme des démarches agiles et le moyen terme de la Recherche-Action par des démarches sur le long terme.

Retour à l’anthropologie

 

Ici encore, le recours à l’anthropologie de Leroi Gourhan est précieux car il repose sur une interprétation du phénomène technique, qui est pour lui la caractéristique première du phénomène humain. C’est ce que je disais il y a quelques minutes en vous disant que l’homme, contrairement aux autres vivants, ne fait plus seulement l’objet d’une sélection naturelle telle que décrite par Darwin, mais aussi d’une sélection par la technique, c’est à dire une sélection artificielle.

Avec l’homme, l’histoire de la vie se poursuit par d’autres moyens que la vie : c’est le paradoxe d’un vivant, celui que nous sommes, qui est caractérisé dans ses formes de vie et ses évolutions par du non-vivant, par l’objet technique (cf. Stiegler, La technique et le temps t1)

Ainsi l’outil, la technique et la technologie, sont des interfaces non seulement entre les l’homme et son milieu mais également entre les hommes eux-mêmes. Et, qui plus est, les objets techniques et aujourd’hui les systèmes technologiques, évoluent eux-mêmes ; de cette évolution dont j’ai rappelé précédemment qu’elle avait atteint un rythme d’enfer.

Depuis la révolution industrielle, la pression des évolutions technologiques se manifeste en imposant un rythme doté d’une fréquence qui ne cesse de s’accélérer  on parle alors l’innovation permanente, celle là même qui a poussé les entreprises à adopter des démarches Agiles pour ne pas être sidéré, c’est à dire tétanisé, par ces évolutions.

Mais alors, si l’évolution de l’homme est indexée sur l’évolution des technologies, ne peut-on pas prévoir le futur et donc anticiper notre évolution ? Les organisations, privées ou publiques, ne peuvent-elles pas investir en connaissance de cause puisque il “suffit” de connaître l’évolution des techniques ?

Dit autrement : puisque nous sommes le fruit de la technique, ne pourrait-on pas connaître notre futur en connaissant le futur des technologies ?

 Quel discours sur le futur ?

Il est indéniable que nous avons besoin d’un discours sur le futur, mais lequel ? Celui de la voyance, de l’astrologie, celui des ingénieurs de génie tels Archimède ou Léonard de Vinci, plus proche de nous la science fiction avec Jules Vernes, ou encore les anticipations du cinéma et des industries culturelles ?

 Ou bien s’en remettre aux gourous de la futurologie comme le fait Google en recrutant Ray Kurzweil ?

 

Quelque soit la démarche, les discours sur le futur sont aujourd’hui redevenus d’actualité au sein des grands groupes industriels, et pour la même raison qui a poussé les industriels des années 70 et 80 a commencer à adopter des démarches agiles : le rythme d’innovation continue de s’accélérer, mais aussi celui ce l’invention.

La bouffée d’oxygène apportée par l’Agile a atteint ses limites structurelles, déjà identifiées par Takeushi et Nonaka : les méthodes agiles ne sont pas adaptées pour apporter des logiques de ruptures.

 De quoi sera fait demain ? Ou faut-il investir ? L’agile semble être impuissant : le court terme est en même temps sa force et sa limite.

 De la veille à la prospective


Jusqu’à très récemment, disais-je, les grandes organisations ne faisaient pas de prospective. La seule chose qui existait, c’était une activité de veille, qui n’existait que comme vigie en charge d’alerter des changements auxquels l’organisation devait se préparer à s’adapter.

Quand on veut rester dans des logiques d’adaptation : on fait de la veille, mais si l’on veut rentrer dans des logiques d’adoption il faut faire de la prospective.

Ceux qui restent aujourd’hui dans des logiques d’adaptation en multipliant les itérations sur le cours terme ou en étant fasciné par le temps réel n’ont pas d’avenir, tout au plus un devenir. Car l’avenir n’est pas le devenir. Le devenir c’est ce qui va arriver naturellement : la pierre va tomber, le fleuve va couler, etc, alors que l’avenir c’est ce qui fera l’objet d’un choix et d’une sélection, dans mon vocabulaire : d’une adoption.

Rien ne dit mieux cela que la célèbre formule d’Alan Kay du Xerox PARC de Palo Alto : “la meilleure manière de connaître le futur c’est de l’inventer”.

 

Quand on travaille sur le long terme, on fait en sorte que ce soit les logiques d’adoption (qui correspondent à l’avenir) qui sont à l’oeuvre plutôt que celles d’adaptation (qui correspondent au devenir).

Mais si l’on veut être sérieux sur ces questions de prospective, il ne faut pas se focaliser sur la vision américaine, que l’on appelle futurologie, qui glorifie soit les gourous soit les entrepreneurs visionnaires : il nous faut un discours raisonné. Mais force est de constater que les discours ambiants sur le futur ne sont pas satisfaisants, alors pourquoi ?

Ma conviction est que la plupart des discours sur le futur qui s’appuient sur les évolutions des systèmes techniques et technologiques ne font pas une distinction capitale que propose Leroi Gourhan dans  “L’homme et la matière”, à savoir la distinction entre les tendances techniques et les faits techniques.

 

 La tendance tient à la nature même de l’évolution des techniques, elle a un caractère inévitable, prévisible et rectiligne : c’est elle qui pousse le silex tenu à la main à acquérir un manche, le ballot traîné par deux perches à ce munir de roues, la roue appelle elle-même la manivelle, etc.

 Le fait, à l’inverse de la tendance, est imprévisible et particulier, il correspond à la rencontre de la tendance avec un milieu (ethnologique et écologique), c’est un compromis unique et instable qui s’établit entre les tendances et le milieu.

La tendance et le fait, nous dit Leroi-Gourhan, sont les deux faces (l’une abstraite et l’autre concrète) du même phénomène de déterminisme de l’évolution technique.

Ce n’est pas le moment de rentrer dans les détails et les exemples que donne Leroi-Gourhan mais il faut retenir que ceux qui prétendent aujourd’hui prédire le futur se trompent la plupart du temps parce qu’ils veulent prédire des faits, or ceux-ci sont imprévisibles, seules les tendances le sont.

 Forte de cette distinction, la prospective –notamment celle qui a été fondé en France par Gaston Berger dans les années 50 (cf. mon billet sur la prospective française) – est armée méthodologiquement pour faire un travail de corrélation entre les faits et les tendances en dressant des futurs possibles, c’est à dire compatibles avec les tendances technologiques.

Ensuite, il faut faire des choix et prendre des décisions sur le futur que l’on souhaite adopter parmi tous les possibles et faire en sorte que l’émergence de certains faits soient favorisés et d’autres non.

Il s’agit donc de faire en sorte que les faits qui constituent les pavés de notre chemin avenir aillent dans une direction que l’organisation a décidé d’adopter.

Conclusion

L’enjeu est donc l’articulation entre le court terme et le long terme si l’on veut opérer des transformations ; ici, cela me permet de pointer du doigt l’importance de la notion de chemin critique que l’on a largement perdu avec l’agile.

C’est la présence d’un chemin critique qui indique qu’il y a un investissement, car c’est une des tendance de l’agile que d’être un dispositif plus adapté à la spéculation et la gestion du risque à court terme qu’à l’investissement.

Il est peut être temps que l’Agile se donne de nouveaux horizons, c’est à dire de nouvelle ambitions qui ne sont plus simplement de sortir du nouveaux produits et services mais également, et en même temps, de mener des chantiers de transformation motivés et motivants.

Voici donc pour finir un schéma qui résume ma proposition pour coupler, dans vos projets,  l’Agile sur le court terme avec des méthodes compatibles sur le moyen terme (Recherche-Action) et le long terme (Prospective) :

Signaler sur Twitter

by Christian at May 25, 2013 01:29 PM

May 22, 2013

del.icio.us

May 18, 2013

David Larlet

Une quête de sens

Je suis (non-)intervenu à SudWeb 2013 pour animer un débat sur le sens de notre implication dans notre métier suite à une informelle donnée à ParisWeb 2012. J'avais choisi des thématiques très larges telles que l'argent, l'utilité, la reconnaissance, l'adrénaline, le partage, la santé, l'écologie ou le fun. L'objectif était d'avoir un débat non technique et de faire se poser quelques questions à l'auditoire sur les choix qu'ils font professionnellement (et finalement personnellement aussi) au cours de leur vie. Petite rétrospective sur cette heure d'échanges à plus de 100.

Ce qui a bien marché

  • le fait d'énoncer des règles claires en début de session a permis de ne pas avoir de monopolisation de la parole par un seul petit groupe de personnes (après discussion avec le staff de SudWeb, ils faisaient attention dans la distribution des micros à répartir équitablement la parole donc cela ne se faisait pas tout seul non plus ;-)) ;
  • la disposition de la salle a beaucoup fait pour que le débat soit possible et qu'une dynamique de communication en face-à-face se mette en place ;
  • la participation a été assez exceptionnelle avec un démarrage immédiat du débat (je stressais un peu de me retrouver avec une salle muette) et un engagement qui n'a pas faibli au cours de la session ;
  • la variabilité dans les points de vues et les niveaux de recul des participants, c'était à titre personnel assez rafraichissant d'avoir des remarques qui partaient un peu dans tous les sens sans forcément suivre les thématiques proposées ;
  • mon silence, j'ai réussi à me retenir plusieurs fois d'intervenir pour laisser la parole à la salle, c'est extrêmement frustrant mais je pense que cela a été bénéfique au débat ;
  • les discussions que cela a produit au cours des jours suivants, je n'avais jamais eu autant de retours suite à une intervention et au-delà des retours personnels j'ai pu observer de nombreux échanges — en périphérie des sessions — relatifs au débat ce qui ne peut que me ravir.

Ce qui pourrait être amélioré

  • beaucoup de consensualité dans les échanges et j'ai du mal à trouver comment est-ce que cela pourrait évoluer, ni même si ça doit l'être. Ma crainte est plus dans le mode « bisounours » activé par la prise de parole en public ;
  • l'introduction des thèmes à partir de questions focalisait la salle sur les questions et peu sur la thématique au sens large, c'est dommage mais je n'ai pas trouvé mieux pour lancer les sujets ;
  • le sujet sur l'adrénaline n'a pas été compris par tout le monde et j'ai eu des retours très contrastés par la suite (certains ne s'y retrouvant pas du tout et d'autres à fond), l'objectif était surtout de faire une pause dans les sujets plutôt lourds qui étaient discutés avant et après ;
  • le sentiment de frustration vu le nombre de personnes qui souhaitent s'exprimer mais c'est le jeu, on avait 60 minutes pour une centaine de personnes ça fait quelques secondes seulement par participant…

Et la suite ?

Une question ouverte en guise de conclusion sans avoir vraiment de proposition technique concrète pour continuer le débat. Après réflexion (et de nombreuses discussions), je ne pense pas qu'il soit pertinent de continuer en ligne par contre je serais ravi que les discussions continuent ici ou ailleurs en espérant avoir semé quelques graines qui pourront germer de proche en proche.

May 18, 2013 11:00 PM

May 14, 2013

Karl Dubost

Données ouvertes, données glanées

plantes aquatiques 3 juin 2006, Tokyo, Japon

Avec la vogue du pèlerinage qui justifiait tout, beaucoup voyagèrent au mépris des règles. Ils agitaient des talismans glanés dans les temples en disant qu’ils allaient à un service religieux. La circulation s’intensifia dans le pays.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Il y a quelques années, les débuts des services Web font rage. Nous devons inclure les cartes dynamiques, les informations du site Gloubi avec celui du site Boulga. C'est l'ère du mashup. Tout cela n'a pas disparu bien sûr. Cela s'est juste régularisé. Les gros ont mangé les petits. Les services plus ou moins rentables ont survécu et les autres ont laissé des trous dans des pages Web non maintenues. Une API pour accéder aux données, une API pour inclure ceci ou cela sans jamais vraiment se poser la question de la pérennité ni de la pertinence. Mais on expérimente. C'est déjà cela.

Depuis les 4 dernières années, l'expression brûlante sur toutes les lèvres est opendata (données ouvertes). Bien sûr, comme le sujet n'avance pas assez vite. On glane (to scrap) ici et là les données dont nous avons besoin. Parfois avec de nombreux efforts, de regex, de requêtes HTTP, on arrive à extraire les données des pages Web, même en tordant le bras aux licences du site Web en question.

Alors bien sûr dès qu'il y a un besoin et un problème technique difficile à régler, un service émerge afin de créer des connexions. Le but de import.io est de démocratiser l'accès des données en ligne. Cela ressemble à un recyclage du vénérable Yahoo! Pipes. Ce qui semble intéressant, je ne peux pas encore le tester directement, c'est que l'outil semble apprendre de la structure de données du site et de proposer des interfaces pour mieux extraire les données.

Dans ma réflexion sur les APIs hypermédias qui accompagne une autre sur les commentaires distribués, je me dis que des vocabulaires génériques (rel/meta/etc) pourraient décoller s'il y avait plus d'outils d'aggrégations utilisant le glanage des données. Pourquoi par exemple donner un accès à un feed au format atom, si nous avons des outils comme webmention et hAtom pour déjà y répondre.

En passant, il y a un événement EcoHack à Montréal bientôt.

May 14, 2013 07:24 PM

May 12, 2013

Karl Dubost

HTTP API, hypermedia et le besoin du marché

Marché de légumes 12 juillet 2008, Katsura, Japon

Par nuit de tourmente, les roseaux communs bruissaient près des avant-toits, le matin les vendeurs de tôfu eux-mêmes se faisaient rares, son ventre pâtissait tristement du végétalisme obligé.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Hier, j'ai mentionné qu'il fallait se poser les bonnes questions avant de choisir le style et la technologie de son API (XML-RPC, HTTP, HATEOAS, etc). L'une de ses questions est essentielle, à mon avis, dans le choix d'une API hypermedia (HATEOAS). Cependant cette question est rarement abordée. Aujourd'hui l'argument principal pour promouvoir HATEOAS est celle de rendre l'API explorable par le client (logiciel) lui-même et donc que la construction des URIs de l'interface est beaucoup moins dépendante d'un fort couplage entre le client et le serveur.

Les APIs HTTP d'aujourd'hui

Aujourd'hui, de nombreuses APIs HTTP, qui se disent REST et ne le sont pas, s'appuient sur la construction prédéterminée des URIs. Typiquement, le développeur d'un client lira la documentation sur le serveur et sait que certaines formes d'URI permettent d'obtenir certaines données. Cela permet au développeur de créer très rapidement un client qui à l'avance peut traiter les données. En revanche, cela entraîne un couplage très fort entre le client et le serveur. Le serveur devient victime de ce couplage par rapport aux évolutions futures sur le schéma d'URI choisi—Je ne parle pas de vocabulaire de l'API. Si le serveur change, les clients doivent changer.

Mais est-ce bien grave ? Je vais y revenir.

HATEOAS

Donc souvent, face aux interfaces HTTP à fort couplage, il est souvent recommandé un style légèrement différent : Hypermedia ou HATEOAS. Le client ayant une interface hypermedia générique (comme la connaissance du format HTML et de ses a/href/rel), il peut explorer l'API (soit suivre les liens et les valeurs de rel) afin de construire les URIs dynamiquement plutôt que codés apriori. L'avantage pour le serveur et le client est que cela permet de mettre de l'huile dans les rouages en rendant indépendant du choix de schéma d'URI.

Vocabulaire d'API

Chaque API est composée d'un certain vocabulaire, des requêtes spécifiques auront des réponses spécifiques. Dans le cas d'une API HTTP, le vocabulaire est très fortement couplé avec le schéma d'URI. Dans le cas de HATEOAS, le vocabulaire est très fortement couplé avec la sémantique du document. Dans les deux cas, il s'agira de connaître le vocabulaire pour pouvoir créer un client efficace.

La bonne question

La bonne question dans le choix de HATEOAS vs une API plus couplée n'est pas tant l'évolutivité de l'API au niveau de son vocabulaire mais bien celle de l'évolutivité du schéma d'URI. Donc oui HATEOAS ajoute de la robustesse mais pas celle qui est souvent vendue, promue. Il est ceci dit possible de définir son API de façon à ce que l'évolution du vocabulaire soit aussi explorable dynamiquement, mais cela se réfléchit en amont. Viens alors la réelle question…

Le service : est-il générique (plusieurs entreprises se partageant le marché) ?

L'enjeu pour avoir des outils génériques capables de fonctionner de façon autonome face à une API dépend du besoin du marché avant tout. C'est à dire que si je conçois un service qui est utilisé par deux/trois personnes. Mon API peut avoir un fort couplage sans aucun problème. Si en revanche, j'ai besoin de parler à un grand nombre de clients différents déployés en grands nombres, l'évolutivité et la flexibilité devient un avantage pour le futur si mon API s'inscrit dans le long terme. Mais finalement, encore plus important est lorsque je conçois mon service Web comme un service générique faisant partie d'un large marché de services similaires (exemple tous les serveurs de mails implémentant IMAP). Cette fois-ci, l'intérêt est de permettre aux personnes qui ont des clients logiciels d'utiliser mon service ainsi que celui des autres par une interface uniforme et non couplée.

Et c'est bien pour cela que les APIs hypermedia ont dû mal à décoller. Les acteurs actuels ont beaucoup d'intérêts d'affaires (API pour silos) et très peu d'intérêts de marché (API génériques).

May 12, 2013 03:07 PM

Les systèmes et leurs échecs

Panneau de chute de rochers 12 juillet 2008, Chiba, Japon

A fortiori, les hommes n’atteignaient pas à cette sagesse.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Il a fallu un rat pour détruire un cable d'alimentation électrique du système de refroidissement de la centrale nucléaire de Fukushima. L'innocence d'un rat pour mettre en péril l'équilibre fragile d'un système complexe et instable. Les estimations actuelles donnent 40 ans avant d'avoir démonté la centrale, environ une génération et demie de temps humain.

L'enjeu de l'énergie nucléaire n'est pas tant dans le danger léthal de la radioactivité—le nucléaire lui-même—mais bien la centrale nucléaire. À la création de nouveaux systèmes, nous créons de nouveaux enjeux, de nouveaux problèmes. Les systèmes crées pour le fonctionnement d'une centrale nucléaire sont très complexes. John Gall dans son essai sur les systèmes, Systemantics, mentionne que Tout grand système va fonctionner la plupart du temps en mode d'échec. En effet ce qui est intéressant dans la création du système n'est pas tant les modes de succès, ce qui généralement fait l'objet de la concentration de nos efforts, mais bien comment ce système va échouer. Cependant il ne faut pas avoir l'illusion que nous pourrions tout prévoir car comme le pose John Gall Un système peut échouer de façon infinie.

Nous savons donc que le système va échouer et nous savons que nous ne pouvons pas prédire l'ensemble des possibles de l'échec. La conception d'un système robuste devient alors une recherche de la flexibilité face à l'échec, face à l'imprévisible. L'enjeu d'une centrale nucléaire est que certains de ces modes d'échecs ont des conséquences difficilement contrôlables à de très larges échelles de temps et d'espace.

May 12, 2013 12:24 PM

CCA, Archéologie du numérique

Série de 4 images de visualisations Archéologie du numérique, CCA

Des maisons miteuses, en ce temps de moisson, s’échappait le seul bruit du fléau. Avec de la paille de blé, les enfants du village faisaient des cages en forme de cône torsadé pour enfermer des rainettes.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

L'exposition archéologie du numérique au CCA du 7 mai au 13 octobre 2013 présente quatre projets d'architecture des années 80-90. Sous l'angle de l'utilisation des logiciels de conception, on nous invite comment l'utilisation de ces nouveaux outils a modifié la forme de la conception. La salle du centre présente une maquette pour chacun des quatre projets que l'on peut retrouver dans les salles adjacentes un peu à la façon d'un arbre dont les portes sont les liens entre la salle sommaire à l'entrée.

Voilà cependant l'exposition ne va pas plus loin et plutôt qu'une archéologie du numérique, on se retrouve coincé dans une réflexion plutôt succinte sur comment les automates de programmation, les capacités de calcul ont permis d'explorer les formes sur l'écran et donc de dévelloper de nouvelles formes physiques. Quelques vestiges du passé de l'informatique, des outils sur lesquels j'ai moi-même travaillés, quelques copies imprimées de brevets, quelques maquettes automatisées, … et c'est tout. La réflexion ne va pas plus loin et le terme « archéologie du numérique » devient soudainement une tromperie ou au moins une ébauche du sujet à traiter.

Les conséquences du numérique ne se définissent pas seulement dans la forme, mais également dans la modification de nombreux autres éléments de l'environnement. Dans les idées de pistes à explorer pour une archéologie du numérique dans le domaine de l'architecture :

  • La modification des studios d'architecture avec l'arrivée de l'ordinateur
  • Les changements sociaux induits entre les employés
  • Les coûts d'investissement relatifs pour les concours
  • L'accélération du temps
  • La simulation des espaces par les flux
  • La détérioration de la mémoire des objets numériques dans le quotidien
  • La modification de la théorisation architecturale par la destruction du physique pour élaborer le physique.

Et de nombreux autres sûrement à explorer. Je vous recommande tout de même d'y aller mais sans espoir de révélations intenses.

May 12, 2013 01:55 AM

May 10, 2013

Christian Fauré

« Théorie du drone », de Grégoire Chamayou : la guerre est finie

4082804241C’est un travail remarquable – et remarqué – que vient de publier Grégoire Chamayou avec sa « Théorie du drone ».

La théorie est en retard sur la pratique, rappelle l’auteur en début d’ouvrage. À cela rien de nouveau : la théorie est toujours et systématiquement en retard sur la pratique. Mais quand la distance devient trop grande, on s’en laisse trop facilement compter par ceux qui sont aux commandes de la pratique. En ce sens, l’objectif de « Théorie du drone » est pleinement atteint : il y a une re-problématisation des enjeux ainsi qu’un travail critique qui s’avère, le livre lu, non seulement utile et intéressant, mais nécessaire.

Nécessaire car l’auteur procède à une re-qualification et une re-catégorisation des activités belliqueuses à la lumière des évolutions technologiques, et notamment de ces fameux drones qui font l’actualité : depuis les fuites de Wikileaks, jusqu’aux documentaires vidéos en passant par les journaux télévisés et autres jeux vidéos.

J’insiste sur les termes de re-qualification et re-catégorisation : c’est un travail sur les catégories qui est ici proposé avec le postulat suivant : les catégories procèdent fondamentalement des techniques ; elles sont fondamentalement techniques. Ce qui signifie que l’évolution des techniques et des technologies nécessite une réactualisation permanente des catégories. Le travail que fait ici Chamayou, d’autres le font dans d’autres domaines : dans la fiscalité, dans le commerce, dans le travail, dans l’économie, etc. et tous ont une visée politique, en ce sens que la politique – le lieu ou les décisions se prennent – doit être éclairée par les bonnes catégories pour pouvoir prendre les meilleures décisions. Les catégories sont les lunettes à travers lesquels ont perçoit le réel (les catégories sont des instruments) : un mauvais réglage, de mauvais verres, et les choix seront biaisés.

Le livre de Chamayou est en ce sens un livre de philosophique car il éclaire le politique (et nul doute qu’il aura de nombreux lecteurs attentifs dans les états majors de l’armée française, puis ailleurs une fois traduit, ce qui ne devrait pas tarder).

La principale re-catégorisation – et qui est la thèse du livre – est la suivante : ce que l’on appelle la guerre n’est plus la guerre, c’est une « chasse l’homme », pour reprendre le titre du précédent ouvrage de l’auteur. Thèse en vertu de laquelle je peux me permette de donner le sous-titre suivant « la guerre est finie ».

Mais est-ce pour autant une bonne nouvelle que de dire que « la guerre est finie » ? Certainement pas après avoir lu le livre, et voici ci-après quelques éléments du travail sur les catégories qui ne permettent pas de se réjouir.

Tout d’abord, la guerre suppose une confrontation entre des combattants. Or, avec le drone qui opère depuis le ciel tel l’œil de Dieu qui voit tout et frappe sans réciprocité possible, on se retrouve dans une asymétrie telle entre les forces en présence qu’il n’y a plus d’affrontement possible.

On pourrait se réjouir d’une telle impunité comme le font les services de communication des militaires américains en avançant que cela soustrait toute possibilité de pertes de vies humaines parmi les soldats américains, élément si sensible dans l’opinion. Mais ce serait aller trop vite, et cela pour plusieurs raisons :

  • D’abord parce que les frappes des drones ont tendance à être des frappes probabilistes : en fonction des comportement observés, le tir se fait quand il y a une forte probabilité que les personnes visées soit des « ennemis ». On ne tire pas sur des hommes en uniforme, voire même sur des cibles identifiées en tant que telle : tout est potentiellement cible, en acceptant une « marge d’erreur ».
  • L’effet psychologique sur les populations civiles qui vivent sous la menace permanente du bourdonnement des drones au dessus de leur tête est dévastateur pour gagner les cœurs de la population. Combiné aux erreurs de frappes qui ne sont plus « collatérales » mais « statistiques », on constate alors que les drones sont les meilleurs agents recruteurs des talibans, comme le souligne un dirigeant taliban pakistanais : « en une seule attaque américaine j’ai eu 150 volontaires ».
  • L’opérateur de drone qui se trouve au Nevada peut frapper à distance, mais il le fait depuis un territoire pacifique, hors du théâtre des opérations, ce qui ne correspond plus aux critères de définition de la guerre et des soldats ; preuve en est qu’une partie des « pilotes de drones » sont des civils et plus des militaires. De plus, mes valeurs militaires : courage, virilité, sens du sacrifice, etc. deviennent totalement caduques. Ce qui n’est pas sans provoquer des troubles au sein même des troupes « conventionnelles » américaines.
  • Etc.

On l’aura compris, à la lecture des arguments de Grégoire Chamayou, ce que l’on entend par « guerre », aussi bien dans l’acceptation courante que dans les textes juridiques relatifs à la guerre et aux conventions internationales, ne correspond absolument plus à ce qui se pratique avec les drones. Débarrassées des sophismes du pentagone et de l’industrie militaires, il ne reste plus qu’un terme pour qualifier ces pratiques : une gigantesque chasse à l’homme à l’échelle du globe dont la meilleure description a peut-être été faite par Poutine lorsqu’il déclarait à propos des terroristes tchétchènes qu’ils les traquerai et les poursuivrai « jusque dans les chiottes » s’il le fallait. « License to kill » précise Chamayou.

Et quand on songe que ces technologies sont en réalité  « low-cost », on devine déjà que ce qui s’expérimente en Afghanistan, au Pakistan ou au Yémen va nécessairement se multiplier, et pas seulement en  « territoire ennemi lointain » mais dans nos propres pays occidentaux, soit sous l’étiquette policière soit sous l’étiquette terroriste.

Mais si cette guerre n’en est plus une, s’il s’agit effectivement, de missions policières extra-territoriale et si l’on est en droit de penser qu’elle ne permettent pas de gagner sur le seul terrain qui compte, celui de la contre-insurrection visant à gagner l’adhésion des populations civiles, alors pourquoi est-ce que cela continu ?

 

Certainement parce que ce qui se met en place, au travers ces technologies qui permettent d’opérer à distance et de manière de plus en plus automatisée, est une logique de déresponsabilisation de toute la chaîne de prise de décision et de commandement. Le paradoxe étant qu’avec l’autonomisation et l’automatisation des engins de guerre et de la décision létale :

«  … le seul agent humain directement identifiable comme étant la cause efficiente de la mort serait la victime elle-même qui aura eu le malheur, par les mouvements inappropriés de son corps, comme c’est déjà le cas avec les mines antipersonnel, d’enclencher à elle seule le mécanisme automatique de sa propre élimination »

 

Nous sommes donc face à ce que Grégoire Chamayou appelle « un dispositif typique de fabrique de l’irresponsabilité » et qui rappelle bien évidemment ce qui se passe dans l’automatisation des systèmes financiers : ce livre a donc une réelle portée paradigmatique de notre époque technologique, bien au-delà des questions militaires.

 

*

 

 

Cependant, il m’est difficile de passer sous silence le travail d’édition de ce texte qui, à l’image d’une pratique toujours trop répandue, s’entête à proposer les notes de bas de page … en fin de volume !

On a l’impression de lire un livre « dont vous êtes le héros » à force de renvois à un système de classification des notes classées d’abord par pages puis par numéros en fin de volume. Ces éditeurs sont tellement crétins qu’ils ont intériorisés le fait que ce n’est pas possible, que c’est mieux pour le lecteur,  que çà coûte trop cher ou que sais-je encore : exactement le genre d’argument qui justifie le passage au numérique et qui nous rappelle que ce sont d’abord les pratiques de l’édition papier qui sont les meilleurs arguments pour préférer les éditions numériques (qui ont par ailleurs elles-mêmes leurs propres tares, je ne les idéalise pas). Toujours est-il qu’on en vient à souhaiter que la totalité des drones soient déployés au dessus des maisons d’éditions qui continuent ainsi à mépriser aussi bien les auteurs que les lecteurs.

Signaler sur Twitter

by Christian at May 10, 2013 09:49 AM

May 08, 2013

del.icio.us

May 07, 2013

Karl Dubost

API, se poser de bonnes questions

Assemblage en bois 14 octobre 2006, Takao-san, Japon

Dans le travail, il leur accorde d’aller avec les meilleurs clients mais contrôle strictement toutes les autres relations.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

API, API, API. Il est impossible d'avoir une conversation à propos du Web sans en parler généreusement que ce soit entre développeurs, architectes de solutions, mais également marketing, business, etc. Le terme a pénétré un peu partout.

Comme tout sujet largement evoqué, il existe de nombreux écoles de pensée sur la manière de créer de une bonne API. Au sein même du Web, il existe plusieurs niveaux d'API. Le code lui-même et ses interactions entre ses différentes composantes (opaque pour ce qui est du Web mais permettant le Web) est constitué d'API. L'exposition de la communication entre le client et le serveur constitue une ou des APIs. Ainsi qu'au niveau du client lui-même, les APIs permettant de manipuler les données du document (partiellement opaques pour le Web).

Le marteau de Maslow

Christian a dit il y a quelques jours

Je ne comprends pas le choix systématique de JSON comme MediaType pour les APIs ; HTML5 me semble tellement plus simple.

Christian exprime là une différence d'écoles de pensée. Elle illustre peut-être aussi l'intérêt ou l'influence de sa conception des interactions sur le Web. Cela tient en partie à la loi de l'instrument ou le marteau de Maslow :

Je suppose qu'il est tentant, si le seul outil en votre possession est un marteau, de tout traiter comme s'il s'agissait d'un clou.

Nous avons tendance à utiliser notre bagage culturel (nos outils) pour résoudre les problèmes, enjeux, questions que nous croisons. Il est directement accessible, nous aide à démarrer très rapidement à résoudre le début du problème.

Bataille d'acronymes

JSON, HTML5, REST, SOAP, XML-RPC, HATEOAS, … Nous nous engageons dans des batailles d'acronymes sur la pertinence d'une école, d'un style, d'un format et en mélangeant souvent au passage les domaines d'applications. À se demander parfois, si cela nous permet d'éviter de résoudre le véritable enjeu. Voir les échanges d'ébats, les débats que nous avons avec David et Eric et quelques autres.

Et en effet, il est difficile de ne pas s'engager dans une bataille conceptuelle sur la bonne méthode à utiliser, mais finalement admettons que nos batailles sont bien futiles tant que nous nous ne concentrons pas sur la résolution d'un enjeu particulier.

Un enjeu à résoudre

Avant toutes discussions sur la pertinence d'un choix stylistique ou technologique, il est nécessaire de poser clairement quel est l'enjeu à résoudre. Il est tout à fait possible d'avoir plus d'un enjeu avec des priorités et des domaines d'applications très différents. Ce matin, en marchant pour aller boire un café au lait, je me disais que finalement ce qui manquait dans nos discussions est une liste de questions préliminaires. Si nous prenons le cas d'un service exposé sur le Web, il existe de nombreux questions intéressantes que l'on se pose rarement comme :

  • Le service : peut-il exister dans ses interactions sans utiliser le Web (HTTP) ?
  • Le service : doit/peut-il être unique (une seule entreprise offrant ce service) ?
  • Le service : est-il générique (plusieurs entreprises se partageant le marché) ?
  • Le service : doit-il interagir avec un unique logiciel client ?
  • Le service : doit-il interagir avec de nombreux logiciels clients créés indépendamment les uns des autres ?

Il y a sûrement de nombreuses autres questions. Mais répondre à ces questions déjà va vous permettre non seulement de comprendre un peu mieux l'écosystème de votre service, les technologies à explorer pour résoudre le problème, ainsi que les efforts nécessaires en termes de coopération et d'innovation.

Il pourrait être intéressant de développer les questions ci-dessus. Dites-le moi si vous êtes intéressés.

May 07, 2013 08:53 PM

May 06, 2013

Karl Dubost

Le jour de la mort des montagnes russes

Entrée d'un parc avec grand visage 23 avril 2002, Melbourne, Australie

Le temps va tout s’en va, mais qu’y a-t-il de plus radical que ce changement ? Rien n’avait pu le faire bien augurer de l’au-delà.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

homme avec casqueLe professeur Joon-Young a créé un appareil révolutionnaire d'immersion totale des expériences sensorielles. Sa première expérience fût de recréer les impressions sensorielles que nous avons lors d'un tour de montagnes russes. À l'aide des transmetteurs localisés près de la boite crânienne, l'appareil reproduit les sensations de la chute, du vent dans les cheveux, ainsi que les stimulations rétiniennes à la perfection. L'accélération du rythme cardiaque, les sentiments de peur et d'excitation se recomposent alors naturellement. Le prototype, pour l'instant encore un objet imposant, n'aura pas de difficulté à être miniaturisé et pour un prix modique. « Nous travaillons déjà avec une usine de Shenzhen pour produire l'exemplaire à quelques milliers d'exemplaires par jour. » nous a dit le professeur « C'est excitant ! L'entrée d'un parc est de quelques dizaines de dollars et il faut attendre bien souvent une heure ou deux entre chaque tour. Avec mon appareil, il sera possible pour quelques dollars de le faire de son salon mais aussi n'importe où et surtout nous avons prévu un module pour concevoir vous-même vos parcours. »

Le syndicat international des parcs d'attractions mondiaux a lancé depuis quelques semaines un groupe de pression afin de modifier auprès de l'ONU la législation internationale pour interdire le nouvel appareil du professeur Joon-Young. Ils avancent notamment qu'il est important que les visiteurs des parcs continuent de pouvoir sentir le vent dans les cheveux et la gravité de manière naturelle. Ils ont également lancé un mois de promotion à tarifs réduits pour toutes les montagnes russes. Ils essaient également en second recours de prévoir une taxe spécifique sur chaque appareil vendu versée à l'association de gestion des droits des parcs d'attractions mondiaux. C'est donc une affaire à suivre de très près, l'industrie des parcs d'attractions n'est pas en reste et comptent lancer une grande campagne d'information sur la réalité physique de la montagne russe afin de combattre « la perversion de la dématérialisation » selon les mots du président Mr Layssekur.

May 06, 2013 06:03 PM

May 05, 2013

Karl Dubost

Les carpes flottent

Mobile de carpes en papier 5 mai 2013, Montréal, Canada

Pour finir, la fête se déchaîna dans l’inextricable mêlée des pleurs, des rires et des cris de joie.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Ce moment de l'année, où nous ouvrons la boîte de carpes achetée dans un magasin de Sendagi. Faute de banderoles, nous avons un mobile pour koinobori. Les carpes flottent au dessus de mon plaisir.

May 05, 2013 10:48 PM

Petits bonheurs

Sandwich de smoked meat 4 mai 2013, Montréal, Canada

Aux cris des vendeurs : « Eventails ! Eventails ! » et « Dieux du bonheur ! Dieux du bonheur ! », il sentit un peu le printemps dans son cœur. Le premier jour de l’année exhalait paix et plénitude.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Sortir finalement les vélos, regonfler les pneus après les 6 mois. Mettre un grand morceau de tissus dans le sac et remplir une gourde d'eau. Se diriger vers le canal de Lachine et s'arrêter au magasin Les produits du Québec Smoked Meat Inc.. Commander deux sandwich à la viande fumée avec fromage et se rendre au bord du canal. Étaler le tissu et enlever ses chaussures. Voilà c'est le moment du plaisir, de la bouchée, un des meilleurs de Montréal. Une fois fini, faites une sieste. Et puis un peu plus tard, se rendre au marché Atwater et acheter des légumes frais. Faire une salade le soir avec des concombres, tomates, avocats, coriandre et une sauce au vinaigre de cidre et échalotes.

Variations possibles et sans contraintes.

Bol de salade 4 mai 2013, Montréal, Canada

May 05, 2013 10:03 PM

Le souvenir éclos

Fleur de magnolias la nuit 1er mai 2013, Montréal, Canada

Jamais je n’oublierai cette nuit.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Le magnolia dans ses cheveux sombres, c'est le souvenir que je souhaite garder.

May 05, 2013 09:41 PM

May 04, 2013

Christian Fauré

Sur le livre « Pharmacologie du Front National » de Bernard Stiegler

Pour qualifier le dernier livre de Bernard Stiegler, “Pharmacologie du Front National”, peut-être peut on commencer par citer les premiers mots de la préface :

“Cet ouvrage est un instrument. Il a été conçu comme tel – et en vue de mener des luttes. Comme tout instrument, il faut le pratiquer. Et comme tout instrument, il devrait instruire ceux qui le pratiquent : à travers leurs pratiques, l’instrument tend à instruire un aspect du monde que ses praticiens ont en commun et surtout font en commun.”

Le texte sera difficile et exigeant pour ceux qui ne connaissent pas déjà les travaux de Stiegler : il ressemble à une pelote de liens qui renvoient vers d’autres textes, livres, articles, conférences, sans compter vers le vocabulaire d’Ars Industrialis, rédigé par Victor Petit, proposé en fin d’ouvrage. Ce qui donne l’impression d’un texte décentré, en perpétuel renvoi : un hyper-texte sans hypertexte. L’ouvrage aurait toute sa place sur le web plutôt que dans l’édition papier traditionnelle.

Cette forme d’inadéquation du texte à son support génère de nombreuses redites – mais à mon sens toujours judicieuses et ne produisant pas de sensation de redondance inutile – qui donnent à l’ouvrage un style psalmodique et une dimension liturgique. Si le livre est un instrument, il l’est au sens d’un manuel de catéchisme des enjeux économiques et politiques au XXI° siècle.

Je suis persuadé que certains seront agacés par le ton « donneur de leçon », surtout s’ils n’aiment pas qu’on leur donne des leçons : mais ils y en a, dont je fais partie, qui apprécient qu’on leur donne des leçons, qui aiment bien apprendre sans qu’on ne les prenne pour des crétins.

*

Dans une perspective narrative, l’histoire est la suivante : les sympathisants du Front National sont malades et il faut les soigner. Si on le peut, c’est d’abord parce que nous sommes tous, à des degrés divers, victimes de ce malaise. Ceux qui condamnent les sympathisants du Front National et qui les stigmatisent, jusqu’à en faire un fond de commerce, sont le vrai problème. On retrouve ici un thème abordé il y a une dizaine d’années dans “Aimer, s’aimer, nous aimer” qui s’ouvrait par ces mots qui en ont stupéfié plus d’un :

“Je dédie cette conférence aux électeurs du Front National dont je me sens proche. Je me sens proche d’eux parce que ce sont des gens qui souffrent et qui me font souffrir.”

Dès lors, comment “prendre soin” des électeurs et des sympathisants du Front National ? En bon pharmacologue, il faut identifier les symptômes, faire des diagnostics et proposer enfin des thérapeutiques. Précisément ce que la gauche – et notamment les intellectuels et les penseurs de gauche – a été incapable de penser et de faire depuis 30 ans.

Ce livre est donc une charge sans concession contre la misère de la pensée dite « de gauche », celle du post-structuralisme depuis Foucault jusqu’à Rancière et Badiou en passant par Althusser. Cette gauche qui a été incapable de repenser l’économie politique, prisonnière d’une certaine conception de l’idéologie, c’est à dire, selon Stiegler, de la bêtise.

*

Des bêtises, nous en faisons tous, c’est d’ailleurs comme çà qu’on apprend, en “faisant des bêtises”. Mais lorsque la bêtise devient systématique et systémique, lorsque l’on devient incapable d’apprendre de ses bêtises, on cultive la bêtise pour elle-même comme sait si bien le faire Badiou (répétition sans différence).

L’histoire de la philosophie est d’ailleurs en elle-même une histoire de la bêtise, comme le rappelle régulièrement Stiegler avec la figure d’Épiméthée, celui qui fait la gaffe dans sa distribution des qualités aux animaux en oubliant d’en garder une pour les hommes. De cette bêtise qui nous fait prendre des vessie pour des lanternes, notamment en inversant les liens de causalité : c’est à dire en prenant les effets pour les causes, notamment en croyant que les idées sont premières alors qu’elles sont toujours conditionnées par les supports matériels (les rétentions tertiaires de Stiegler) qui en permettent leur production et leur diffusion ; supports matériels qui font précisément l’objet premier de l’économie, surtout avec les industries culturelles comme industries de captation de l’attention.

Alors comment, et pourquoi, le post-structuralisme et les penseurs qui ont fait leurs classes dans la mouvance de la philosophie marxienne (qui mettait en avant l’économie, les conditions de production et la technique) ont-ils pu se laisser berner par l’idéologie, c’est à dire par la bêtise ? Pourquoi ont-ils pu se comporter comme la blanche colombe de Kant qui s’imagine qu’elle volerait plus vite si elle n’avait pas la résistance de l’air ? Comment ont-ils pu ainsi négliger et mécomprendre ce qui est dit par Marx dans l’Idéologie allemande ? Stiegler insiste :

“Dans L’idéologie allemande, c’est l’idéalisme comme dénégation des conditions techniques et organologiques de production des idées qui donne son contenu au concept d’idéologie” p. 189

Se méprenant sur le statut de l’idéologie, ces penseurs se sont vautrés dans la marre à idéologie devenant oublieux et inattentionnés, y compris et surtout à l’égard des sympathisants du Front National qu’il est si facile de dénoncer et stigmatiser sans même imaginer qu’ils sont en souffrance.

C’est ce qui a conduit Badiou a écrire  De quoi Sarkozy est-il le nom ?, ouvrage au titre malicieux qui connaîtra un vif succès d’édition mais dont le contenu est consternant tant il montre à quel point Badiou n’a rien compris à Sarkozy en le comparant à Pétain, alors que c’est à Bush Junior et son côté va-t-en-guerre et néolibéral qu’il aurait fallu le rapprocher : Pétain, lui, était un lâche, pas Sarkozy.

Bref, tout est fait de sorte à ce que, systématiquement, ces “penseurs” en reviennent sans cesse à la seconde guerre mondiale, en affirmant que “tout se répète” (surtout eux). Prisonniers de leur propre bêtise, ils n’abordent la question actuelle du Front National (en ce souvenant que JM Le Pen se présentait dans les années 80 comme le Reagan français), et donc des maux dont nous souffrons tous plus moins gravement, que comme résurgence des démons, soit du nazisme soit du stalinisme, sans même se rendre compte que, depuis la révolution conservatrice de Thatcher et Reagan du début des années 1980, la situation économique et politique a radicalement changé la donne.

Toujours hantés par les idéologies des états totalitaires du milieu de la première moitié du XX° siècle, ces penseurs de gauche ont paradoxalement totalement cautionné l’instauration du néolibéralisme et son slogan : “l’état n’est pas la solution c’est le problème”. N’imaginant même pas qu’il puisse y avoir une différence entre État et Puissance publique (la faute à Foucault qui n’entrevoyait le pouvoir que comme l’exercice de l’Etat, mais il est vrai qu’il est parti trop tôt pour ajuster ses thèses).

Ce sont ainsi ceux qui aujourd’hui aiment à se plaindre de la financiarisation de l’économie et de ses dérives spéculatives qui ont totalement approuvé la liquidation de la puissance publique et n’ont rien vu venir de la montée en puissance du Marketing Stratégique à présent seul réel pouvoir (le pouvoir politique n’est aujourd’hui que de facade).

Ce sont ces anachronismes et autres inversions de causalité qui ont leurs racines dans la bêtise – toujours bien incarnée dans l’intelligentsia de gauche –  que Stiegler analyse avec fougue et énergie dans Pharmacologie du Front National.

Les deux derniers chapitres proposent une véritable feuille de route des transformations économiques, industrielles et éducationnelles nécessaires, et à initier de toute urgence, afin que l’inévitable – Marine Le Pen au gouvernement en 2017 – soit évité.

François Hollande porte une très lourde responsabilité ; lui, le tard venu au pouvoir politique, qui doit faire avec 30 années d’incurie politique et intellectuelle.

Signaler sur Twitter

by Christian at May 04, 2013 12:59 PM

May 03, 2013

Christian Fauré

Traitement des causes ou exploitation des effets ?

C’est un sentiment que j’ai très fréquemment dans le conseil et les services informatiques : bien qu’on ne fasse que parler de “solutions” à des problèmes, la plupart du temps cela se manifeste par une exploitation des effets de ces problèmes, plus qu’une résolution.

Un marché ne résout rien, ce n’est pas son intérêt, il s’attache à exploiter – le plus longtemps possible – un problème.

Prenons un autre sujet, par exemple les procédures administratives, et peut-être plus précisément les règles fiscales. Vous pouvez juger qu’elles sont trop complexes ou absconses. Mais il se trouve que c’est cette complexité qui justifie que des sociétés puissent en faire un marché (par exemple en faisant du conseil en optimisation fiscale) : si c’était soit simple soit automatique, il n’y aurait pas de marché basé sur les défauts et la complexité du système fiscal.

Encore un fois : la création d’un marché ne résout pas le problème du système incriminé (contrairement à ce que peuvent affirmer certains discours publicitaires) : il l’exploite. S’il le résolvait il n’aurait plus lieu d’être, il n’y aurait plus de marché.

*

Un syndicaliste qui passe son temps à dénoncer le taylorisme et à se battre contre ce système en vient à se constituer par rapport à cette opposition qui, au final, le structure et le fait retenir debout. Supprimez le système que dénonce le syndicaliste et il tombera. Pour reprendre le mot de Guitry, il était contre le système : “tout contre”.

Ce genre de comportement est très marqué dans le milieu militant. Le militantisme trouve ses repères et son orientation dans des figures auxquelles il s’oppose ( en politique les gens de gauche passent leur temps à parler des gens de droite, et inversement ). En se construisant dans l’opposition à quelque chose, on épouse ce quelque chose plus qu’on ne l’imagine : on ne peut plus s’en passer. On ressasse jusqu’à faire figure d’ancien combattant.

Je prends à présent un exemple volontairement provocateur : La Quadrature du Net est une association militante qui promeut un internet libre. Mais la majorité des propos tenus sont des oppositions à des groupes d’intérêts ou des positions qui sont contraires aux thèses que défend l’association. Ils ont épousé leurs oppositions et sont condamnés à n’exister que comme opposants (on dit souvent « ils sont dans leur rôle »), c’est à dire que ce sont les moins à même de supprimer les causes du problème puisqu’ils ne doivent leur existence et leur reconnaissance que dans leur combat sans fin contre les effets. Paradoxalement, on peut donc présumer que la Quadrature du Net n’est certainement pas la meilleure approche pour apporter des solutions à ce contre quoi ils s’opposent ou veulent trouver des solutions (c’est certainement ce qui fait qu’ils sont absents du Conseil National du Numérique, là où, pourtant, on les attendait).

Tous ces exemples, quoi que disparates, ressemblent au comportement d’un médecin qui ne chercherait plus à guérir son patient mais à le maintenir dans la maladie, sans les effets (les désagréments) de la maladie. C’est pour cela que les maladies chroniques qui nécessitent en permanence des médicaments sont le graal de l’industrie pharmaceutique : ce sont des clients “à vie”.

*

Tout individu et toute organisation qui oeuvrent à dépasser une contrainte ou un défaut, génèrent une forme d’adhérence à l’objet dont ils proposent une solution et dont, en apparence, ils s’opposent. La solution serait de supprimer l’origine du problème, mais comme l’individu veut perdurer il n’en traite que les effets, se gardant bien de supprimer la racine du problème.

S’opposer, c’est épouser. C’est avoir abordé la question soit en combattant (champ politique) soit en solutionnant (champ économique) mais, dans tous les cas, en ayant confondu les effets et les causes.

Il y a toujours une question de causalité qui est en jeu et c’est précisément cette confusion et cette inversion des causes et des effets qui produit des idéologies. Or les idéologies ne réalisent que le contraire de ce qu’elles annoncent.

Aujourd’hui on veut – et on va – changer ; mais comment faire des transitions avec tout un système politique et économique qui repose sur des rentes de situations nées de l’exploitation des effets dont nous souffrons et voulons nous défaire ?

Signaler sur Twitter

by Christian at May 03, 2013 01:53 PM

May 02, 2013

Karl Dubost

Le marché de la catastrophe

Signe d'urgence en bois 6 janvier 2013, Tokyo, Japon

A droite, à l’ombre des saules et des micocouliers, subsistait une misérable hutte où, dit-on, vécut la courtisane d’Eguchi qu’évoque Saigyô dans son poème « L’abri éphémère ».

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Voici un peu plus de deux ans que le tremblement de terre et le raz de marée ont détruit une partie du Japon. Dans certains journaux du Japon, il existe encore des sections consacrées à l'événement. Lors de ma dernière visite au Japon au début de l'année, j'ai été surpris par le magasin Tokyu Hands qui avait créé une section complètement dédiée aux catastrophes à venir.

La population japonaise est formée aux tremblements de terre. Les enfants ont des exercices réguliers dans les écoles. Il existe des lieux d'évacuation d'urgence et les cartes dans les administrations. Il existe des kits de première urgence disponible dans toutes les maisons. Les maisons neuves sont construites aux normes anti-sismiques et même parfois démolies quand elles ne le sont pas. Cependant, la section du Tokyu Hands de Shinjuku était bien différente, mettant en avant bien plus qu'à l'ordinaire la notion d'être prêt pour les catastrophes à venir.

objets dans un magasin 6 janvier 2013, Tokyo, Japon

Des valises étanches, des abris d'urgence pour les tsunamis, comme cette boule rose—Je me demande ce qui se passe quand on se retrouve au milieu de l'océan dans sa boule rose. Même les réchauds de camping et les panneaux solaires ont été sémantisés dans une optique de l'urgence.

réchaud à gaz 6 janvier 2013, Tokyo, Japon

Tout ce qui était objet de loisirs, du plaisir de découvrir la nature et de partir ailleurs, devient l'objet de la crainte de la nature, d'être prêt au cas où… sans bien sûr savoir quand ce cas arrivera. Je ne peux m'empêcher qu'il y a un enjeu légèrement cynique de la part des études de marché où il est surement plus facile de vendre des objets anodins pour une future catastrophe plutôt que pour aller s'extasier sur les chemins de forêt. La possible catastrophe touchant plus de monde et ne donnant que peu de choix.

May 02, 2013 08:11 PM

May 01, 2013

Karl Dubost

Le chant de la soupe miso

Ingrédients dans des assiettes 29 avril 2013, Montréal, Canada

L’eau du thé frémissait dans la bouilloire, Myôju frotta bien les bols et dit : « Je ne sais s’il y aura quelque chose à votre goût. »

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

« Tu es dorénavant en charge de la soupe miso ! » De nos gestes coulent les habitudes à venir. Elle avait aimé la semaine passée, le goût de la courge dans la soupe. De ce succès me voilà nominé maître ès soupe miso. De nouveau, je me prépare à préparer la soupe. Je choisis les ingrédients et je procède. Ce soir, ce sera okura. Il faut d'abord laisser suer les morceaux de Tofu frit dans l'eau bouillante pendant quelques secondes pour enlever l'huile. Je jette l'eau et prends de l'eau fraîche pour la porter de nouveau à ébulition. J'ajoute le dashi et l'oignon coupé. Et puis finalement à la fin j'ajoute le okura coupé en tranche, peu de temps. Le feu coupé, je prends le bouillon et juste le bouillon pour diluer le miso dans les bols. Finalement, j'ajoute le okura et l'oignon dans les bols ainsi que le tofu frit coupé en deux.

C'est maintenant la soupe qui me possède, et déjà je m'interroge sur la prochaine variation.

soupe miso 29 avril 2013, Montréal, Canada

May 01, 2013 07:02 PM

Les notes de chapitre dans un ePub

Ombres d'herbes 22 avril 2013, Mountain View, États-Unis

Nul besoin d’en écrire trop. Ceux qui savent, savent de quoi.

Ihara Saikaku, L’homme qui ne vécut que pour aimer.

Je suis en cours de lecture de L’homme qui ne vécut que pour aimer. Le traducteur a amplement documenté sa traduction avec des notes en fin de chapitres. L'objet livre permet un accès dans le volume en plus de celui de la linéarité du texte. C'est essentiel dans le cas des notes en fin de chapitres. Typiquement le lecteur placera un doit à la fin du chapitre ou bien un marque page spécifique afin de pouvoir faire des aller-retours rapides entre le texte et les notes. Il y a une bi-directionnalité de l'action.

Dans le cas d'un texte au format numérique et des outils associés comme une liseuse, cette métaphore d'interaction ne fonctionne plus. En effet, les notes numérotées apparaissent dans le texte afin de renvoyer à la référence numérotée en fin de chapitre. Mais il est impossible d'y accéder sans faire défiler toutes les pages du chapitre en question. Il serait envisageable de « sauter » à la page en question lorsque l'on connaît le numéro précis. Il faudra l'avoir découvrir par avant.

schéma Le texte et les notes en fin de chapitre

Dans le fichier ePub, le markup est présent et organisé de la façon suivante :

<p class="texte">Un jour qu’il s’était rendu chez
une relation aux environs du mont Kurabu
<span class="appel-note">
   <a id="footnote-225-142-backlink"
      class="footnote-link"
      href="#footnote-225-142">142</a>
</span>, il effraya les oiseaux

[… texte …]

<div class="footnote">
   <p class="notes">
       <a id="footnote-225-149"
          class="footnote-anchor"
          href="#footnote-225-149-backlink">149</a>
          Certainement Washu-Nakazawa, sis en Yamato et mentionné
          en IV, 3.</p>
</div>

La référence à la note est bien présente. Le lien de retour également. La liseuse Kobo Touch ne prend pas avantage de ce markup afin de rendre la lecture plus fluide. Existe-t-il un markup normalisé pour les notes de texte ?

La spécification ePub3

La spécification ePub3 pour le contenu définit un attribut type permettant d'élargir la sémantique des éléments. Une phrase surprenante de la spécification est The epub:type attribute is intended to be functionally equivalent to the W3C Role Attribute [Role], but with restrictions as specified in Vocabulary Association. Il est assez difficile de comprendre pourquoi ne pas avoir repris l'attribut role plutôt que d'inventer un nouvel attribut. La spécification nous dit ensuite que la valeur de type est une liste de property séparés par des espaces, mais lorsque l'on clique sur le mot property, nous sommes renvoyés sur la définition de l'attribute property.

Dans la section suivante sur les associations de vocabulaire, nous pouvons remarquer un exemple de markup.

<html … xmlns:epub="http://www.idpf.org/2007/ops">
       …
       <p> … <a epub:type="noteref" href="#n1">1</a> … </p>
       …
       <aside epub:type="footnote" id="n1">
           …
       </aside>
       …
   </html>

La légende de l'exemple nous dit que le vocabulaire est défini dans un autre document : EPUB 3 Structural Semantics Vocabulary. La valeur noteref est définie comme une référence vers une note, apparaissant typiquement avec symbole en exposant dans le corps du texte. La valeur de footnote est définie comme une note apparaissant au bas de la page. Dans la même section sont définies note, rearnote, footnotes (pluriel), rearnotes (pluriel). RhahahhahhhhaaaaaaRHHHHAAAAA. Pourquoi tant de haine ? Je m'égare. Nous avons donc là des propriétés avec une sémantique très similaire et qui signifient à peu près la même chose, mais qui sont identifiées à cause de leur héritage du monde du livre papier. Je pense… ePub4, version simplifiée de Epub3 ?

Mon désir de lecteur pour les annotations

Dans la lecture des œuvres au format numérique, je veux pouvoir avoir les notes en contexte. Structurellement qu'elle soit à la fin du fichier HTML ou en son cœur, ce n'est pas très important. (Je pense que les notes in-situ font beaucoup plus de sens pour l'auteur et la gestion de ses notes sur le long terme).

schéma Le texte et les notes au cœur du texte

En revanche en tant que lecteur, je veux que les notes soient incluses dans le flot du texte. Que ce soit en pop-up ou au sein du texte avec une fonctionnalité pour les cacher ou les montrer. J'ose à peine imaginer comment Pale Fire est illisible sur une liseuse.

May 01, 2013 06:25 PM

Christian Fauré

Votre travail est-il « scalable » ?

Cal signed my fish book

Dans son Cygne Noir, Nassim Nicholas Taleb se souvient du conseil que lui donna un étudiant, lors de ses études supérieures à Wharton : de “choisir une activité professionnelle “scalable” (ou sans plafonnement visible)”.

“Scalable” est un terme décidément étrange et plus que jamais d’actualité à l’heure du numérique en réseau. « Scalable » signifie “qui peut passer à de très grandes échelles” mais aussi “qui peut bénéficier d’un effet de levier important”.

L’eldorado : un effort minimal pour un bénéfice maximal, et pas de limites structurelles sur de très grandes échelles. Plus on gagne : plus on gagne encore plus. Un tourbillon ascendant qui nous enivre tant il nous fait tourner la tête.

Ceux d’entre nous qui ont des métiers non “scalables” sont ceux qui sont payés, directement ou indirectement, de leur temps : ils ne peuvent pas passer à des échelles supérieures car leur temps – plus précisément celui qu’ils consacrent à leur activité professionnelle – est limité.

Un très bon chirurgien, boulanger, consultant, ouvrier, enseignant, etc., peuvent certes très bien gagner leur vie, mais ils ne peuvent pas  bénéficier des logiques du passage à l’échelle, de la “scalabilité” ; ils doivent donner de leur temps et être présent chaque fois qu’ils veulent facturer leur travail ou le fruit de leur travail.

A l’inverse, une romancière comme J.K Rowling a un métier qui peut “scaler”, de même que ceux qui font du cinéma, les traders, et d’une manière générale ceux qui sont dans le design et la conception. Les rentrées d’argent sont dé-corrélées du temps de travail : que l’on vende un livre ou des millions de livres, la quantité de travail reste la même.

On sait également que les métiers “scalables” sont ceux où il y a une disparité des rémunérations les plus importantes : les 0,1 % qui ont du succès ne masquent pas la misère des 99,9 % autres.

Ces métiers “scalables” le sont parce qu’ils s’inscrivent dans le processus de grammatisation, processus qui discrétise et découpe le temps (celui de la parole, des gestes et des comportements) pour le mettre en réserve dans des écritures (littérales, analogiques, numériques). Tous les métiers « scalables » sont des métiers qui reposent sur des techniques d’écritures. Ce sont des jeux d’écritures :

  • jeux d’écritures comptables et financiers ;

  • jeux d’écritures romanesques ;

  • Jeux d’écritures cinématographiques ;

  • Jeux d’écritures audiograhiques ;

  • etc.

L’industrie est née avec l’automatisation des écritures, quand la technique est devenue technologie. “Çà tourne tout seul” veut dire “çà écrit tout seul”.

Les pratiques industrielles sont des techniques d’écriture automatiques qui peuvent passer  à l’échelle, et nous sommes toujours plus nombreux à être employés pour ce secteur, mais sans pour autant avoir des métiers « scalables« . Pour la bonne raison que cette industrie qui tend à automatiser de plus en plus les écritures a encore besoin de travailleurs qui produisent de manière répétitive soit ces systèmes technologiques eux-mêmes, soit ce qui ne peut pas – encore – l’être.

*

C’est aujourd’hui la fête du travail : ré-inventons le travail à l’heure des techniques d’écriture automatiques et oublions pour un jour ceux qui nous rabâchent la tête à longueur d’année avec leurs discours désuets sur l’emploi.

Signaler sur Twitter

by Christian at May 01, 2013 01:59 PM

Karl Dubost

Le désir du travail

main sur le front 27 avril 2013, Montréal, Canada

À tout âge de la vie, il n’est rien – rite, foi, deuil, maladie, mariage, paternité, pauvreté, richesse – qui ne soit ramené à la chose obsédante, à l’envie de la connaître en soi, et sans considération majeure d’éthique ou d’esthétique.

Gérard Siary (Ihara Saikaku), Introduction (L’homme qui ne vécut que pour aimer).

Depuis janvier 2013, je cherche à décrocher (comme de nombreuses autres personnes) un nouveau job. Je n'ai pas encore trouvé.

Quelques entretiens déjà passés, le dernier en date était avec Mozilla pour le poste de Mozilla Web Compatibility Engineer (un rôle équivalent à la mission de l'équipe Open the Web à Opera). Je crois savoir la/les personnes recrutées et je pense que j'aurais choisi les mêmes. Mozilla fait partie de ces entreprises d'une certaine éthique que j'apprécie.

La dynamique lors des entretiens est intéressante car en fonction des différentes annonces pour différentes organisations ou entreprises, j'ai obtenu des commentaires différents et parfois contradictoires : « pas assez technique, » « trop technique, » « trop évangéliste, » « trop Open Web, » « sympathique, » etc. Une recherche de job est toujours angoissante. Et pourtant, elle ne devrait pas tant l'être. Il s'agit de faire correspondre deux affinités : celles des besoins d'une entreprise et celles des besoins, désirs d'une personne.

Freelance

Plusieurs fois, les amis m'ont demandé, pourquoi ne pas me mettre à mon compte (freelance). J'aime beaucoup travailler pour les autres. Être freelance est un double job. Pour pouvoir assurer les contrats, il faut tout d'abord partir à la chasse de ces contrats et gérer la partie administrative de ces contrats. Cette partie plus administrative et hors-travail m'intéresse moins. Me mettre à mon compte, c'est la garantie pour moi de n'avoir pratiquement aucun revenu.

Ouverture

L'ouverture dans le dialogue est un art difficile. Comme le dit l'adage « Ma liberté me coûtera tout. » Je ne me suis jamais vraiment senti contraint dans mes paroles. Je veux croire et faire confiance à mon interlocuteur, que mes mots ne soient pas perçus comme une critique sévère mais comme une mise en contexte. J'exprime une pensée affirmée, mais ouverte au débat. Il faut que j'apprenne à « mettre de l'eau dans mon calva. » (sacrilège normand)

Manager

Au nombre de mes défauts, ne pas accepter que je peux encadrer une équipe. J'ai une sérieuse tendance à fuir les annonces de jobs de manager. Je suis parfois perçu trop vieux (âge) et trop junior pour des jobs de développeur pur. Cornélien. Ma répulsion du job de manager tient sûrement en partie à conception des pouvoirs et des attentes face à ces pouvoirs. Quand je suis dans une position hiérarchique, le changement de comportement des individus me coûte énormément. J'aime permettre aux gens de comprendre, de s'épanouir, de s'extasier. J'aime pouvoir apprendre avec eux et leur donner ou construire ensemble les outils d'organisations, les pistes de recherche pour qu'ils puissent réaliser leur travail convenablement. Mais la docilité ou le respect que les autres attachent parfois à la position hiérarchique me rend triste. Il faut que j'apprenne à « mettre de l'eau dans mon calva. »

Le futur ?

Je n'ai pas de pistes pour l'instant. Je dois annuler ma présence à SudWeb 2013, ce qui me peine beaucoup, car je dois me concentrer sur le fait de trouver un emploi. Je recherche toujours. Mozilla fait partie des endroits où j'aimerais travailler tout en étant critique, mais n'est pas le seul endroit où il est possible de s'épanouir. Il me faut juste trouver le bon endroit et surtout la bonne équipe.

Petit rappel : Je suis prêt à me déplacer. Je peux légalement travailler au Canada, en France et au Japon. Je peux travailler à distance aussi. Nous aimerions quitter Montréal pour le Japon ou la France, mais c'est négociable. Pour le reste.

May 01, 2013 10:19 AM

April 30, 2013

Karl Dubost

Un petit coin d'Asie à Montréal

livre ouvert 29 avril 2013, Montréal, Canada

Le vent souffle, mais la montagne ne bouge pas.

, Japanese proverbs and proverbial phrases.

Elle m'a dit : « Tu dois prendre le bus pour aller sur Côte des Neiges. Une fois là bas, tu entres au 3744, rue Jean-Brillant. L'ascenseur vers le quatrième étage. Quand tu sors de l'ascenseur, il y a une porte avec la notice Centre d'études de l'Asie de l'Est. » J'ai alors suivi les instructions et je me suis rendu au quatrième étage, un peu intimidé par les lieux que l'on découvre, la peur d'être inopportun.

J'ouvre la porte et je débouche dans un étroit couloir avec des portes de salles et bureaux sur la gauche et un long mur sur la droite. Les épaules rentrées, le souffle presque coupé, je me fais discret. Sur le mur à droite, une exposition magnifique de photographies de la Chine, une dizaine seulement, des scènes de rue. J'ai oublié de prendre le nom de l'artiste.

J'entends des personnes parlées chinois, du mandarin par la porte ouverte d'une salle de classe. Au fond à droite du couloir, il y a la destination qu'elle m'avait recommandée de visiter : Le Centre de documentation Robert-Garry. Une bibliothèque dédiée avec de nombreux ouvrages en trois sections principales : Chine, Japon et Corée. Quand j'entre, j'aperçois une machine de typographie chinoise. Je m'évade entre les falaises du Japon. La littérature, la photographie, l'architecture, les traditions artisinales, je pourrais rester quelques jours dans ce lieu à lire, partager avec les autres, mais cela ne me donnerait toujours pas un job.

Machine de composition typographique 29 avril 2013, Montréal, Canada

Au moment de partir du lieu, une femme m'interpelle :

— Vous êtes souvent au café […]

— Oui ?!

— Je vous vois de temps en temps. Êtes-vous étudiant en études asiatiques.

— Non, juste un curieux et amoureux des cultures d'Asie.

— Vous savez, c'est un peu compliqué mais même sans être étudiant vous pourriez emprunter les livres par accord de prêts entre les bibliothèques.

(Je souris et hôche la tête. Elle continue)

— C'est vraiment dommage. Certains de ces livres ne sont pas empruntés pendant des dizaines d'années. Mais maintenant… il faut dire… tout est accessible de manière électronique.

— Oui et le lieu est difficile à trouver. Vous devriez créer un blog en plongeant dans les fiches des livres les moins empruntés afin d'en parler en ligne.

Nous échangeons quelques mots de plus. Et puis je repars la tête plein de rêves. Il y a déjà deux sites pour les études japonaises et un pour les études chinoises, ainsi qu'un portail de veille sur le domaine. Allez au moins voir l'exposition dans le couloir et les deux machines de composition typographique.

Étagères de livres 29 avril 2013, Montréal, Canada

April 30, 2013 11:54 AM

April 29, 2013

Christian Fauré

Shots that changed my life (40)

Drive (USA, 2011) réalisé par Nicolas Winding Refn.

Il s’agit du générique du film, un clip vidéo sur la chanson Nightcall de Kavinsky.

drive

Signaler sur Twitter

by Christian at April 29, 2013 12:55 PM

del.icio.us

April 27, 2013

del.icio.us

April 25, 2013

Eric van der Vlist

Ittoqqortoormiit

Ittoqqortoormiit, Juillet 2058

La Gazette d’Ittoqqortoormiit : Professeur Sean Lafontaine, vous êtes responsable du laboratoire de technicologie de l’université d’Ittoqqortoormiit. Pouvez vous nous expliquer en quoi consiste votre activité et quelles sont ses particularités ?

Sean Lafontaine : La technicologie est la branche de l’archéologie consacrée à la civilisation technicienne. Bien que cette civilisation soit beaucoup plus récente que celles qui sont étudiées par les autres branches de l’archéologie les matériaux disponibles posent de tels problèmes d’interprétation qu’une véritable approche scientifique de type archéologique est nécessaire.

LGI : Quel type de problèmes ?

SL : À la fin du siècle dernier cette civilisation a amorcé un processus de « dématérialisation » de sa production intellectuelle. Cette dématérialisation se traduisait par un stockage dit « électronique » des documents (écrits, photos, sons, films, …). Les technologies employées pour ce stockage étaient variées mais dans tous les cas il était nécessaire de disposer de compétences technologiques et d’énergie électrique pour accéder aux informations « dématérialisées ».

LGI : Autant dire en effet que l’accès à ces ressources est désormais réservé à des spécialistes ! Comment faites vous pour résoudre ces problèmes ?

SL : Notre laboratoire a l’autorisation de produire, de manière strictement contrôlée bien entendu, l’énergie électrique dont il a besoin pour poursuivre ses recherches. En ce qui concerne les connaissances technologiques, c’est une discipline à part entière, au même titre que la sigillographie ou l’épigraphie pour prendre deux exemples plus connus. En technicologie nous avons la chance de pouvoir nous appuyer sur des témoins vivants ayant utilisé ces technologies. Ces survivants sont peu nombreux mais leurs témoignages ont été précieux pour établir les bases de notre discipline.

LGI : Parlez nous de cette mystérieuse boîte noire découverte le mois dernier…

SL : Nous avons découvert une petite boîte parallélépipédique, de 101 mm de largeur, 115 mm de longueur et 27 mm d’épaisseur, pesant moins de 400g dans une ruine située en zone rurale au nord ouest de la diagonale sèche. Cette boîte métallique portait des signes suggérant une utilisation de type « dématérialisation ».

LGI : Pouvez vous préciser quels sont ces signes pour que nos lecteurs puissent vous alerter s’ils trouvaient des objets de ce type ?

SL : Les zones que nous habitons maintenant étaient quasiment désertes avant le changement climatique et il est peu probable d’y trouver de tels objets, mais il peut tout de même être utile que vos lecteurs sachent reconnaître ces objets… Leur formes et leur dimensions sont très variées et la manière la plus fiable de les identifier est la présence de « connecteurs » . Les connecteurs sont de petits trous souvent rectangles ou ronds et dans lesquels on distingue parfois des éléments en cuivre.

LGI : Merci professeur. Je peux maintenant vous poser la question qui me brûle les lèvres… Cette boîte noire livrera t-elle ses secrets ?

SL : Oui, et ils sont fabuleux ! Hier notre équipe a enfin réussi à la faire parler. Il nous faudra plusieurs mois pour exploiter les documents qui nous sont dévoilés. Nous avons déjà identifié plus de 100 000 lettres électroniques, 50 000 photos, plusieurs heures de films mais ce n’est qu’une infime partie du contenu de la boîte et il y a beaucoup documents dont nous ne comprenons pas encore la nature.

LGI : Autant de documents dans un si faible volume !

SL : Oui, nous estimons que l’on pouvait stocker plus de mille milliards de caractères dans cette boîte.

LGI : Les prouesses techniques de cette civilisation sont vraiment surprenantes, quel dommage qu’elle n’ai pas su maîtriser les utilisations de ses technologies !

SL : L’historien que je suis se garde bien de porter un jugement de valeur sur l’objet de ses recherches, mais je dois avouer que je suis effectivement souvent surpris par les performances des objets que j’étudie.

LGI : Pour obtenir de telles prouesses, cette boîte noire devait produire beaucoup de CO2 !

SL : Pas de manière directe, non. Nos mesures montrent qu’elle consomme moins de 10W, ce qui représente, même avec un mode de production d’électricité à forte émission en CO2, moins de 250 g de CO2 par jour (quatre fois moins que la respiration humaine). Par contre pour être utile cette boîte a besoin d’être connectée à un ensemble d’équipements (pour visualiser les informations, les échanger avec d’autres machines, …). Si l’on considère l’ensemble de ces équipements, la production de CO2 est considérable.

LGI : Sait on à quoi servait cette boîte noire ?

SL : Nous pensons qu’elle servait d’archive. Les données matérialisées devaient être dupliquées et entreposées dans plusieurs équipements pour survivre à la destruction de l’un d’entre eux.

LGI : Dans ce cas, c’est un peu comme les livres dont la pérennité est assurée par la dissémination ! Que faisait cette boîte dans une zone rurale ?

SL : Nous pensons que son propriétaire avait deux résidences, une en ville et une à la campagne et qu’il avait des archives dans chacune de ses résidences.

LGI : Malin… Mais vous avez donc pu identifier son propriétaire ?

SL : Il s’appelait Éric van der Vlist et nous cherchons à cerner ses habitudes et sa personnalité.

LGI : Vous avez donc suffisamment d’informations pour cela ?

SL : Oui, nous avons retrouvé beaucoup de messages dont certains sont très personnels ainsi que des photos.

LGI : Quel était son métier ?

SL : Il travaillait dans le domaine de la dématérialisation de l’information. Les machines avaient pris une telle importance que les documents étaient écrits de manière à être compréhensibles par les machines avant de l’être par l’homme ce qui complique d’ailleurs notablement leur compréhension. Pour cela il existait plusieurs vocabulaires concurrents. Eric van der Vlist était spécialiste d’un de ces vocabulaires appelé XML. Son activité professionnelle principale était de conseiller des entreprises dans l’utilisation de ce vocabulaire. C’était un expert reconnu et il se déplaçait en avion pour rencontrer ses pairs lors de grandes réunions appelées conférences.

LGI : En avion ? Pour un motif aussi futile ? Il n’avait donc aucune conscience des enjeux environnementaux ?

SL : Effectivement, il faisait chaque année un voyage à Montréal (1400 kg de CO2) et un à Prague (300 kg de CO2) mais c’était une pratique courante à l’époque et ces réunions regroupaient des centaines de personnes. Pour en revenir à votre question, ce qui rend notre découverte particulièrement intéressante, c’est que contrairement à ce que vous pouvez penser, Eric avait un niveau de conscience des enjeux environnementaux plutôt élevé par rapport à ses contemporains.

LGI: Ce niveau de conscience ne le rend il pas d’autant plus coupable ?

SL : Mon activité est une activité d’historien et il ne m’appartient pas de juger les comportements. Par contre l’étude de sa personnalité peut nous aider à comprendre pourquoi cette civilisation a été incapable de stopper et même de freiner la catastrophe écologique qu’elle alimentait et dont elle avait conscience.

LGI : Et ce van der Vlist vous semble donc un sujet intéressant de ce point de vue ?

SL : Indéniablement. Notamment parce qu’il est né en 1958, au moment charnière où la civilisation technicienne a semblé perdre le contrôle de sa propre évolution. Sa vie coïncide avec le dernier acte de cette civilisation.

LGI : Si je comprend bien, c’est un témoin privilégié de la chute de la civilisation technicienne.

SL : Oui, mais malheureusement il semble avoir laissé peu de textes liés à l’environnement et son journal contient surtout des textes liés à son activité technicienne.

LGI : Comment savez vous qu’il avait conscience des enjeux environnementaux ?

SL :Il a tout de même laissé quelques textes sur ce thème ainsi qu’une courte auto biographie écrite à l’occasion de ses cinquante ans. Il y explique notamment qu’il a été impliqué dès 1981 à un programme de mesure du taux de CO2 dans l’atmosphère et qu’il a pris conscience des risques de réchauffement climatique dès cette période.

LGI:Le milieu scientifique était donc au courant dès 1981 ?

SL : Bien entendu. Si nous disposons de peu de documents de la période de dématérialisation massive, nous avons paradoxalement beaucoup plus de documents des périodes plus anciennes et nous avons retrouvé des travaux datant de 1895 établissant un lien entre la température moyenne sur notre planète et la concentration en C02 de son atmosphère.

LGI:1895 ? Vous voulez dire 1985 ?

SL : Non, c’est bien à la fin du dix neuvième siècle, en 1895 que ces travaux ont été publiés. Ils sont probablement passés quelque peu inaperçus et ce ne sont pas ces travaux qui ont valu son prix Nobel de Chimie à Svante Arrhenius.

LGI: Nos prédécesseurs connaissaient donc parfaitement les risques qu’ils courraient ?

SL : Dans les milieux scientifiques concernés, incontestablement. Il faudra pourtant attendre 2001 et le rapport du GIEC pour que ce sujet soit réellement porté à l’attention du grand public.

LGI : 2001 ! Que de temps perdu ! Plus d’un siècle après la découverte de l’influence de l’effet de serre sur le climat ! Vingt ans après que ce van der Vlist ait fait ses mesures de CO2 ! Qu’a t-il fait pendant ces vingt années pour prévenir ses contemporains ?

SL : Il explique dans son autobiographie qu’il a hésité mais qu’il a abandonné sa carrière de chercheur pour une activité technique mieux rémunérée. Il s’est également marié et au eu quatre enfants.

LGI : Quatre enfants ! N’avait il pas conscience du niveau de surpopulation de l’époque ? Combien d’habitants comptait notre planète à ce moment ?

SL : Environ cinq milliards et demi lorsqu’ils ont eu leur dernier enfant. Pour comprendre son comportement, il faut savoir que le monde était divisé en « pays » qui se concurrençaient. Eric vivait dans un pays à la population vieillissante qui encourageait les naissances pour conserver un niveau de population stable.

LGI : Eric van der Vlist fait donc des mesures de CO2 et prend conscience des risques de réchauffement climatique en 1981 sans que cela ne change son comportement ? C’est invraisemblable !

SL : Son comportement a été influencé par cette prise de conscience mais dans des proportions qui sont restées limitées.

LGI : Que faisait-il ?

SL : Quand il a quitté institut de recherche où il travaillait sur le CO2, il a rejoint une société pour travailler dans le domaine de la téléphonie mobile.

LGI : Une société ? Vous voulez dire qu’avant cela il était resté en marge de la société ?

SL : Non, les techniciens étaient organisés en groupements appelés « sociétés » ou « personnes morales » dont le but était de grossir et de gagner de l’argent et Eric a rejoint un de ces groupements.

LGI: Ces sociétés devaient être soumises à des impératifs moraux très forts pour mériter le nom de personne morale !

SL : Au contraire… Elles échappaient à tous les principes moraux ou religieux et leurs seules règles étaient d’obéir aux lois en vigueur et de gagner plus d’argent qu’elles n’en dépensaient.

LGI : Pouvez vous nous expliquer ce qu’était la téléphonie mobile ?

SL : Les techniciens avaient développé un besoin irraisonné de rester « connectés » les uns aux autres par l’intermédiaire de téléphones mobiles, qui étaient des petits boîtiers transmettant sons et images au moyen d’ondes électromagnétiques et fonctionnant à l’électricité.

LGI : Encore l’électricité… Ce besoin de se sentir connecté me semble être une curieuse manie ! Eric van der Vlist en était donc à la fois un des initiateurs et un adepte ?

SL : Avant d’en souligner les effets pervers, oui. Mais il ne faut pas exagérer son rôle dans le développement de cette technologie. Il a en effet changé de domaine d’activité alors qu’elle était encore balbutiante.

LGI : Il a donc rapidement perçu le caractère pathologique de ce type de comportement ?

SL : Non, son texte sur les effets pervers du téléphone mobile est assez tardif et date de 2011. Il a changé de domaine d’activité parce que le téléphone mobile était développé par des sociétés multinationales de taille importante dans lesquelles il ne se sentait pas à l’aise.

LGI : Vous nous avez expliqué que le but de ces sociétés était de grossir, les grosses sociétés devaient donc être les meilleures d’entre elles, pourquoi vouloir en partir ?

SL : La plupart des sociétés étaient des structures très hiérarchisées dans lesquelles l’initiative personnelle n’était pas encouragée et dans lesquelles la compétition était fortement encouragée.

LGI : Je pensais que la civilisation technicienne était organisée suivant des principes démocratiques, ce n’était pas le cas ?

SL : Certains pays étaient gouvernés suivant des principes démocratiques mais les sociétés n’étaient pas soumises à cette règle.

LGI : Votre homme a t-il pu échapper à leur contrôle ?

SL : Il a travaillé dans des sociétés de plus en plus petites avant créer une société uni-personnelle pour vendre le résultat de son travail. C’est à ce moment qu’il s’est spécialisé dans ce XML qui permettait d’écrire des textes compréhensibles par les machines.

LGI : Pourquoi ce choix ?

SL : Je suppose que cela devait correspondre à un sujet en vogue à cette époque. Il faut également dire que c’était un sujet « ouvert » dans lequel les contributions de petites structures indépendantes étaient bienvenues.

LGI : Il n’avait pas conscience de la fragilité des documents dématérialisés ?

SL : Si et il a même lancé un projet d’archivage de ces documents. Malheureusement, les archives étaient elles aussi dématérialisées ce qui réduit leur pérennité.

LGI : Je dirais même que ça les rend inutiles, non ?

SL : Non, pas totalement. La boite que nous venons de retrouver contient à la fois les textes d’Eric van der Vlist mais également les archives des documents auxquels il faisait référence ce qui s’avère très précieux à leur compréhension.

LGI : En tout cas, je ne vois pas ce qui évoque une conscience des problèmes environnementaux dans tout cela !

SL : En 1994 il acheté la ferme dans laquelle nous avons retrouvé la boîte noire et a tenté de vivre plus proche de la nature et de réduire son empreinte écologique.

LGI : Ce n’était pas trop tôt pour s’apercevoir qu’il fallait changer de vie !

SL : Non, mais ce changement a été partiel et il a commencé à mener une double vie : la semaine en ville consacrée à des activités techniques et les samedi et dimanche à la campagne à cultiver son jardin.

LGI : J’espère qu’il essayait au moins de minimiser le bilan carbone de ses transhumances hebdomadaires !

SL : Il n’en dit pas grand chose. D’après nos recherches, il utilisait un véhicule appelé « Renault Espace » qui rejetait près de 200g de CO2 par kilomètre et parcourait environ 350 km par semaine, soit 3500 kg de CO2 par an…

LGI : Et à part cela ?

SL : En 2007 et surtout en 2008 il a étendu son activité agricole en achetant un nouveau terrain et en plantant des arbres fruitiers. Il privilégié les variétés anciennes menacées de disparition à court terme. Il a également introduit des moutons et des oies de races à faible effectif pour entretenir ses terrains.

LGI : Cela aurait sans doute été très utile s’il s’était également préoccupé d’atténuer le changement climatique qui allait détruire ces arbres et ces animaux. Est-ce que ses arbres compensait ses émissions de CO2 ?

SL : Non. Il a planté 400 arbres pouvant capter chacun 5kg de CO2, cela ne fait guère que 2000 kg de CO2 par an, ce qui couvre juste 1700 kg de voyages en avion..

LGI : Son engagement s’arrêtait là ?

SL : Il a aussi aidé sa femme Catherine à créer deux magasins de produits dits « biologiques » cultivés et produits sans produits chimiques et avec un impact réduit sur l’environnement. Ces magasins appelés « le Retour à la Terre » essayaient de sensibiliser leurs clients et organisaient des réunions pour débattre de thèmes liés à l’environnement.

LGI : Tout cela semble ridiculement insuffisant ! On a l’impression d’une erreur d’analyse : ses archives sont dématérialisées sans qu’il ne s’interroge sur la pérennité des ressources électriques qui leur sont nécessaires de la même manière qu’il veut sauvegarder des espèces animales et végétales sans s’interroger sur la pérennité de leur écosystème dans son ensemble.

SL : Vous avez mis le doigt sur le cœur du problème et c’est ce que nous aimerions comprendre !

LGI : N’a t-il pas laissé d’indications à ce sujet ?

SL : Si, mais dans un texte difficile à analyser.

LGI : Que voulez vous dire ?

SL : Début 2013, il a écrit un texte atypique, présenté comme une fiction dans lequel il imaginait qu’on retrouve ses écrits après une catastrophe environnementale majeure.

LGI : Tient donc, il avait donc conscience du risque ! Et pourquoi ce texte est-il difficile à interpréter ?

SL : Comment distinguer la fiction du réel ?

LGI : Essayons tout de même ! Sait on ce qui a pu se passer début 2013 pour le pousser à écrire cette « fiction » ?

SL : Au tout début du vingt-et-unième siècle on a pu espérer que la raréfaction des ressources pétrolières allait contraindre la civilisation technicienne à limiter de manière drastique sa consommation d’hydrocarbures et donc sa génération de gaz à effet de serre.

LGI : Et c’est en 2013 qu’on s’est aperçu que ce ne serait pas le cas ?

SL : En tout cas, c’est fin 2012 qu’Éric van der Vlist semble en avoir pris conscience.

LGI : Que c’est il passé ?

SL : Il devenait de plus en plus évident que la civilisation technicienne allait régler, à son habitude, la raréfaction des ressources en hydrocarbures de manière purement technique sans se soucier des conséquences de cette décision.

LGI : Comment cela ? Quand il n’y a plus d’hydrocarbures il n’y en a plus !

SL : Sauf si on va chercher la moindre goutte là où elle se trouve quelque soient les conséquences. Seuls les gisements relativement faciles à exploiter l’avaient été et les techniciens ont développé des technologies permettant d’exploiter des gisements de gaz et de pétrole plus difficiles à exploiter et qualifiés de non conventionnels.

LGI : C’était possible ?

SL : Quand on est prêt à extraire du pétrole en forant le sol à plus de 1500 m sous le niveau de la mer à partir d’énormes radeaux ou à fracturer les roches jusqu’à provoquer des séismes il est toujours possible se trouver des hydrocarbures.

LGI : Ils étaient donc prêts à prendre tous les risques pour prolonger un mode de vie favorisant la production de gaz à effet de serre ?

SL : J’en ai bien l’impression, oui.

LGI : Eric van der Vlist était il isolé dans sa prise de conscience ?

SL : Pas vraiment. L’imminence d’un changement climatique était même assez généralement admise dans les pays européens.

LGI : Si c’est le cas, vu l’importance des enjeux, les hommes et femmes conscients de cette catastrophe imminente n’avaient ils pas de moyens d’actions plus efficaces ?

SL : Beaucoup de gens se sentaient impuissants à faire changer les choses.

LGI : Leur société n’était elle pas organisée de manière démocratique ?

SL : De nombreux pays étaient effectivement régis suivant des principes démocratiques, mais leur mode d’organisation ne semble pas lui avoir permis de prendre les mesures nécessaires.

LGI : Pourquoi ?

SL : C’est un sujet complexe sur lequel nous ne pouvons émettre que des hypothèses.

LGI : Lesquelles ?

SL : Les « sociétés » dont le seul but était de gagner de l’argent dont nous avons déjà parlé ont indéniablement été un des facteurs. Leur développement était tel qu’elles étaient devenues de véritables contre pouvoirs. Les plus grosses d’entre elles étaient « multinationales » et étendaient leur champ d’action sur toute la planète. Leur développement reposait sur la croissance de l’économie elle même liée à l’utilisation de ressources non renouvelables entraînant la production de gaz à effet de serre. Leur importance leur permettait d’exercer des pressions sur toutes les structures scientifiques et politiques et de bloquer les décisions qui leur étaient défavorables.

LGI : Les structures démocratiques ne donnaient elles pas suffisamment de pouvoir aux peuples pour contrer cela ?

SL : Si, mais à condition qu’ils soient correctement informés et que les choix qui leur soient présentés soient réellement ouverts.

LGI : Correctement informés ?

SL : Les sociétés contrôlaient partiellement la recherche scientifique et alimentaient des études dont le but étaient de brouiller les cartes en niant les effets de certains développements technologiques et parfois même la réalité de l’effet de serre et du réchauffement climatique.

LGI : Vous laissez entendre que les options proposées aux peuples n’étaient pas vraiment ouvertes, pourquoi ?

SL : Le pouvoir politique était exercé par une caste de professionnels dont un des buts était de se maintenir au pouvoir. Étant élus, ils ne pouvaient pas se permettre de prendre des décisions impopulaires et ceux d’entre eux qui remettaient en cause la poursuite de la « croissance » économique, nécessairement plus ou moins liée à une croissance des gaz à effet de serre étaient considérés comme des utopistes et leurs propositions écartées d’office.

LGI : Cette société est donc sciemment allé à la catastrophe pour pouvoir continuer à sur-exploiter la planète, cela semble hallucinant !

SL : C’est difficile à comprendre mais les faits sont pourtant là.

LGI : Merci Professeur. Je rappelle que cette semaine nous recevions le Professeur Sean Lafontaine, responsable du laboratoire de technicologie de l’université d’Ittoqqortoormiit.

by Eric van der Vlist at April 25, 2013 07:13 PM

Karl Dubost

La rencontre

figurine de tigre 22 avril 2013, Mountain View, États-Unis

Mouillé de rosée, il semble sourire à la folie de la vie.

Kakuzô Okakura, Le livre du thé.

Le matin, un tigre qu'elle a glissé dans mon sac. Une table en terrasse, un café au lait et le livre du thé pour attendre le moment de la rencontre. L'appaisement, l'oubli de soi et l'ouverture des idées échangées.

April 25, 2013 11:02 AM

April 24, 2013

David Larlet

Des API et des hommes

Les API actuelles — s'auto-proclamant RESTful — nécessitent bien souvent de développer un client qui leur est propre pour accéder aux données en raison de leurs spécificités. Au mieux, ces API utilisent HTTP à bon escient et font transiter du JSON à partir d'URL « propres ».

Cela semble bien éloigné de la vision de Roy T. Fielding (qui a défini REST en 2000 dans sa thèse) et qui a écrit un billet on ne peut plus clair en 2008 :

A truly RESTful API looks like hypertext. Every addressable unit of information carries an address.

Puis surenchérit en commentaire :

Think of it in terms of the Web. How many Web browsers are aware of the distinction between an online-banking resource and a wiki resource? None of them.

5 ans plus tard, on en est encore à réécrire un client pour chaque API ce qui équivaudrait à écrire un navigateur propre à chaque site web visité ! Comment y remédier facilement ? Revenir à la partie oubliée de REST : les liens.

Si votre API devient navigable, en liant chaque ressource présentée depuis sa racine, un client générique va pouvoir la parcourir de proche en proche en suivant les liens comme un utilisateur le fait sur le Web.

Cela résout énormément de problématiques à la fois lorsque l'on prend cette approche :

  • versionnement : est-ce qu'un utilisateur se soucie de la version du site qu'il consulte ? Non. Il suit les liens et si la migration a bien été effectuée il y a des redirections et les codes HTTP appropriées pour gérer ses anciens favoris. Les formulaires ont été mis à jour avec le site et il suffit qu'il remplisse correctement ceux qui lui sont dorénavant présentés.
  • URL propres : est-ce qu'un utilisateur se soucie de la beauté des URL qu'il parcoure ? Quand je vois la tête de celles produites par Google ou Amazon j'en doute. Un développeur ne devrait pas avoir à se soucier de cela si le client suit les liens qui lui sont proposés.
  • documentation : est-ce qu'un utilisateur a besoin d'une documentation pour naviguer sur votre site ? De toute façon, il y a peu de chance qu'il la lise, en revanche il est utile de lui formuler des messages d'erreurs intelligibles lorsqu'il se trompe de chemin. Il peut être intéressant de faire un rappel sur le métier et les concepts abordés car le développeur — à la différence du visiteur — n'est peut-être pas concerné par le sujet de l'API en question.
  • pagination : en utilisant les attributs permettant de typer la relation entre les liens, il est possible de fournir les liens vers la page suivante et précédente explicitement.

Ces questions se sont posées pour les sites Web également il y a des années : souvenez-vous des sites avec un /v4/ dans l'URL ou d'une page d'accueil expliquant comment accéder aux différentes parties du site en « cliquant ici ».

Bien sûr tout cela implique d'avoir un format qui soit hypertexte (pas JSON donc) comme XHTML ou Atom. Si vous voulez vraiment adapter votre JSON actuel il existe 4 implémentations tentant d'introduire des liens typés :

  • JSON-LD (LD pour Linked Data), proche des concepts du Web Sémantique ;
  • HAL JSON le plus simple, peut-être un peu trop ;
  • JSON Collections que je n'ai pas essayé ;
  • Siren le plus récent qui est en train de monter rapidement.

Lorsque vous voulez fournir un moyen d'accéder à vos données via une API hypermedia, mettez vous à la place du développeur et demandez vous si votre API est navigable, fait partie intégrante du Web et nécessite une documentation.

Ce billet fait suite à mon intervention à Mix-IT lors d'un lightning talk dont vous pourrez retrouver le support sur la partie dédiée.

April 24, 2013 11:00 PM

Karl Dubost

Le courage et la peur

sandale et pieds dans un escalier 15 septembre 2008, Tokyo, Japon

L’allée du jardin elle-même est censée conduire à un univers sis au-delà de notre vie temporelle. D’où le premier geste accompli ici par l’hôte et l’invité : se purifier de la poussière du monde. Cette allée est appelée « sol de rosée » (roji), même si à l’origine, les caractères composant ce mot signifiaient simplement « passage » ou « chemin ». Dans une parabole du Soûtra du Lotus, un père prie ses enfants égarés dans une maison en flammes de trouver refuge dans le roji. La maison en flammes symbolise l’existence douloureuse que conditionnent l’ignorance et l’attachement au moi. Et les pratiquants du cha-no-yu considèrent précisément le roji comme le lieu où ils abandonnent les fardeaux de ce monde.

Kakuzô Okakura, Le livre du thé.

Le compte-rendu de la rencontre entre Julian Assange (Wikileaks) et Eric Schmidt (Google) est à lire en détail. Il y a de nombreux points sujets à discussions. J'ai cependant retenu un thème que j'ai croisé dans un contexte complètement différent très récemment.

Courage is not the absence of fear. Only fools have no fear. Rather courage is the intellectual mastery of fear by understanding the true risks and opportunities of the situation. And in keeping these things in balance. And not simply having prejudice about what the risks are. But actually testing them.

Julian Assange, rencontre entre Julian Assange et Eric Schmidt.

À se demander si le réalisateur du film After Earth est en contact avec Julian Assange. Bande annonce. Je n'ai pas vu le film.

April 24, 2013 07:20 PM

Des feeds plus efficaces

Voie rapide avec voitures 21 avril 2013, Moutain View, États-Unis

L’harmonie, vertu confucéenne par excellence, évoque clairement une atmosphère d’accord. Accéder à l’harmonie, telle est sans doute, et par-dessus tout, la raison pour laquelle le cha-no-yu insiste tant sur l’attention méticuleuse qu’il convient d’apporter à tous les gestes de l’échange.

Kakuzô Okakura, Le livre du thé.

Je suis un grand consommateur de feeds (atom, rss, etc). Ils me permettent de suivre un bon nombre de sites Web. Russel Beatie a récemment publié un billet à propos de l'écosystème des feeds avec une orientation très économique. Il remarque qu'il est difficile d'établir une rentabilité autour des feeds que l'on soit producteur de contenu ou bien créateurs d'outils pour traiter ces feeds.

Avoir une opinion sur un sujet essentiellement orientée dans un contexte de rentabilité est une attitude qui me dérange beaucoup. Non pas à cause de la tentative de création d'un revenu, mais en éliminant de fait d'autres modèles sociaux d'existence et de partage.

Dans son billet il identifie quatre enjeux particuliers :

  • Droits sur le contenu : Entendre ici l'éternel sérénade sur la protection du contenu et sa monétisation. Pas un enjeu unique aux feeds.
  • Autorisation d'accès : Dans le cadre des outils Web, la délégation de son autorisation à un service en ligne. Pas un enjeu unique aux feeds.
  • La taille du marché : Le marché est bien plus petit que d'autres technologies. Pas un enjeu unique aux feeds.

Ce n'est finalement pas très convaincant comme argument. L'autre enjeu est celui de la technologie. Mais une fois de plus son argument est faible. Reprenons un peu ce qu'il entend dans cet enjeu.

Formats nuls ?

RSS and Atom are really crappy formats to deliver web content updates. XML is brittle and bloated, parsing is painful, … : RSS 2.0 et Atom (RFC4287) sont des formats XML. RSS 1.0 est un format XML avec un modèle de données RDF. Les formats ne sont pas plus nuls que tout autre format. Ils sont juste à prendre dans le contexte social du Web où les formats sont torturés par les outils, les auteurs, etc. Rien de nouveau et vrai peu importe la technologie. Dès qu'un format n'est pas respecté, le parsing devient un enjeu.

Cependant un des enjeux propes à Atom et RSS est celui du mélange de contenu. D'un côté l'enveloppe qui sert à l'information de mise à jour et de l'autre le contenu du billet. Il y a une petite notion de XML-RPC qui rend certainement plus difficile l'échange des données.

Plus loin dans son billet, il propose : My best guess would be to replace polling RSS for updates with JSON API calls, but it doesn't necessarily have to be that radical. A model to look towards would be Facebook's Open Graph API. Après la poudre de perlimpinpin, et l'eau bénite, l'arme ultime du moment sont Saint JSON et Saint API, deux sauveurs miraculeux de tous les troubles de l'humanité. Ce qui est oublié à chaque fois dans cette rhétorique, c'est que ces APIs sont « plus stables » car elles sont contrôlées par une seule source. Dès qu'elles deviennent des formats libremement implémentables et largement implémentées, les erreurs feront partie du jeu. En revanche, trouver un moyen d'avoir une mise à jour plus atomique est intéressante mais complètement orthogonale au format.

Normalisation des meta-data

Il poursuit : … meta-data standardization is minimal … . Les efforts d'extensions normalisés et communautaires ne sont pas un problème de technologie, mais bien un enjeu d'effort collectif pour étendre Atom ou RSS. Rien n'empêche de le faire, mais les acteurs n'ont pas su trouver de consensus ou d'intérêts autour d'extensions largement partagées. Encore une fois je ne pense pas que ce soit un véritable enjeu.

Mises à jour

Et puis … updates are all or nothing. Celui-ci est un véritable enjeu du format. Un feed contient un certain nombre d'éléments. À chaque fois qu'une mise à jour est réalisée, l'information la plus ancienne est enlevée, et la nouvelle est ajoutée. Pour obtenir le feed mis à jour, il faut demander la ressource au complet. Imaginons un feed avec 20 informations, si l'une est changée, il faut télécharger l'ensemble du feed pour seulement environ 1/20 qui a réellement changé. Ce n'est pas une bonne utilisation de la bande passante.

Je me demande souvent ce qui aurait été plus efficace. On peut imaginer un feed maître contenant juste l'information de statut et pointant ensuite vers les conteneurs individuels des billets. C'est à dire deux requêtes HTTP au lieu d'une mais moins de bonne passante consommée. Ce serait à tester en termes d'efficacité. Bande passante ou latence ?

Réaliser un diff est un peu plus complexe car cela signifie que le client est capable de gérer les différentes versions de diff et a une sorte de diff original.

Les utilisateurs ne comprennent pas

Again, regular users have never, ever understood the concept of newsfeeds, … Difficile. Les gens ne comprennent pas mieux les sites Web. Je pense plutôt que l'outil feed n'a jamais été vraiment un outil de travail pour nombre de personnes et donc il n'y a que peu de nécessité d'apprendre à utiliser un outil spécifique pour. D'autant plus que ces mêmes utilisateurs comprennent très bien la notion de statut des réseaux sociaux. Il y a peu de différences entre les deux. Si tous les clients mails avaient eu des fonctions de lecture de feed, peut-être l'histoire aurait été différente. Peut-être.

… and the browser makers have never agreed on how to handle them, leading to general chaos and confusion for everyone involved. Oui. Il n'y a pas réellement d'interfaces par défaut dans les navigateurs pour gérer les flux de manière utile. Opera avait quelque chose d'intéressant mais pas assez fini.

Coût de maintenance

Servers (or cloud services) are expensive, and RSS/Atom feeds are incredibly inefficient, making bandwidth and storage costs non-trivial (though, admittedly, a lot less expensive than it used to be).. C'est à peu près le même point que précédemment. Au final quand on dissèque un peu le billet de Russel Beatie, on se rend compte qu'il fait finalement peu de points utiles.

April 24, 2013 06:51 PM

April 22, 2013

Christian Fauré

L’instrumentation de la dette publique

Dans l’émission radiophonique Tire ta langue, Alfred Gilde (auteur de : Oui, l’économie en français, c’est plus clair , France Empire, 2013) rappelait que l’expression traditionnelle de “Dette Publique” était peut-être plus judicieuse que celle de “Dette Souveraine” empruntée au monde anglo-saxon .

Qui plus est, si la dette est qualifiée de “souveraine” elle montre du doigt que la puissance publique est endettée et que, donc, elle perd économiquement sa souveraineté.

Paradoxe : la dette dite “souveraine” ne fait qu’exprimer et mesurer l’importance de la perte de souveraineté.

Après, il faut bien sûr distinguer la dette extérieure (dette contractée auprès d’organisations étrangères) de la dette intérieure (dette détenue par les ménages et les résidents) : les japonais sont les plus endettés mais la quasi totalité de leur dette est une dette intérieure. C’est donc plutôt de la “bonne dette”, comme on parle de “bon cholestérol”.

On pourrait penser que c’est toujours mieux de ne pas avoir de dette, mais c’est oublier qu’il n’y a que ceux qui investissent pour se choisir un avenir souhaitable qui ont des dettes (sauf exception de type manne pétrolière).



Au montant de la dette, il faut également prendre en compte  un indicateur qui influe sur l’interprétation de la dette : le taux d’épargne des ménages. Un pays comme la France est certes endetté, mais on sait que le montant de l’épargne des citoyens est du même ordre que celui de la dette.

Implicitement, cela veut dire que les détenteurs de la dette française savent qu’en cas de “force majeure” la puissance publique pourra toujours, autoritairement, s’approprier l’épargne des ménages et des particuliers : c’est l’expérimentation qui a eu lieu en grandeur nature à Chypre.

Dans cette logique, la dette est un instrument de requalification de la puissance publique. Cette dernière n’est pas l’expression d’un pouvoir au service d’un bien commun et public mais le moyen de “socialiser les pertes” pour garantir les profits d’intérêts privés.

Quand Ars Industrialis en appelle à une “nouvelle puissance publique” c’est très précisément pour condamner la tendance actuelle – malheureusement pleinement cautionnée par le président de la république actuel dans son allocution télévisuelle du 28 Mars 2013 –  celle d’une puissance publique comme moyen de remboursement de la dette dans la perspective de pouvoir ensuite recommencer “comme avant”.

Le président dit “mon cap c’est la croissance”, mais de quelle croissance parle-t-il ? De cette croissance qui nous a conduit à cette dette ? à ces millions de chômeurs ? De cette croissance qui pousse l’Espagne a esclavagiser sa jeunesse ? de celle qui force les jeunes italien à émigrer ?

On ne peut plus aujourd’hui en appeler au “retour de la croissance” en espérant un consensus sur le mot croissance, et que cela passe comme une “lettre à la poste” : c’est cette croissance qui nous a amené dans le mur.

Cette croissance tant invoquée, dont le retour est attendu comme le printemps, a été une mécroissance, une mauvaise croissance. C’est parce qu’il y a des bonnes et des mauvaises croissances que le politique doit s’exprimer sur les modèles économiques et industriels qui doivent constituer l’épine dorsale d’une bonne croissance, ce qu’il a cessé de faire depuis qu’il s’est enfermé dans un rôle de chamane invoquant avec impuissance le retour de la consommation comme d’autres le retour de la pluie.

Signaler sur Twitter

by Christian at April 22, 2013 09:37 AM

April 18, 2013

David Larlet

Passage à l'échelle

Je m'interroge de plus en plus sur cette notion de passage à l'échelle que l'on nous encourage à anticiper avec le Cloud. J'ai de plus en plus l'impression qu'elle est liée à des business models déficients qui misent sur la masse d'utilisateurs pour avoir une chance à terme de monétiser le service. Je comprends que l'on puisse avoir des investissements à rentabiliser et qu'en visant haut, malléable, on pense pouvoir retrouver un équilibre financier plus rapidement. Pourquoi placer des paliers financiers aussi élevés ?

Avoir l'ambition d'un service mondial avec des millions d'utilisateurs est finalement aller à l'encontre du Web en centralisant des données et des usages. Il y a de la place pour plusieurs services, pour de la diversité, pour des motivations et des valeurs différentes, pour des communautés complémentaires. Pourquoi vouloir devenir le TF1 du Web ?

Quelles sont les relations que vous pouvez entretenir avec des millions d'usagers ? Sont-elles sincères ? Automatisées ? Avez-vous délégué ces relations ? La reconnaissance de l'utilité d'un service passe par ces retours, c'est une forme de motivation qui s'inscrit dans la durée. On ne vend pas un service au plus offrant lorsque l'on a établi ces relations. Pourquoi chercher à ne plus être en mesure de gérer ces liens ?

Le passage à l'échelle est emblématique d'une croissance effrénée et malsaine.

April 18, 2013 11:00 PM

Karl Dubost

Ici ou ailleurs

tabouret en face d'un mur 8 avril 2006, Tokyo, Japon

La voie du thé est un culte fondé sur l’adoration du beau jusque dans les occupations les plus triviales de la vie quotidienne. Elle enseigne la pureté et l’harmonie, le mystère de la compassion réciproque et la dimension romantique inhérente à l’ordre social.

Kakuzô Okakura, Le livre du thé.

Les mots que j'entends, que je lis autour de moi.

« Appelle moi quand tu arrives ? »

« J'arrive dans 5 minutes. »

« Je suis dans le train. »

« Nous embarquons dans l'avion. »

« Je suis dans le café X. »

Je me dis que parfois il devrait y avoir des messages dans les lieux rappelant « Ont-ils vraiment besoin de savoir où vous êtes ? »

April 18, 2013 09:07 PM

ⅩⅢ, toujours un mystère

objets en transparence 9 avril 2006, Tokyo, Japon

Elle est, par essence, un culte de l’Imparfait, en ce qu’elle vise – avec quelle délicatesse ! – au possible dans une vie vouée, comme nous le savons, à l’impossible.

Kakuzô Okakura, Le livre du thé.

13 ans que cela dure.

April 18, 2013 08:53 PM

Les clichés

thé et sucrerie 17 avril 2013, Montréal, Canada

A dire vrai, ceux qui se révèlent incapables de sentir en eux-mêmes la petitesse des grandes choses ne sauraient reconnaître chez les autres la grandeur des petites choses. L’Occidental moyen, livré à sa complaisance mielleuse, ne discernera au mieux dans la cérémonie du thé qu’une des mille et une bizarreries réservées, selon lui, à un Orient affecté et puéril. Celui-là s’était habitué à considérer le Japon comme une contrée barbare tant qu’il se consacrait aux arts délicats de la paix ; il le tient aujourd’hui pour un pays civilisé depuis qu’il massacre allégrement sur les champs de bataille de Mandchourie. Combien de commentaires n’a-t-on pas consacrés au code des samouraïs, à cet art de la Mort pour lequel nos guerriers se sacrifient avec tant d’exaltation ! Alors que la voie du thé, laquelle incarne au mieux notre art de la Vie, n’a guère suscité d’intérêt. Pour tout dire, nous resterions volontiers des barbares, si notre prétention à la civilisation devait reposer uniquement sur l’horrible gloire de la guerre. Nous préférons, en effet, attendre que vienne le temps où notre art comme nos idéaux recevront le respect qu’ils méritent.

Kakuzô Okakura, Le livre du thé.

Okakura a publié Le livre du thé en 1906 en langue anglaise afin de faire découvrir la cérémonie du thé. Il en profite pour situer le contexte entre les civilisations réciproques. Deux passages sur les clichés de l'occident à cette époque à propos du Japon ainsi que des japonais à propos des occidentaux.

Pourquoi ne pas vous amuser à nos dépens ? L’Asie vous retourne le compliment. Vous vous divertiriez plus encore si vous saviez tout ce que nous avons imaginé et écrit à votre propos. Vous y découvririez pêle-mêle l’enchantement propre à la perspective, l’hommage inconscient rendu au merveilleux et le ressentiment silencieux à l’égard du nouveau et de l’indéfini. On vous a chargés de vertus trop raffinées pour être enviées, et accusés de crimes trop insolites pour être condamnés. Nos écrivains de jadis – combien sages et savants ! – nous ont appris que vous portiez des queues broussailleuses cachées sous vos vêtements, et dîniez souvent d’une fricassée de nouveau-nés ! Mais il y a bien pis : nous avions coutume de vous tenir pour le peuple le plus théorique de la terre, puisque, nous disait-on, vous prêchiez à l’envi ce que vous ne pratiquiez jamais.

Kakuzô Okakura, Le livre du thé.

Sans commentaires.

April 18, 2013 08:34 PM

Christian Fauré

Quatre visages des data

A l’heure où tout est data, je propose quatre visages des data selon une perspective généalogique de ce terme d’origine latine.

Les données immédiates de l’expérience

On traduit datum – le singulier de data – par donné(e). Et le mot dérive effectivement du verbe do / dare auquel l’ensemble des traductions suivantes se rattachent : donner, offrir, confier, remettre, admettre, accorder, permettre, concéder, présenter (source wiktionary).

Parler de data n’a de sens que dans le cadre de l’avènement du sujet dans la philosophie moderne Cartésienne, ce sujet qui reçoit les données du “monde extérieur”. C’est d’ailleurs en débat avec Descartes que Locke rejettera la notion “d’idée innée” en prônant un empirisme selon lequel nos idées ne sont pas déjà là, a priori, mais proviennent des données immédiates de l’expérience.

Le mot a ensuite pris un sens particulier au début du 20° siècle avec les débats des philosophes anglo-saxons autour des “sense data”. Les “sense data” sont ce qui nous est donné au travers de la perception (on retrouve les “données immédiates de l’expérience de Locke). Tout un débat a eu lieu pour savoir quelle interprétation donner à ses “sense data” dans la mesure où l’on peut poser que notre rapport au monde et à la réalité est toujours médiatisée par ce que nous en percevons aux travers de nos sens.

Les data comme informations faisant l’objet d’un calcul

En tant que “matériau brut” fourni par nos sens, les data ont ce caractère de matière première de la perception en attente d’être traitée par l’esprit. Se met ainsi en place l’idée que l’esprit procède par calcul (approche cognitive de l’esprit), une computation sur la base des data que nous percevons.

Si, au début, les data relevaient du don ou de l’offrande, leur emploi dans les théories de la perception va les inscrire dans le champ sémantique du calcul : comme matière première de l’usine à calcul qu’est l’esprit cognitif.

C’est sur la base de ces débats que la philosophie analytique, autrichienne puis anglo-saxonne, va populariser une définition fort utile des data : les data sont des informations qui peuvent faire l’objet d’une production ou d’une manipulation par le calcul.

Les data comme information stockée

Avec le développement de l’informatique de la seconde partie du XX° siècle, les data vont être associées, en plus du calcul, à celui du stockage. La chose était relativement inédite car jusqu’alors les data étaient toujours se qui se donnait sans pouvoir faire l’objet d’une mise en réserve : la data était reçu puis traitée, mais elle était évanescente.

A partir du moment où nous sommes mis à écrire pour les machines, il a bien fallu masser et stocker cette information qui doit être donnée à la machine.

Avec le développement du Software, il a fallu se rendre à l’évidence : les programmes n’étant plus des configurations Hardware, il existe donc des données qui sont des programmes, c’est à dire qui sont les écritures électroniques du calcul, de l’algorithme. Tous les programmes sont à présent des data, même si toutes les datas ne sont pas pour autant des programmes.

Les data comme objet de transfert

Après avoir été associées au calcul et au stockage, les data vont être associées, à la fin des années 90, au transfert ; renouant par certains aspects avec la définition latine originelle.

Regardons ainsi la définition que donne Roy Fielding dans sa thèse et qui est assez surprenante :

“A datum is an element of information that is transfered from a component, or received by a component, via a connector.” p. 11

Fielding précise :

“ this do not include information that is permanently resident or hidden within a component”.

Selon cette définition, si l’information ne fait pas l’objet d’un transfert entre différents composants d’une architecture logicielle, alors on ne peut pas parler de data.

Il faut que l’information « sorte du bois », qu’il y ait un transfert pour qu’elle puisse être qualifiée de data. La dimension de calculabilité et de stockage n’est plus ici déterminante.

A partir de ce moment, on peut dire que les questions de transfert sont des questions de data et, inversement, les questions de data sont des questions de transfert.

Les data dans l’écologie relationnelle des metadata

Il se trouve qu’une quatrième compréhension des data émerge au même moment que celle du transfert, il s’agit du discours sur les metadata en vertu duquel une data n’existe, et ne peut être utilisée, que pour autant qu’elle est qualifiée et catégorisée (elle a une signification explicite) par d’autres data, ces dernières étant explicitement qualifiées de metadata, c’est à dire des data de data.

C’est tout le discours et les débats autour des standards du web sémantique et du web de données qui a porté et continue de porter ce visage des data compris à partir de la question des metadata.

Les deux approches –  les data comme objet de transfert d’un côté et les data dans la perspective des metadata d’un autre côté – ne sont ni opposées ni incompatibles. C’est d’ailleurs ce que j’ai essayé de montrer en distinguant, mais sans les opposer, les démarches OpenAPI des démarches OpenData dans ApiCulture & DataCulture.

Signaler sur Twitter

by Christian at April 18, 2013 08:20 AM

April 17, 2013

Karl Dubost

Visualiser un processus

affiche déchirée 3 mars 2013, Montréal, Canada

Les affaires qui durent plusieurs jours.

Sei Shonagon, Choses fatigantes, notes de chevet.

Nous avons travaillé ensemble à la formalisation d'un processus pour son travail. La démarche fût intéressante pour moi beaucoup plus que la réalisation du processus final. Dans nos lieux de travail, nous avons de nombreux processus de travail qui sont non documentés. Ils sont parfois appelés expertise, expérience, automatisme, etc. Il n'est pas toujours nécessaire de les formaliser par écrit. Il y a un coût à la formalisation que l'on oublie souvent. La formalisation d'un processus s'accompagne souvent d'une solidification et rend plus difficile l'évolution du processus. Parfois pour garder de la flexibilité, il est mieux de garder la culture orale, tout dépend du contexte bien sûr. Les processus documentés émergent souvent quand il y a des problèmes coûteux qui ne doivent pas être reproduits.

De la patience et de la persévérance sont nécessaires. La documentation du processus est un long travail ingrat.

Démarche de documentation du processus

Post it sur un mur 25 mars 2013, Montréal, Canada

Ceci pour ce cas-ci, nous sommes allés à travers plusieurs étapes.

  1. Une narration libre sans questions de ma part du travail effectué. J'ai pris des notes de ce que je comprenais.
  2. Une narration libre avec questions. Mes notes se sont affublés de numéros et de flèches, ainsi que d'identifications d'incohérences. Les incohérences ne sont pas forcément des incohérences de processus. Ils peuvent être dû à des oublis dans la narration. C'est pour cela qu'il est nécessaire parfois de raconter l'histoire plusieurs fois.
  3. Une narration avec mes notes. Utilisation de post-it collés sur le mur avec des couleurs différentes en fonction de types pré-identifiés. Les notes sur le mur permettant de créer deux axes d'organisation et la troisième avec la couleur.
  4. Finalement différents essais de représentation en utilisant organigramme, timeline, etc. afin de savoir ce qui semble le plus cohérent, logique pour le problème en cours.
Papiers de graphes 26 mars 2013, Montréal, Canada

April 17, 2013 08:11 PM

Documenter HTTP/1.1 par le code

Sardine 24 mars 2013, Montréal, Canada

Plutôt que de penser à des choses
Sans importance
Mieux vaut boire
Une coupe
De saké, même trouble.

Tabibito, Éloge du saké.

Lors que j'ai commencé à comprendre HTTP par la programmation, j'ai réalisé une copie de l'ensemble du texte dans un fichier texte python en le mettant en commentaire. Ceci me permet de traiter le code au fur et à mesure et de transformer les requis de la spécification en code. De cette manière :


#!/usr/bin/env python3.3
# encoding: utf-8
"""
http/message.py

Created by Karl Dubost on 2013-03-11.
Copyright (c) 2013 Grange. All rights reserved.
see LICENSE
"""

"""1. Introduction


   The Hypertext Transfer Protocol (HTTP) is an application-level
   request/response protocol that uses extensible semantics and self-
   descriptive message payloads for flexible interaction with network-
   based hypertext information systems.  This document is the first in a
   series of documents that collectively form the HTTP/1.1
   specification:

[…]
"""

Puis j'ai finalement abandonné l'idée assez vite en faisant des aller-retours entre la spécification et le code de test.

pycco demande du Markdown

J'ai découvert en cours Pycco qui est une implémentation python de Docco, un générateur de documentation. Le programme extrait les éléments en commentaires dans le programme afin de créer une documentation montrant en parallèle le code et les commentaires. La présentation est bien faite et assez élégante.

Je pourrais de nouveau me conformer à ce style. Cependant, la documentation doit être au format Markdown, ce qui n'est pas tout à fait le cas des spécifications IETF. Il existe un pseudo HTML, une version texte, une version HTML, une version XML.

Documentation multi-langage de programmation

Mais cela semble être une solution de bonne fortune et privilégier de dupliquer le travail dans chaque langage de programmation. Il serait peut-être plus intéressant de pouvoir documenter la spécification au sein du code HTML (par exemple) avec des <code class="docspec python">. Il serait ainsi possible de créer des bouts au sein de la spécification pour différents langages de programmation et de permettre des vues en fonction du langage de programmation. La documentation de Selenium donne des exemples d'utilisation de son API en différents langages—pas tout à fait la même chose. Par exemple la documentation de Selenium Webdriver offre des boutons en haut pour activer certains langages.

April 17, 2013 07:31 PM

Comprendre en programmant HTTP

Sardine 24 mars 2013, Montréal, Canada

Je sais la réputation
Des vagues légères
Du rivage de Takashi.
Je n'en approcherai pas : mes manches
En seraient mouillées !

Ki, Amour, Kinnyoshou.

Pour mieux comprendre une spécification, il est parfois utile de tenter de programmer les requis de cette technologie. Il n'est pas toujours nécessaire de programmer un ensemble complet, cohérent et fonctionnel, mais juste des morceaux. Depuis quelques semaines, en lisant les modules de HTTP/1.1 bis, je tente parfois et non de façon continue de mieux comprendre les contraintes de la spécification.

Une mise en pratique : Start Line

La spécification HTTP/1.1 définit ainsi la première ligne d'un message HTTP.

3. Message Format

All HTTP/1.1 messages consist of a start-line followed by a sequence of octets in a format similar to the Internet Message Format [RFC5322]: zero or more header fields (collectively referred to as the "headers" or the "header section"), an empty line indicating the end of the header section, and an optional message body.

HTTP-message   = start-line
                  *( header-field CRLF )
                  CRLF
                  [ message-body ]

The normal procedure for parsing an HTTP message is to read the start-line into a structure, read each header field into a hash table by field name until the empty line, and then use the parsed data to determine if a message body is expected. If a message body has been indicated, then it is read as a stream until an amount of octets equal to the message body length is read or the connection is closed.

C'est donc très simple. La structure start-line est la première ligne du message. Plus loin la spécification donne quels sont les types de start-line, celle du client (request-line) et celle du serveur (status-line). Nous allons utiliser python pour cela. Il suffit de créer des tests afin de mieux comprendre. Nous importons les librairies nécessaires : unittest ainsi que celle qui comprend votre code.

import unittest
from http import message

Puis on définit un message type envoyé par un serveur

SERVER_MSG = """HTTP/1.1 200 OK
Date: Mon, 11 Mar 2013 16:40:51 GMT
Server: Barn
Content-Type: text/plain; charset=utf-8

Vague but interesting."""

Ainsi qu'un message type envoyé par un client

CLIENT_MSG = """GET /love HTTP/1.1
Host: example.org"""

Nous pouvons commencer nos tests réels. Nous créons une class pour les tests relatifs au message.

class HTTPMessageTests(unittest.TestCase):
    """Tests for HTTPMessage"""

Et créer un test pour la première ligne d'un message émis par le serveur.

    def test_start_line_server(self):
        """Server startline extraction.
        http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-22#section-3.1
        """
        msg = message.Message()
        msg.fullmessage = SERVER_MSG
        actual = msg.startline()
        expected = "HTTP/1.1 200 OK"
        self.assertEqual(actual, expected)

Et le test équivalent pour le client

    def test_start_line_client(self):
        "Client startline extraction."
        msg = message.Message()
        msg.fullmessage = CLIENT_MSG
        actual = msg.startline()
        expected = "GET /love HTTP/1.1"
        self.assertEqual(actual, expected)

Bien sûr si nous testons maintenant, les tests échouent puisque nous n'avons pas encore défini ce que signifie message.Message() ainsi que startline(). Dans le programme principal, nous pouvons maintenant procéder à la définition de l'extraction.

#!/usr/bin/env python3.3
# encoding: utf-8
"""
http/message.py

Created by Karl Dubost on 2013-03-11.
Copyright (c) 2013 Grange. All rights reserved.
see LICENSE
"""

class Message():
    """HTTP Message basic Structure:
    * start-line
    * headers
    * body

    HTTP-message = start-line
                   *( header-field CRLF )
                   CRLF
                   [ message-body ]

"""

    def __init__(self, message_body=None, message_headers=None, message_startline=None):
        self.fullmessage = ""
        self.message_body = message_body
        self.message_headers = message_headers
        self.message_startline = message_startline

    def startline(self):
        "return the startline of an HTTP message."
        startline = self.fullmessage.splitlines()[0]
        return startline

Cette fois, nous pouvons éxécuter les tests et obtenir la première ligne du message. On peut ainsi au fur et à mesure explorer les contraintes de la spécification ligne par ligne. Ainsi il est mentionné que

A sender MUST NOT send whitespace between the start-line and the first header field. The presence of such whitespace in a request might be an attempt to trick a server into ignoring that field or processing the line after it as a new request, either of which might result in a security vulnerability if other implementations within the request chain interpret the same message differently. Likewise, the presence of such whitespace in a response might be ignored by some clients or cause others to cease parsing.

Nous pouvons créer quelques tests pour ceci. Dans le programme de tests, j'ajoute

import os

et je définis une « constante » pour le caractère de séparations de lignes qui est différent en unix, macos et windows. Ainsi je rend le programme indépendant de la plateforme.

CRLF = os.linesep

Et le test supplémentaire pour tester la présence de l'espace au début ou à la fin de la première ligne du message.

    def test_no_whitespace_startline(self):
        """Is there a whitespace at the end of startline.
        A sender MUST NOT send whitespace between the start-line
        and the first header field.
        """
        expected = "GET /love HTTP/1.1"
        msg = message.Message()
        msg.fullmessage = "GET /love HTTP/1.1 %sHost: example.org" % (CRLF)
        actual = msg.startline()
        self.assertEqual(actual, expected)
        msg.fullmessage = " GET /love HTTP/1.1%sHost: example.org" % (CRLF)
        actual = msg.startline()
        self.assertEqual(actual, expected)

Dans le code lui-même, je change startline

    def startline(self):
        "return the startline of an HTTP message."
        startline = self.fullmessage.splitlines()[0]
        # remove any spaces before and after
        startline = startline.strip()
        return startline

Et voilà j'en ai fait quelques autres, je ne sais pas si c'est intéressant pour vous, ou si vous pensez que je devrais le mettre en ligne. Certains ne sont pas complets, juste des tests à écrire.

def test_parsing_ascii_superset(self):
def test_startline_type(self):
def test_start_line_server(self):
def test_start_line_client(self):
def test_no_whitespace_startline(self):
def test_parsing_reject(self):
def test_request_line_single_SP_after_method(self):
def test_request_line_SP_end(self):
def test_request_line_ends_CRLF(self):
def test_request_method_case(self):
def test_request_special_method(self):
def test_request_target_with_SP(self):
def test_parsing_request_line_in_component(self):
def test_response_to_invalid_requestline(self):
def test_recipients_redirect_invalid_requestline(self):
def test_method_too_long_501(self):
def test_server_uri_too_long(self):
def test_8000_octets_mini_requestline_length(self):
def test_status_code_is_digits(self):
def test_status_code_is_len_3(self):
def test_reason_phrase_parsing(self):
def test_reason_phrase_valid_char_only(self):

April 17, 2013 03:07 PM

April 14, 2013

David Larlet

Être geek

Si j'en crois les récents et moins récents billets, le geek serait un paralytique. Doublé d'un perfectionniste à la limite de l'autisme. Dur.

Difficile pour moi car c'est justement ce que je considère être la définition du geek : non pas celle de la paralysie mais celle de la curiosité (maladive parfois, soit). Pour moi le terme « geek » n'est plus du tout connoté informatique et encore moins lié à une culture, c'est le fait de pouvoir se renseigner dans un domaine particulier de façon efficace et rationnelle.

Cette faculté se développe souvent au service de la consommation car cela permet de croiser facilement des données tangibles mais pas uniquement. Il y a des geeks dans tous les domaines qui vont être à la recherche de la rareté, de la qualité, de l'esthétique dans leurs professions et/ou dans leurs loisirs. Qui vont se réaliser dans l'apprentissage de nouveaux métiers qui ne leur serviront parfois qu'une fois dans leur vie mais ils auront au moins eu le sentiment d'avoir essayé de bien le faire (de façon insatisfaisante d'après eux mais c'est un autre débat).

Revenons à l'informatique, connaissez-vous un autre métier qui génère autant de diversité ? On pourrait y voir un manque de maturité du domaine tout jeune, j'y vois plutôt cette approche geek poussée à l'extrême : creuser tout ce qui peut l'être, faire pousser l'arbre des possibles autant que cela est faisable, rejoindre un horizon qui en ouvre tant d'autres. La chance de l'informatique ce n'est pas d'être un secteur encore à défricher mais un catalyseur à personnes curieuses. Et c'est la raison pour laquelle j'aime mon métier, en mouvement :-).

April 14, 2013 11:00 PM

April 13, 2013

Karl Dubost

Le partage n'est pas inné

Personnes dans la rue la nuit Tokyo, Japon, 27 mai 2003

La grande nuit terrienne n'est pas faite de terriers, mais de malentendus éparpillés. Batailler contre l'absolu de s'enfouir et de se taire.

René Char, Recherche de la base et du sommet.

Lorsque nous sommes baignés depuis longtemps dans un mode de pensée, nous avons tendance à oublier que ce qui participe d'une évidence ou au moins d'un naturel ne l'est probablement pas pour les autres. La culture du partage s'apprend ; elle n'est pas innée.

Lorsque j'ai commencé ce site Web et avant cela la photographie, j'avais une notion commune de la propriété intellectuelle, celle que tout le monde nous enseigne dans la presse, à l'école, dans les livres, dans les mots du quotidien. Notre idée de l'artiste, de l'auteur, du créateur est un concept fabriqué comme tout ce qui participe à notre culture. Nous pensons au créateur parce qu'on nous a appris à penser au créateur. Comme dans tout système culturel validé par une communauté suffisamment importante, un appareil législatif, structurel, commercial se met en place au sein du système. Le code de la propriété intellectuelle fait partie de ce système articulant et reconnaissant le travail du créateur dans nos sociétés.

Donner des nuances à un système culturel dominant est un exercice douloureux pour chacun. Que ce soit en tant que créateur, nous devons alors combattre notre réflexe naturel de la propriété de notre création. Que ce soit lorsque nous dialoguons avec les autres de leurs créations. Je me souviens que sur ce site même, lorsque les personnes faisaient des liens directs sur mes images (« hotlinking ») sans mentionner mon nom ou l'origine de l'image, j'adoptais une attidude défensive à la fois technique et humaine. Je n'admettais pas que l'on utilise mon travail sans même un remerciement.

Ce n'est qu'après un long travail sur soi de quelques années, que progressivement, je suis devenu de plus en plus flexible. En enlevant les anti-hotlinking, en faisant évoluer la licence du site, en arrêtant de me soucier si mes images étaient utilisées ailleurs. La démarche de partage et la possibilité de création ou d'expression des autres sont devenues plus importantes pour moi que celle de la propriété de la création. Ce n'est plus ce que j'ai créé qui m'importe, mais bien ce que je peux et vais créer dans le futur qui est mon moteur. D'autant plus que ma capacité à créer est liée à l'ensemble des cultures et des œuvres partagées avant moi.

April 13, 2013 04:59 PM

Les technologies disparaissent aussi

Site Web sur téléphone mobile Boston, États-Unis, 3 mars 2003

J'ai cherché dans mon encre ce qui ne pouvait être quèté : la tâche pure au-delà de l'écriture souillée.

René Char, Recherche de la base et du sommet.

La conquête de l'espace aérien débute à la fin du XIXe siècle, les technologies et leurs dénominations émergent rapidement. Certaines survivent, d'autres s'éteignent. Dans ce cas ci, les termes d'aéroplane et dirigeable ont disparu du discours principal en 30 ou 40 ans.

graphe de fréquence Recherche des termes aéroplane, dirigeable, avion

Quels seront les technologies dont nous parlons tant aujourd'hui et qui auront complètement disparu du haut de l'affiche d'ici 30 ans. Le DVD va probablement connaître son extinction. La K7 audio a pratiquement disparu. Les VHS… sont en cours de disparition.

Les salles de cinéma ? Les livres au format papier ? Les livres au format ePub ? (Mon impression est que l'ePub va disparaître beaucoup plus vite que le papier). L'automobile à essence ? Le téléphone mobile ? La première image de ce billet est le site Web du W3C sur un téléphone Ericsson dans Opera 6, il y a tout juste 10 ans.

April 13, 2013 04:25 PM

April 12, 2013

del.icio.us

Karl Dubost

L'hôtel particulier de Mozilla

salle avec dorures Salle intérieure de l'hôtel Mercy d’Argenteau

Our mission is to promote openness, innovation & opportunity on the Web.

Mozilla, Mission.

Mozilla France a déménagé dans de nouveaux locaux au 16, rue boulevard Montmartre à Paris. Comme le bâtiment de style 18eme siècle est particulièrement remarquable (bien que pas très à mon goût), la presse en parle. Laurent a écrit un billet sur le lieu, ce qui en retour a piqué ma curiosité pour en savoir un peu plus. Laurent et moi échangeons des informations dans les commentaires de son billet.

Le propriétaire en 2013 de l'ensemble de l'immeuble, dont Mozilla ne loue qu'une partie, est Gecina.

Les personnes

Portrait de Jean-Joseph de LabordeL'hôtel particulier a été construit en 1778. Firmin Perlin est l'architecte. Il avait alors 31 ans. Il est mort à l'âge de 36 ans de turberculose.

Le client Jean-Joseph de Laborde (sur la droite) réalise sa fortune sur le commerce des biens rares tels que les fruits et les essences d'arbres tropicaux. Il participe à la traite des esclaves également. Il semble posséder de nombreuses propriétés. Il sera guillotiné en 1794. Sur Gallica, on peut trouver les listes des guillotinés par le tribunal révolutionnaire. Ces listes sont terrifiantes. Elles énumèrent des personnes de toutes conditions sociales jugées et exécutées aussitôt.

liste de noms Salle intérieure de l'hôtel Mercy d’Argenteau

Portrait de Florimond de Mercy-ArgenteauJean-Joseph ne semble ne pas avoir gardé le bâtiment longtemps qui est aussitôt revendu ou cédé au comte de Mercy-Argenteau, alors ambassadeur d'Autriche. Mais ce n'est pas si clair. Toutes les sources d'information sur wikipedia semblent répéter la même histoire. Les deux personnes semblent avoir été proches et leurs maisons étaient proches selon l'introduction de ce livre publié en 1889, Correspondance secrète du comte de Mercy-Argenteau avec l'Empereur Joseph II et le prince de Kaunitz.

M. de Mercy était surtout très étroitement lié avec le grand banquier Jean-Joseph de Laborde, un des hommes qui honorèrent le plus la nation française à la fin de l'ancien régime.

L'origine de leurs relations se devine aisément. En 1760, M. de Laborde avait épousé une des filles de Mme Nettine, qui dirigeait à Bruxelles la grande maison de banque, chargée des affaires de la cour de Vienne aux Pays-Bas. Cette dame était en outre l'amie intime du comte de Cobenzl, le ministre qui était à la tête de l'administration des Pays-Bas autrichiens et elle avait toute la confiance de l'Impératrice et du prince de Kaunitz qui avait les Pays-Bas dans ses attributions. Comme M. de Laborde était à Paris le représentant de sa belle-mère, il avait forcément des relations avec les ambassadeurs impériaux, qui devaient être trop heureux de pouvoir fréquenter une maison agréable, où la meilleure société de Paris se donnait rendez-vous. On y rencontrait entre autres le prince de Conti, Mme de Brionne, le duc de Gontaut, la duchesse de Gramont et son frère le duc de Choiseul, qui donnait en toute occasion les preuves de la plus vive amitié à M. de Laborde, qui de son côté lui rendait les plus grands services. Aussi lorsque M. de Mercy fut admis dans l'intimité de la famille de Choiseul, à la fin de l'année 1768, il devint en même temps l'ami de M. de Laborde, qui dès lors est souvent nommé dans les dépêches de l'ambassadeur. Cette intimité s'accrut encore, en 1778, quand M. de Mercy fut venu habiter son hôtel sur le boulevard, qui était tout à côté de l'hôtel de M. de Laborde, situé rue Grange-Batelière W. M. de Mercy devint alors l'un des familiers les plus assidus de la maison de Laborde. Non seulement il y trouvait des amis sûrs et dévoués, un homme du plus grand mérite et une femme de premier ordre, qui savaient attirer chez eux la meilleure société de Paris, mais il recueillait dans ce salon des mieux informés les plus précieux renseignements sur les affaires d'Etat comme sur celles des particuliers et il en profitait pour augmenter l'intérêt de ses dépêches. En outre, M. de Laborde par sa position pouvait lui fournir les notions les plus certaines sur les intrigues de cour, sur l'état du Trésor royal, sur la situation économique de la France, etc.

Arneth, Alfred von., Correspondance secrète du comte de Mercy-Argenteau avec l'Empereur Joseph II et le prince de Kaunitz.

Une note de pied de page précise

M. de Laborde, qui possédait presque tout ce quartier qu'il avait complètement transformé en y perçant des rues et en y bâtissant un grand nombre de maisons, avait sans doute cédé à M. de Mercy un terrain pour y bâtir son hôtel. Nous savons que M. de Laborde, qui s'occupait de la fortune de ses amis, prenait soin des affaires de M. de Mercy comme des affaires du duc de Choiseul. C'est en l'hôtel de M. de Laborde que fut signé le 26 septembre 1775 le contrat passé entre le comte de Mercy et le marquis de Castellane pour la baronnie de Conflans.

Arneth, Alfred von., Correspondance secrète du comte de Mercy-Argenteau avec l'Empereur Joseph II et le prince de Kaunitz.

Difficile de savoir donc pour qui Firmin Perlin a vraiment construit l'hôtel particulier du boulevard Montmartre et avec quel argent. Cependant on trouve aussi dans le texte, la mention suivante à la page XXVI

En quittant son palais de la rive gauche, M. de Mercy alla habiter le superbe hôtel qu'il venait de se faire bâtir sur le boulevard Richelieu, aujourd'hui des Italiens, vis-à-vis la rue de Richelieu. Cette maison était assez remarquable pour que les guides de ce temps la signalassent à l'attention des provinciaux et des étrangers.

Arneth, Alfred von., Correspondance secrète du comte de Mercy-Argenteau avec l'Empereur Joseph II et le prince de Kaunitz.

Et une autre note de pied de page

Voici ce que nous en dit Hardy à la date du 9 juin 1778 : « Ce jour, me promenant sur les boulevards anciens, depuis la porte Saint-Martin jusqu'à la place Louis XV, je remarque… que depuis trois ou quatre ans on avait élevé de droite et de gauche, jusqu'à l'entrée du faubourg Saint-Honoré, de superbes maisons dans la construction desquelles on voyait briller et les talents de nos modernes artistes et le goût actuellement décidé des Parisiens pour le luxe et la décoration. Le comte de Mercy, ambassadeur de l'Empereur à la cour de France, originaire d'Italie et l'un des plus riches seigneurs de la cour impériale, qui avait obtenu de son souverain la permission de se fixer pour toujours dans notre capitale, était du nombre de ceux qui s'y faisaient préparer à grands frais un logement spacieux et magnifique. » (Journal de Hardy, t. III, p. 5oo, Mss. fr. de la Bibl. nat., vol. 6682.)

Grimm, dans un mémoire à Catherine II, écrivait en 1797 : « Un cas bien plus remarquable est celui du comte de Mercy-Argenteau, ambassadeur de la cour de Vienne en France, où il avait acheté des terres considérables et bâti à Paris un superbe hôtel pour habitation. Il avait d'ailleurs une fortune im mense, dont sûrement une grande partie était placée en France, puisqu'il comptait comme moi y passer sa vie. » (Correspondance littéraire, édition M. Tourneux, t. 1, p. 47.)

Thierry, Guide des amateurs et des étrangers a Paris, Paris, 1786, in- n, t. I,p. 188, et Watin, Le Provincial à Paris, quartier du Louvre, Paris, 1787, in-24, p. 18.

En 1795 l'hôtel de Mercy portait le n° 24 du boulevard de la Loi; mais jusqu'ici nous n'avons pas réussi à déterminer exactement l'emplacement de la maison qui le représente aujourd'hui; cela n'a pas d'ailleurs d'importance pour l'objet qui nous occupe.

Arneth, Alfred von., Correspondance secrète du comte de Mercy-Argenteau avec l'Empereur Joseph II et le prince de Kaunitz.

Il y a de nombreuses autres références dans le texte. Le boulevard semble s'appeler Boulevard de Richelieu. Tout ceci est assez confus finalement. Il semble qu'il soit venu habiter l'hôtel à partir de 1778 seulement.

Le bâtiment

Le bâtiment construit sur le boulevard Montmartre fût quitté par Mercy-Argenteau un peu après la Révolution Française. Je suppose que cela devenait trop dangereux de rester. L'hôtel avait bien moins d'étages au tout début de sa construction. Il a été agrandi au siècle suivant. Dans un document de la Commission du Vieux Paris (pdf) du 27 novembre 2008, on peut trouver une reproduction de la façade du bâtiment original.

plan du bâtiment façade de l'hôtel Mercy d’Argenteau

1824 Le Grand Cercle. Il s'agit d'un lieu de jeu. Sa fondation remonte à 1824 un "Jockey-Club"pour généraux en retraite disaient les mauvaises langues. Situé presque en face du théâtre des Variétés, le cercle reprenait vie après la fermeture de celui-ci, les vieux barbons venant se reposer des émotions du foyer des artistes. On ne jouait pas de grosses sommes dans cet établissement de jeu qui ne fit pas beaucoup parler de lui sauf au moment de sa fermeture qui fut un scandale.Autour du Père Tanguy

Sur une gravure réalisée par Benjamin Pépiot en 1860, on peut voir l'hôtel avec déjà tous ses étages.Selon

Détail d'une gravure montrant des immeubles hôtel Mercy d’Argenteau sur la droite (complet)

Un peu plus d'informations sur une page dédiée aux rénovations récentes de l'hôtel particulier :

Amputé de ses communs et de ses jardins à la Révolution, il est surélevé de trois étages entre 1827 et 1829, augmenté de deux ailes sur cour et devient un immeuble de rapport. Il hébergera au Second Empire des cercles mondains très en vogue. En 1890, il est agrandi d’une vaste salle des fêtes attribuée à Charles Garnier, inscrite à l’inventaire supplémentaire des Monuments Historiques, tout comme le salon n° 2 du 1er étage, orné de colonnes corinthiennes.

1867 : le Cercle comptait plus de cinq cents membres — Autour du Père Tanguy

1876 : un nouveau nom est adopté Cercle des Ganaches, né de la fusion du Cercle Général du Commerce et de l'ancien Cercle. Surveillance rapproché par la police. — Autour du Père Tanguy.

20 janvier 1894 : le préfet de Police Lépine faisait fermer le Grand Cercle, à la suite de nombreux rapports signalant la présence aux côtés du propriétaire d'un escroc international, "un nommé Mariovaldi (sic) dit Fabian Guagni dont les exploits ne sont plus à compter et tellement de notoriété publique, qu'il lui est impossible depuis de longues années de fréquenter le dernier des tripots de France C'est pour cela qu'il en était réduit à opérer sur les paquebots à l'étranger" (...) En compagnie de Monsieur Ardisson, l'auteur du scandale de l'Epatant, il fut de s'enfuir du Cercle de l'Union à Hambourg où il venaiit de dépouiller les joueurs d'une centaine de mille francs (expulsé de Baden-Baden. Ce monsieur faisa_it partie de la bande de détrousseurs composée de Belliard, Maria et consors est un grec des plus dangereux(...) extrait d'un rapport de police de décembre 1892.Autour du Père Tanguy.

Les cartes

2013 : le 16 du boulevard Montmartre sur OpenStreetMap.

Carte OpenstreetMap au lieu de l'hôtel OpenStreetMap 2013

1773 : Sur le plan du quartier Montmartre de Jean-Baptiste-Michel Renou de Chauvigné dit Jaillot, on peut remarquer un grand jardin au niveau du 16 actuel. Il n'existe alors que quelques hôtels particuliers et des fermes. Le plan pourrait avoir été dessiné avant 1773. Il est publié en 1773.

Détail du plan Plan du quartier Montmartre, 1773

1778 : Construction de l'hôtel

1779 : Plan de la ville et fauxbourgs de Paris avec tous les changements et les édifices les plus récents.

Détail du plan Paris, 1779

1780 : Un autre plan, Nouveau plan routier de la Ville et Fauxbourgs de Paris en 1780 semble montrer un bâti tout autour du bloc de rue avec des jardins intérieurs, mais sans grands détails.

Détail du plan Paris, 1780

1783 : Nouveau Plan de Paris, avec les augmentations et changements qui ont été faits pour son embellissement. Très similaire.

Détail du plan Paris, 1783

Boulevard Montmartre

Le boulevard Montmartre était le boulevard Richelieu.

Dans un livre de 1863 sur l'histoire des boulevards

Derrière l'autre rangée d'arbres, parmi les maisons qui surgissent sur d'autres terrains vendus par la famille Choiseul à Dumont, à Forget, à Laborde, à Vessu, voici une propriété établie sous Louis XVI pour M. de Bospin, à l'un des angles de la rue Le Peletier.

[…]

Le Cours, où des arbres furent plantés en 1676, se divisa postérieurement en boulevards de divers noms, et le boulevard Poissonnière fut longtemps dit boulevard Montmartre. Celui qu'on connaît à présent sous cette dernière dénomination s'appelait boulevard Richelieu.

[…]

Notre notice sur la rue Drouot a déjà donné l'historique de la grande propriété située à l'opposite sur le boulevard. La maison adjacente qu'occupe l'ancien cercle a été un hôtel Mercy. Le comte de Mercy-d'Argenteau , ambassadeur du saint-empire, y résida, comme à l'hôtel d'Augny. On accusa ce diplomate, au commencement de la Révolution, d'être à Paris le directeur du comité autrichien, et il se retira à Bruxelles en septembre 1790.

Son frère, dans le même temps, épousait une cantatrice du nom de Levasseur , sa maîtresse, qui devint ainsi baronne du saint-empire, vicomtesse de Mercy-d'Argenteau. L'ambassadeur mourut à Londres quatre ans après; l'autre servit, comme général, dans les armées autrichiennes, et ne cessa de vivre qu'en 1815.

Charles Lefeuve, Histoire des boulevards des Italiens, Montmartre, Poissonnière, Bonne-Nouvelle et Saint-Denis.

En 1905, livre sur l'histoire de la famille Mercy-d'Argenteau

Le comte de Mercy-Argenteau, qui avait pris pour règle de suivre les traditions fastueuses du prince de Kaunitz, s'installa en prenant possession de l'ambassade d'Autriche, au palais du Petit-Luxembourg, qu'il avait loué au prince de Condé(1). C'est là qu'il résida de 1766 à 1778 et qu'il reçut l'empereur Joseph II, lors de son voyage en France en 1774.

Le comte de Mercy ne tarda pas à gagner la confiance du duc de Choiseul, chef du ministère français, avec lequel il négocia et mena à bonne fin le mariage de l'archiduchesse Marie-Antoinette avec le dauphin de France, plus tard Louis XVI. Ce mariage resserrait l'alliance Austro-Française, oeuvre du prince de Kaunitz et comblait les voeux de l'impératrice Marie-Thérèse.

(1) Aujourd'hui, la résidence du président du Sénat; il quitta ce palais en 1778, pour aller habiter un superbe hôtel qu'il avait fait bâtir au boulevard Richelieu, aujourd'hui des Italiens, vis-à-vis de la rue Richelieu.

Eugène Poswick, Histoire de la seigneurie libre et impériale d'Argenteau et de la maison de ce nom, aujourd'hui Mercy-Argenteau.

Dans les procès verbaux de la Commission municipale du Vieux Paris, on trouve :

Quelques auteurs ont affirmé que le comte de Mercy-Argenteau avait habité cet hôtel. Cette affirmation est probablement erronée, les Almanachs royaux, jusqu'à celui de 1790, indiquant ce personnage comme logeant au boulevard Richelieu :

« M. le Comte de Mercy-Argenteau, Ambassadeur de l'Empereur, roi de Hongrie et de Bohême, au Boulevard Richelieu. »

D'ailleurs, Thiery dit, en parlant de la rue Grange-Batelière :

« … Revenant sur vos pas, vous verrez encore de beaux hôtels avant d'arriver au Boulevard, sur lequel vous remarquerez celui occupé par M. le Comte de Mercy-Argenteau, Ambassadeur de l'Empereur (1). »

Il ne paraît donc pas y avoir de doute dans ce texte, en ce qui concerne la situation, sur le boulevard, de l'hôtel du célèbre diplomate.

Commission du Vieux Paris, Procès verbaux - Commission municipale du Vieux Paris.

Voir aussi Commission du vieux Paris - 21 avril 2009 (pdf)

Le passage est extrait du guide de Luc Thiéry à la page 188.

Voir Ailleurs

April 12, 2013 01:38 PM

April 09, 2013

Karl Dubost

Les salauds du livre

trois hommes autour d'une table Les salauds dorment en paix, Akira Kurosawa

La vie est cynique. Notre relation l'est aussi.

Akira Kurosawa, Les salauds dorment en paix.

Depuis quelques jours, le monde du livre discute. Voici ce que je retiens des lectures des commentaires et des billets chargés d'invectives. Ce ne sont pas mes propos.

  • L'état. Salaud car il détourne les lois européennes et le code de la propriété intellectuelle.
  • La BNF. Salaud car elle négocie dans l'opacité contre les auteurs.
  • L'éditeur. Salaud car il profite de l'argent public pour éditer en numérique alors qu'il n'a pas bougé le petit doigt avant.
  • L'auteur. Salaud car il ne considère pas l'intérêt public et s'accroche au code de la propriété intellectuelle.
  • Le lecteur. Salaud car il ne respecte pas l'auteur et « le lit mal » (sic).

Vraiment ? Est-ce vraiment le monde que nous voulons ? Réveillez-vous.

April 09, 2013 01:27 PM

Trouver le premier et le dernier jour du mois (Python)

Lampe dans une rue sombre 26 mars 2008, Tokyo, Japon

Le jour et la nuit ne sont-ils que des hallucinations de passant ? Que voient les emmurés ? L'oubli ? Leurs mains ?

René Char, Recherche de la base et du sommet.

Afin de pouvoir calculer le temps écoulé entre une date précise et le début du mois, ou bien la fin du mois, il est nécessaire de déterminer le premier jour et le dernier jour de ce mois.

Le premier jour du mois est facile à obtenir. Le dernier jour du mois est variable. Il est soit le 28, 29, 30 ou 31. Le plus simple est donc de rechercher le premier jour du mois suivant (stable) et de soustraire 1 seconde pour obtenir le dernier jour du mois en cours. Bien sûr uniquement pour les dates récentes, le calendrier a évolué, changé dans le passé.

#!/usr/bin/env python
# encoding: utf-8
"""
Compute first and last day of the month for a precise date.
Python 3

Created by Karl Dubost on 2013-04-03.
MIT License.
"""

import datetime


def month_range(datetime_object):
    """give the first and last day of the month for this day"""
    # getting the month
    first_month = datetime_object.month
    # getting the year
    first_year = datetime_object.year
    # Computing the first day.
    # It is always the first of the month
    first_day = datetime.datetime(year=first_year, month=first_month, day=1)
    # computing the last day
    # The last day of the month can be 28, 29, 30, 31.
    # So we increment to the first day of next month at midnight and remove 1 second.
    if first_month == 12:
        last_day = datetime.datetime(year=first_year, month=12, day=31, hour=23, minute=59, second=59)
    else:
        last_day = datetime.datetime(year=first_year, month=first_month+1, day=1) - datetime.timedelta(seconds=1)
    return first_day, last_day


def main():
   # given a date string
   date_string = "2013-04-03T16:27:00"
   # convert it into a python datetime object
   date_object = datetime.datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S")
   # return a tuple being the first and last day of the month for this date
   print(month_range(date_object))

if __name__ == '__main__':
    main()

Comme d'habitude, avec l'espoir que ce soit utile pour les autres.

Module calendar en Python

Une autre solution proposée par Yves Lafon (quelques minutes plus tard)

→ python3
Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 01:25:11)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import calendar
>>> calendar.monthrange(2013, 2)
(4, 28)

calendar.monthrange(year, month) renvoie le jour de la semaine du premier jour du mois, ainsi que le nombre de jours dans le mois.

April 09, 2013 10:33 AM

April 08, 2013

Karl Dubost

Habiter la globalisation

Rue d'un village de conteneurs Village de conteneurs. Mars 2013, Aly Song, Reuters ©.

L'orage a deux maisons. L'une occupe une brève place sur l'horizon ; l'autre, tout un homme suffit à peine à la contenir.

René Char, Recherche de la base et du sommet.

Le conteneur est une unité symbolique de la globalisation. Il représente les échanges des biens matériels. Tout ce qui se déplace est échangé à travers le monde passera par un conteneur. Devenu commun, il devient objet de travail, de transformation, de détournement et de création. On le transforme en appartements pour étudiants. Il est également décliné à tous les barreaux de l'échelle sociale en Chine.

Dacheng est spécialisé dans la création de structure de métal. Il vous en coûtera de 2,850 à 6,000 dollars US pour avoir votre boîte de métal.

conteneurs alignés en grand nombre Parc d'achat des conteneurs pour Dacheng.

Bien sûr, les riches ont tout prévu et ne voulaient pas être en reste. Il existe donc maintenant un hôtel cinq étoiles pour passer la nuit dans un conteneur.

Cependant la réalité urbaine du conteneur se décline surtout comme hébergement de fortune pour les migrants des provinces chinoises attirés par le travail dans les fortes zones industrielles autour de Shanghai, Shenzhen, etc. Les centre-villes sont souvent été rasés pour être reconstruits en logements plus salubres mais inabordables pour les migrants. Ils s'installent donc dans les conteneurs pour leur maison et leurs commerces locaux. Les conteneurs sont loués 500 Yuans par mois.

Rue d'un village de conteneurs Village de conteneurs. Mars 2013, Aly Song, Reuters ©.

April 08, 2013 08:14 PM

Hanami, la fiction en flocons

chemin sous les cerisiers en fleurs 29 mars 2008, Tokyo, Japon

Le poète : Les orangers déjà sont en fleur, le pêcher fait son averse. D'autres arbres vont bientôt suivre. Mais leur maturité est insérée dans une unique saison. Tandis qu'ici…

René Char, Recherche de la base et du sommet.

Chaque jour, un pétale se détache du monde. À travers les océans et les continents, la joie se communique avec l'onde. L'ivresse accompagne la chute des flocons du printemps japonais. Alors nous rêvons et nous trinquons au delà des fuseaux horaires. Le monde est dense. Nos amis sont proches.

Que nous vaut l'ivresse quand la chair n'y est pas. Sous nos cerisiers, les voix s'imaginent. Nous crystalisons le bonheur. La fiction y est un corps étrange. La vibration des mots qui tremble dans nos coffres respectifs, ceux là, il faudra les créer de nouveau.

April 08, 2013 07:18 PM

Le processus de création confronté au quotidien

hommes face à la mer Les pêcheurs, Kanae Yamamoto

Tant de mots sont synonymes d'adieu, tant de visages n'ont pas d'équivalent.

René Char, Recherche de la base et du sommet.

Kanae Yamamoto a relancé l'Ukiyo-e (estampe gravée sur bois) au début du 20eme siècle. L'imagerie populaire des ukiyo-e s'appuie sur une reproduction de masse commerciale, le « pop art » avant l'heure. L'imprimerie et les encres chimiques ne feront qu'accélérer le processus, et puis finalement le tuer. Le système de création des ukiyo-e est un système traditionnel réparti, composé de :

  • l'artiste
  • le graveur sur bois
  • l'imprimeur
  • l'éditeur

Kanae Yamamoto et quelques autres artistes veulent en s'appuyant sur une idée de l'artiste maître de l'ensemble de son processus de création de créer un nouveau mouvement : Sōsaku-hanga. L'artiste doit maîtriser tout le processus de création et être à la fois peintre, graveur, imprimeur. D'une culture du travail combiné des artisans, on passe à une culture de l'artiste maître poussée par les nombreux artistes japonais qui ont séjourné en Europe. L'artiste avec un « moi » affirmé commence à apparaître en 1910 dans un essai de Takamura Kotaro intitulé Soleil Vert et publié dans le magazine Subaru (2–4 Avril 1910, p. 23–29). Il appelle à l'indépendance artistique Si une personne peint un « soleil vert, » je ne dirais pas que c'est incorrect. Car il y a des moments où le soleil ressemble à cela pour moi, aussi. Simplement parce-qu'une peinture contient un « soleil vert, » je ne seraias pas capable d'ignorer la valeur d'ensemble de la peinture. Le bon ou le mauvais de la peinture n'a rien à voir avec le fait que le soleil soit vert ou rouge enflammé. Et un peu plus loin, il poursuit par J'aimerais permettre la Persoenlichkeit de l'artiste qui a peint un soleil vert d'avoir une autorité absolue.

Tout ceci se pose dans un contexte historique bien particulier, la difficulté de créer pour certains artistes. Que ce soit les impressionnistes en France raillés par les critiques ou bien les jeunes artistes japonais revenant de Paris s'affrontant au mur des artistes établis. L'histoire est bien souvent la même, une nouvelle ère, une nouvelle période, de nouveaux moyens, de nouvelles règles esthétiques. Les anciens résistent aux modernes, les excluent, les moquent ou les transforment en destructeurs du passé. L'appareil culturel des anciens est l'art établi avec ses règles, ses circuits économiques, ses systèmes de validation. Les modernes ne rentrent pas dans le moule et sont donc perçus comme une menace. Et qu'on ne se fasse pas d'illusions, les modernes deviendront des anciens s'ils finissent par s'établir comme référence.

Nous le vivons aujourd'hui dans le monde des arts classiques confrontés au monde numérique et à ses explorations de réseau. L'erreur est bien souvent de penser que c'est le fait que la création soit numérique. C'est en partie le cas. Ce qui a beaucoup modifié les relations et poussé les frontières—et ce n'est que le début—c'est la numérisation connectée. L'accélération électrique de l'échange immédiat change beaucoup de choses dans notre relation à cette même information, à sa valeur, à son évolution, à sa mixité créative.

On peut difficilement se revendiquer d'une exploration de nouveaux territoires et dès que le territoire est menaçant soudainement se rappatrier sur la sécurité du système des anciens. Le pas de rêverie vers les nouveaux territoires est à la fois douloureux et libérateur.

April 08, 2013 03:03 AM

April 07, 2013

Gautier Poupeau

Petite Poucette au secours de l'Open Data

Dans mon précédent billet, j'avais qualifié l'Open Data « d'échec total » sans beaucoup plus d'explications. Il me semble important de justifier ce propos et de le dépasser, d'autant que cela a pu blesser certaines personnes qui se battent au quotidien pour mettre à disposition ces données ce qui n'était pas mon objectif. Il m'a fallu un peu de temps, car il m'a été difficile de mettre des mots précis sur ce qui relevait plus d'un sentiment ou d'une intuition.

De l'échec de l'Open Data

Si on jette un regard froid et objectif sur les retombées de l'Open Data, on peut évidemment n'être que déçu par le résultat :

  • la transparence : évidemment certaines données sont à disposition et c'est une avancée énorme, mais mes parents n'en connaissent pas l'existence et, quand bien même, ils sont incapables d'exploiter par eux-mêmes ces données, cela est réservé à une nouvelle élite de notre société : les personnes capables de manipuler un programme informatique pour transformer les données, faisons simple : les "geeks", est-ce vraiment cela la transparence que nous appelons de nos vœux ?
  • la réutilisation des données : la transparence passe par la mise au point d'applications et donc par la réutilisation des données, j'ai déjà montré dans mon précédent billet les obstacles qui se présentent aujourd'hui. Conséquences (ou pas...) : on ne peut pas dire que c'est le raz-de-marée, il y a bien des initiatives à droite à gauche, des applications pour téléphone portable, des prototypes ou quelques services qui ont profité des données mises à disposition comme en témoignent les résultats des multiples concours ou les hackatons, mais, et j'espère que cela ne vexera personne, cela reste anecdotique par rapport à tout ce qu'on est en droit d'attendre ou d'espérer ;
  • le marché économique : qui peut prétendre vivre de l'Open Data aujourd'hui ? Existe-t-il un marché ? Je ne parle pas de s'enrichir, je parle simplement de disposer d'un marché économique suffisant pour justifier les investissements publics sur le long terme et privés, déjà, sur le court et moyen terme nécessaires à la mise au point de solutions, de produits, de formations, de services adaptés et à la pérennisation de ces initiatives pour permettre la réutilisation et l'accessibilité des données indispensables pour apporter la transparence sur le long terme auprès de tous.
  • l'innovation : comme le résume Karima Rafes : « #hackaton ou la R&D du pauvre... Un bon titre pour un livre sur l écosystème français #OpenData » Rien de plus à ajouter...

Mais, ces constats m'apparaissent plus comme des symptômes d'un problème plus profond et plus complexe à qualifier. Le billet de Christian Fauré intitulé « Ce n'est pas qu'une histoire de données » offre un début de réponse. Christian y exhorte les institutions à ne pas limiter l'Open Data à la stricte mise à disposition des données et à profiter de ce mouvement pour placer leur activité dans le monde numérique, c'est-à-dire mettre l'activité de l'organisation dans l'espace de partage et de collaboration qu'est le web et ainsi profiter des avantages de ce milieu associé. Mais, cela ne me satisfaisait pas complètement, car, si Christian présente (rapidement) ce qu'il faudrait faire, cela n'explique pas le paradigme actuel et les raisons de son dysfonctionnement.

<!--break-->

De petite poucette de Michel Serres

Il me semble avoir trouvé certaines réponses dans l'ouvrage de Michel Serres petite poucette. A travers l'analyse des comportements des "jeunes" (la Petite Poucette et le Petit Poucet) et de certaines critiques faits à leur encontre, Michel Serres en appelle à la compréhension et au dialogue entre les générations pour construire une société nouvelle. Il me semble qu'il met finalement en avant la tension entre notre société du spectacle (médiatique, éducative, politique, judiciaire) telle que la définit Guy Debord et la société de l'information telle qu'elle se construit peu à peu. Celle-ci se définit par un accès immédiat et distribué au savoir et à la connaissance, remettant ainsi en cause les cadres de la société du spectacle qui se définit par la représentation du savoir, la "spectacularisation", via des experts et des sachants face au "vulgaire" (au sens étymologique)/au peuple/au citoyen lambda. Le savoir n'est finalement plus synonyme de pouvoir dans la société de l'information, puisqu'il est disponible et accessible à tous à tout moment. En de nombreux points, l'ouvrage de Michel Serres m'a rappelé l'intervention d'Olivier Dyens au colloque Les défis de la publication sur le Web : hyperlectures, cybertextes et méta-editions qui a eu lieu en décembre 2002 à l'ENSSIB (ça nous rajeunit pas...) : « Le Web et l'émergence d'une nouvelle structure de connaissances ».

Quel rapport entre l'Open Data et Petite Poucette ?

Si l'Open Data est aujourd'hui un échec, c'est précisément car il a été pensé au niveau des dirigeants et de l'institution (et je ne parle pas des opérationnels qui le font chaque jour) selon le paradigme de la société du spectacle, c'est-à-dire que l'institution reste au centre et donne à voir sa connaissance au citoyen lambda et non comme le moyen de partager et collaborer entre les différentes strates de la société. Pour le dire autrement avec le vocabulaire de Bernard Stiegler et Christian Fauré, alors que l'Open Data aurait dû être conçu selon les principes d'un milieu associé, il l'a été selon les principes du milieu dissocié. L'Open Data n'est finalement qu'un moyen offert aux hommes politiques de faire le buzz en se servant du prétexte de transparence (dévoyée comme nous l'avons montré ci-dessus) pour s'offrir en spectacle face à leurs administrés.

Je voudrais appuyer mon propos sur l'analyse rapide des deux paradigmes qui sont au centre de l'Open Data aujourd'hui : le portail et le fichier.

A travers le portail, l'État au sens large (l'état centralisateur et les collectivités territoriales) met en scène ses données. L'utilisateur doit se taire, attendre et subir ce que lui donne le producteur (cf. mon précédent billet...). Michel Serres démontre dans son livre que cette forme de passage du savoir est dépassée et explique le chahut et le brouhaha de la salle de classe, de l'amphi par l'accès immédiat des étudiants aux savoirs. Finalement, que nous apportent de plus les portails Open Data tels qu'ils sont conçus ? Pas grand chose. Bien-sûr les concours et autres initiatives de ce type sont conçus par leurs promoteurs (les opérationnels de tous les jours) comme des moyens de collaboration, mais pour les décideurs, ce ne sont que des moyens supplémentaires de mettre en avant leurs décisions d'avoir fait de l'Open Data et d'alimenter le spectacle, la démonstration de leur action publique.

Quant aux fichiers, ils constituent clairement un flux fini d'informations non mis en relation techniquement avec son contexte de production ni avec d'autres informations planquées au fin fond d'un autre fichier. Bref, il est l'antithèse du paradigme de distribution et de mise en relation que constituent les technologies du Web. Or, dans son livre, Michel Serres met en avant la formidable avancée que constitue la distribution du savoir et en appelle au dépassement du paradigme de la page, symbole d'un autre temps de fixation de la connaissance :

« ce format page nous domine tant, et tant à notre insu, que les nouvelles technologies n'en sont pas encore sorties. L'écran de l'ordinateur - qui lui-même s'ouvre comme un livre - le mime, et Petite Poucette écrit encore sur lui, de ses dix doigts ou, sur le portable, des deux pouces. Le travail achevé, elle s'empresse d'imprimer. Les innovateurs de toute farine cherchent le nouveau livre électronique, alors que l'électronique ne s'est pas encore délivrée du livre, bien qu'elle implique tout autre chose que livres, tout autre chose que le format transitoire de la page. Cette chose reste à découvrir. Petite Poucette nous y aide. » p. 32

Finalement, le fichier et le portail sont les héritières directes, la transposition dans le monde informatique, de la page/document et du livre/cours/émission par lequel passent les savoirs dans la société du spectacle.

Comment y remédier et faire avancer les choses ?

Sur le plan technique, il faudrait généraliser l'utilisation des technologies relationnelles seules capables de profiter et de faire profiter des avantages du milieu associé qu'est le Web et, en premier lieu, les technologies du Web sémantique. D'une part, par leur capacité à séparer les usages originels de la logique des données elles-mêmes, elles permettent de ne pas présager des usages futurs des données. D'autre part, par leur capacité à mettre en relation de manière distribuée des ressources hétérogènes, elles permettent de lier les différentes données au sein même d'une organisation et entre les organisations. Bref, elles sont à l'heure actuelle le meilleur moyen de garantir l'interopérabilité à court et moyen termes. Pour autant, cette opération est complexe, peut se révéler coûteuse et il est nécessaire de convaincre les décideurs du bien fondé de cette démarche. Or, ces derniers n'ont que faire de problématiques techniques. On peut le déplorer, je le déplore, mais c'est un fait.

Il faut placer le débat et la réflexion à un autre niveau : organisationnel et, oserai-je le dire, philosophique. L'Open Data est un moyen de repenser la place du numérique dans les organisations publiques, de dépasser la vision de simple gadget qu'il reste encore trop souvent. Par là, c'est la relation entre l'institution publique et les citoyens qu'il faut repenser dans une démarche véritablement collaborative et associée. Cela implique de placer l'Open Data au centre de la stratégie de construction des systèmes d'information des institutions publiques. L'Open Data ne doit pas être conçu en bout de chaîne mais dans une démarche globale de l'institution. De plus, il faut que l'Open Data soit pensé dans la perspective de réutilisation des données, c'est-à-dire dans une démarche de collaboration et de confiance avec les personnes et les organisations publiques et privées qui vont les réutiliser. Or, les concours et autres hackathons ne sont pas suffisants pour cela. Que peut y gagner l'institution qui fait ce pari ? Penser une nouvelle forme de rapport entre les citoyens et les institutions par une collaboration et une proximité rendue possible par la société de l'information naissante. Il en va finalement de sa considération par le citoyen et par là même de son existence :

« Les grandes institutions [ndla : Michel Serres les cite plus haut : "grandes machines publiques ou privées, bureaucraties, médias..."] [...], dont le volume occupe encore tout le décor et le rideau de ce que nous appelons encore notre société, alors qu'elle se réduit à une scène qui perd tous les jours quelque plausible densité, en ne prenant même plus la peine de renouveler le spectacle et en écrasant de médiocrité un peuple finaud, ces grandes institutions, j'aime le redire, ressemblent aux étoiles dont nous recevons la lumière, mais dont l'astrophysique calcule qu'elles moururent voici longtemps. Pour la première fois sans doute de l'histoire, le public, les individus, les personnes, le passant appelé naguère le vulgaire, bref Petite Poucette, pourront et peuvent détenir au moins autant de sagesse, de science, d'information, de capacité de décision que les dinosaures en question, dont nous servons encore, en esclave soumis, la voracité en énergie et l'avarice en production. Comme prend la mayonnaise, ces monades solitaires s'organisent, lentement, une à une, pour former un nouveau corps, sans aucun rapport avec ces institutions solennelles et perdues. Quand cette lente constitution se retournera soudain, comme l'iceberg de tantôt, nous dirons n'avoir pas vu l'événement se préparer » p. 66

L'Open Data est une chance donnée à ces grandes institutions pour intégrer et prendre en compte le nouveau monde de Petite Poucette. J'espère qu'ils la saisiront au risque de s'enfermer encore un peu plus dans l'incompréhension dont ils font preuve tous les jours (et l'actualité récente nous l'a encore malheureusement prouvé) et de voir le fossé entre l'institution et les citoyens se creuser encore un peu plus.

PS : je dédie ce billet à Alexandre Monnin dont les travaux prouvent que philosophie et technologies (du Web) ne sont pas incompatibles et qui défendra cette idée demain au cours de sa soutenance de thèse de philosophie et à Rémi Mathis victime collatérale de l'incompréhension dont font preuve certaines institutions publiques à l'égard du monde de Petite Poucette.

by got at April 07, 2013 07:53 PM

Karl Dubost

La sueur du tofu

condensation 15 mars 2013, Montréal, Canada

L'expérience que la vie dément, celle que le poète prèfère.

René Char, Recherche de la base et du sommet.

Juste au dessus, là où le bloc de tofu touche le ciel de sa pointe, la condensation s'est dissipée. La montagne se donne à voir, les nuages se sont alignés. Les deux coudes plantés dans la table de bois, le regard perdu sur les goutellettes, je rêve. Que la cuisine est belle quand elle invente des secrets.

April 07, 2013 03:19 PM

Marché Jean-Talon emballé

bâches entourant un bâtiment 3 mars 2013, Montréal, Canada

L'idéal, disait cet architecte, serait d'édifier une ville sans plis.

René Char, Recherche de la base et du sommet.

Je vous l'emballe ou est-ce pour consommer tout de suite ? Il nous faudra attendre le printemps tardif. L'hiver dure 6 mois et plus à Montréal. Et le marché retrouvera ces couleurs.

April 07, 2013 01:25 PM

Gérer le flux d'informations

Homme assis et statue de bouddha en vitrine 3 mars 2013, Montréal, Canada

La tentation de s'effacer derrière le pullulement des mains.

René Char, Recherche de la base et du sommet.

Tous les trois ou quatre mois, je réarrange les flux entrants de mon compte twitter. Je réduis les sources d'informations de façon à pouvoir continuer à gérer celles-ci. J'essaie de ne pas dépasser 150 et idéalement j'essaie de rester autour de 100. Je procède un peu de la façon suivante :

  1. Prendre la timeline avec les dernières publications
  2. Cliquer sur chaque compte twitter
  3. Regarder la fréquence et le contenu des messages
  4. Arrêter de suivre ce compte si je ne me sens plus/pas capable de gérer cette information

Mon incapacité à gérer une information entrante est complexe et je ne suis pas tout à fait sûr de connaître moi-même tous les critères mais en voici quelques uns :

  • Le volume (ou fréquence des messages) : Quand un compte émet beaucoup trop de messages, je deviens soit en incapacité de le lire, soit il écrase tous les autres dans le flux. Je lis mon compte twitter et je tiens à comprendre ce que lis. Je ne peux pas lire 1000 personnes.
  • Le ton du message : Les messages à caractères agressifs—c'est un sujet sur lequel je dois revenir un jour— et/ou négatifs ont un fort impact émotionnel. Je préfère rêver que d'avoir à gérer l'émotion que cela crée sur le long terme. Un seul tweet peut tourner dans votre tête pendant très longtemps.
  • Le contenu du message : Nos intérêts changent, nos envies de lire certaines choses aussi. Il y a des sujets qui ne m'intéressent pas ou plus beaucoup.

Il semble que je peine les gens lorsque je réalise cette nouvelle organisation. L'enjeu est peut-être que les réseaux sociaux invitent à amplifier la notion d'amitié dans le lien social. Hors ironie de la chose, si je soustrais les amis « geeks » (travaillant dans un milieu proche des technologies numériques) aucun de mes autres amies sont sur twitter. La réalité sociale est là aussi. Il est possible que je n'utilise pas les outils comme twitter de la même façon que la plupart des autres. Je ne sais pas. Je serais toujours un apprenti.

Aujourd'hui, on m'a demandé mais comment communiques-tu avec tes amis ? C'est simple. Les rencontres physiques, le courrier électronique, le courrier postal et parfois mais très rarement le téléphone (je n'aime pas le téléphone).

April 07, 2013 12:59 PM

April 06, 2013

Karl Dubost

Une identité et son histoire

Affiche se désagrégant 3 mars 2013, Montréal, Canada

Nous touchons au temps du suprême désespoir et de l'espoir pour rien, au temps indescriptible.

René Char, Recherche de la base et du sommet.

L'identité d'une personne est faite des scories d'actions persistantes et que l'on retrouve dans le passé, par la mémoire et par les écrits. Nous sélectionnons, nous oublions, nous nous désagrégeons. Les faits existent dans la matérialité de leurs supports. Il est sculpté, imprimé, reproduit et distribué. L'imprimerie a étendue notre identité dans un matériau extrêment durable, le papier, mais difficile à déplacer. L'accélération électrique a rendu cette matérialité innaccessible à notre regard. Il y a toujours stockage dans un matériau (magnétique, optique) sous forme d'unités électriques, mais cette matérialité est imperceptible physiquement pour les humains. Nous avons besoin d'outils externes afin de pouvoir agrandir et convertir l'information sur un support pour la rendre intelligible. La survie des faits et donc de notre identité n'est donc plus dans la durabilité du matériau conservant le message, mais bien dans la capacité à reproduire et reconvertir l'algorithme de conservation des faits. Les algorithmes de reproduction sont donc devenus essentiels.

L'accélération électrique a également changé brutalement l'immédiateté d'accès. Quelque soit le lieu sur Terre, il n'est pas plus éloigné d'un autre que 20 000 km environ. La vitesse du courant électrique dépend du matériau dans lequel il se propage. Dans le cuivre, elle est de 273 000 km/s. Il faut ainsi 0,07 seconde pour atteindre (théoriquement) tout point sur Terre. L'immédiateté de la réalisation et de la transmission de nos faits changent la compréhension et l'utilisation de ces faits. Une fois publié, un fait est potentiellement accessible partout au même moment de sa propre réalisation.

Le monde électrique est très efficace à reproduire et transmettre en grand nombre. Les coûts associés une fois l'infrastructure en place sont minimes. Et c'est bien pour cela que toutes les économies reposant en partie sur la difficulté à reproduire et transmettre une information sont secouées. Mais ce qui semble émerger aujourd'hui est l'accélération de la construction de notre identité à venir. Les algorithmes définissent très rapidement ce que nous devons être dans le futur et de façon beaucoup plus efficace que le « Mon enfant, tu reprendas l'activité professionnelle de tes parents. » Ils ajustent notre futur par petites touches en nous poussant dans une direction. Ce sont des suggestions inévitables qui finalement conditionnent notre futur.

L'impression est que notre identité ne se désagrège pas mais elle se construit avec une forme prédéterminée algorithmiquement.

April 06, 2013 04:51 PM

Optimisation des systèmes

Rack à vélos 9 mars 2013, Montréal, Canada

Le plus difficile est de distinguer la brouette du jardinier, le nez du profil, et de n'en tenir qu'imperceptiblement compte.

René Char, Recherche de la base et du sommet.

Ce simple rangement à vélos a généré les questions suivantes :

  • Que choisit-on d'optimiser ?
  • Quels sont les axes retenues pour cette optimisation ?
  • Quels sont les coût de création de l'optimisation, de l'expérimentation ?
  • Comment observe-t-on le comportement des utilisateurs face à un nouveau dispositif ?
  • Quelles sont les contraintes (inconnues) que nous créons avec un nouveau dispositif ?

April 06, 2013 03:42 PM

April 05, 2013

del.icio.us

April 04, 2013

Karl Dubost

Notre capacité à s'adapter

transformateurs électriques 22 mars 2008, Tokyo, Japon

Ses tombeaux vides
Le monde qui plane
Va-t-il retomber ?

René Char, Recherche de la base et du sommet.

Les accidents sont courants et n'ont pas tous la même gravité. Lors de catastrophes économiques, personnelles, naturelles, géopolitiques, il est bon de pouvoir définir sa propre capacité à s'adapter au changement brutal de l'environnement. Pour mieux découvrir cette capacité, Vinay Gupta a créé une carte permettant de définir votre dépendance face aux infrastructures essentielles de votre quotidien.

Carte schématique Exemple concret de cartes de dépendances (pas la mienne)

April 04, 2013 09:05 PM

March 31, 2013

David Larlet

Manuel vs. jardin

Gawel me faisait remarquer que mes réflexions sur ce site laissaient un goût d'inachevé. Cela m'a fait pas mal réfléchir après 3 mois à publier un jour sur deux et je pense avoir trouvé la raison de cette insatisfaction. J'écrivais auparavant surtout des articles techniques qui expliquent une bonne pratique ou une façon de faire quelque chose de précis à la manière d'un manuel. Ce n'est plus le cas, je sème aujourd'hui des graines de réflexions pour qu'elles puissent germer chez d'autres. Je ne cherche plus à apporter des réponses toutes faites, je souhaite qu'elles se développent indépendamment du semeur. À vous de faire fleurir votre jardin !

PS : j'accepte aussi les graines étrangères dans mon jardin.

March 31, 2013 11:00 PM

March 30, 2013

David Larlet

Propriéterre

Le premier qui, ayant enclos un terrain, s'avisa de dire « Ceci est à moi », et trouva des gens assez simples pour le croire, fut le vrai fondateur de la société civile. Que de crimes, de guerres, de meurtres, que de misères et d'horreurs n'eût point épargnés au genre humain celui qui, arrachant les pieux ou comblant le fossé, eût crié à ses semblables : « Gardez-vous d'écouter cet imposteur ; vous êtes perdus, si vous oubliez que les fruits sont à tous, et que la terre n'est à personne. »

Jean-Jacques Rousseau, L'origine de l'inégalité parmi les hommes (2ème Discours seconde partie)

Thomas me demandait hier mon avis sur la propriété (vs. location) et je dois dire que mon avis n'a pas changé au cours de ces dernières années : j'ai beaucoup de mal à concevoir que l'on puisse être propriétaire d'un morceau de planète. Je ne peux cautionner les dérives que cela a engendré.

Ce qui m'importe par contre c'est le suivi volontaire de mon adresse postale, de mon numéro de téléphone ou de mon nom de domaine. Les affaires peuvent changer de lieux, les amis de répertoire, les données de serveurs mais le plus important est de pouvoir y accéder de manière pérenne. Quel que soit le nombre de redirections nécessaires. Malheureusement, si cela est facile et encouragé sur le web, il est beaucoup plus difficile de le mettre en pratique pour un numéro de téléphone ou une adresse physique, les redirections étant temporaires (et coûteuses) a fortiori lorsque l'on change de pays !

La propriété de la terre est souvent mise en avant comme un héritage — on se dédouane de cet acte en proposant ses enfants comme alibi, excuse culpabilisante classique. Or il se trouve que je suis également contre le mécanisme d'héritage ;-). L'autre argument courant est « si les choses tournent mal » et là je suis assez circonspect. Si ça tourne vraiment mal, il vaudra mieux être prêt à survivre de manière itinérante qu'à avoir un lieu fixe à défendre. S'il s'agit juste de la peur de la vieillesse et de la rupture du lien social avec sa famille et ses enfants il y a d'autres questions à se poser en amont pour éviter cette situation.

J'aime la liberté et la légèreté que me procure la location, l'idée d'être « de passage » dans cet endroit et d'en apprécier pleinement chaque instant, l'idée de se limiter dans ses appartenances pour pouvoir être mobile. De plus, la propriété d'un bien m'est beaucoup plus stressante que son éphémérité.

March 30, 2013 11:00 PM

Karl Dubost

Traitement des fichiers EMLX (Mac OSX email format)

Camélias roses 5 avril 2008, Tokyo, Japon

La laideur ! Ce contre quoi nous appelons n'est pas la laideur opposable à la beauté, dont les arts et le désir effacent et retracent continuellement la frontière. Laideur vivante, beauté, toutes deux les énigmatiques, sont réellement ineffables. Celle qui nous occupe, c'est la laideur qui décompose sa proie.

René Char, Recherche de la base et du sommet.

Hier, j'ai utilisé les outils Unix pour découvrir les mails et extraire une information. Si je devais traiter l'ensemble des courriers qui sont disponibles sur mes différents comptes depuis 20 ans, il est intéressant de déterminer avant tout le volume de message a traiter.

Comprendre le volume des données

J'ajoute time pour savoir combien de temps, la commande va prendre.

time find ~/Library/Mail/V2 -name *emlx | wc -l

Le résultat est surprenant. Il aura fallu uniquement 1m 53s pour découvrir les 698 101 fichiers emlx contenus sur mon ordinateur. Utilisant les mêms techniques qu'hier, je pourrais décider d'explorer les différents en-têtes de courrier. Par exemple, si je désire extraire l'en-tête Content-Type :

→ time find ~/Library/Mail/V2 -type f -print0 -name *emlx | xargs -0 grep -ih "^content-type" > mail-content-type.txt

Il faudra un peu moins de 22 minutes pour parcourir tous les fichiers.

real    21m32.861s
user    4m36.128s
sys     1m29.399s

Cependant il y a un enjeu, la commande va également extraire des éléments qui ne sont pas contenus dans les en-têtes, mais également dans le corps. Les en-têtes des courriers peuvent aussi s'écrire sur plusieurs lignes (RFC 5322).

→ wc -l mail-content-type.txt
989611 mail-content-type.txt

EMLX, Un format propriétaire de Apple

D'autre part, le fichier de stockage des emails sur MacOSX est un format propriétaire, emlx, (texte heureusement). J'ai changé quelques chaînes de caractères dans le message uniquement pour éviter la connexion trop directe entre les données et l'action des robots.

875
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on xxxxxx.la-grange.net
X-Spam-Level:
X-Spam-Status: No, score=-3.2 required=4.2 tests=BAYES_00,RP_MATCHES_RCVD,
        SPF_PASS,TVD_SPACE_RATIO autolearn=ham version=3.3.2
Received: from [127.0.0.1] (xxxxxx.xx-xxxxxx.xxx [111.11.11.11])
        by xxxxxx.xx-xxxxxx.xxx (8.14.5/8.14.5) with ESMTP id r2TN8m4U099571
        for <xxxx@xx-xxxxxx.xxx>; Fri, 29 Mar 2013 19:08:48 -0400 (EDT)
        (envelope-from xxxx@xx-xxxxxx.xxx)
Subject: very simple
From: Karl Dubost <xxxx@xx-xxxxxx.xxx>
Content-Type: text/plain; charset=us-ascii
Message-Id: <4E83618E-BB56-404F-8595-87352648ADC7@xx-xxxxxx.xxx>
Date: Fri, 29 Mar 2013 19:09:06 -0400
To: Karl Dubost <xxxx@xx-xxxxxx.xxx>
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v1283)
X-Mailer: Apple Mail (2.1283)

message Foo
--
Karl Dubost
http://www.la-grange.net/karl/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>date-sent</key>
        <real>1364598546</real>
        <key>flags</key>
        <integer>8590195713</integer>
        <key>original-mailbox</key>
        <string>imap://xxxxxxxx@127.0.0.1:11143/mail/2013/03</string>
        <key>remote-id</key>
        <string>41147</string>
        <key>subject</key>
        <string>very simple</string>
</dict>
</plist>

Le message est composé de trois parties :

  • un entier sur la première ligne signifiant le nombre d'octets du message texte
  • le message texte
  • la copie texte d'un fichier XML (le format plist de Apple)

La troisième partie contient une chaîne de caractères magique appelée flags:

Meaning of emlx flags integer data
position meaning length
0read 1 << 0
1deleted1 << 1
2answered 1 << 2
3encrypted 1 << 3
4flagged1 << 4
5recent 1 << 5
6draft 1 << 6
7initial (no longer used) 1 << 7
8forwarded 1 << 8
9redirected 1 << 9
10-15attachment count 3F << 10 (6 bits)
16-22priority level 7F << 16 (7 bits)
23signed 1 << 23
24is junk1 << 24
25is not junk1 << 25
26-28font size delta7 << 26 (3 bits)
29junk mail level recorded 1 << 29
30highlight text in toc 1 << 30
31(unused)

Extraire la structure initiale des fichiers EMLX

J'ai créé un petit programme très simple en python 3.3 pour renvoyer la structure initiale des fichiers EMLX afin de les rendre exploitables dans leur structure logique. L'inspiration initiale vient du programme de Rui Carmo.

#!/usr/bin/env python
# encoding: utf-8
"""emlx.py

Class to parse email stored with Apple proprietary emlx format
Created by Karl Dubost on 2013-03-30
Inspired by Rui Carmo — https://the.taoofmac.com/space/blog/2008/03/03/2211
MIT License"""


import email
import plistlib


class Emlx(object):
    """An apple proprietary emlx message"""
    def __init__(self):
        super(Emlx, self).__init__()
        self.bytecount = 0
        self.msg_data = None
        self.msg_plist = None

    def parse(self, filename_path):
        """return the data structure for the current emlx file
        * an email object
        * the plist structure as a dict data structure
        """
        with open(filename_path, "rb") as f:
            # extract the bytecount
            self.bytecount = int(f.readline().strip())
            # extract the message itself.
            self.msg_data = email.message_from_bytes(f.read(self.bytecount))
            # parsing the rest of the message aka the plist structure
            self.msg_plist = plistlib.readPlistFromBytes(f.read())
        return self.msg_data, self.msg_plist

if __name__ == '__main__':
    msg = Emlx()
    message, plist = msg.parse('your_message.emlx')
    # print(message)
    # Access to one of the email headers
    print(message['subject'])
    # Access to the plist data
    print(plist)

La classe lit le message, sépare la partie texte du fichier XML, créé un objet email ainsi qu'une structure JSON pour le fichier XML.

Un petit test en donnant le bon chemin pour votre message EMLX, dans le cas du message ci-dessus, le programme retourne :

very simple
{'subject': 'very simple', 'date-sent': 1364598546.0, 'remote-id': '41147', 'flags': 8590195713, 'original-mailbox': 'imap://xxxxxxxx@127.0.0.1:11143/mail/2013/03'}

Bon Hack !

Il serait bien de créer un petit parseur pour l'entier du fichier plist et de retourner une structure de données pertinentes comme un dictionnaire Python.

March 30, 2013 02:19 PM

March 29, 2013

Karl Dubost

Tri de caractères avec sort, grep, find, sed

Pochette de disque et plante 29 mars 2013, Tokyo, Japon

Le poète qui versifie en marchant bouscule de son talon frangé d'écume des centaines de mots à ce coup inutiles ; de même un vaste ouvrage qui surgit en se construisant alerte et fait pleuvoir d'insolites projectiles. Tous deux taillent leur énigme à l'éclair d'y toucher. En cet air, l'espace s'illumine et le sol s'obscurcit.

René Char, Recherche de la base et du sommet.

Les outils unix sont toujours performants et excessivement pratiques. | (pipe) pour chaîner les actions est le complément de l'articulation des données entrée-sortie. Cette semaine, le spam passant à travers SpamAssassin me semblait augmenter. Muni des outils find, grep, sed, sort, uniq, xargs, j'ai exploré ce que j'effaçais manuellement. Je n'ai pas appris tant que cela à propos du spam que je recevais mais en revanche, beaucoup plus sur l'utilisation des outils.

Trouver les courriers effacés

Les courriers effacés de Mail.app se trouvent sur Mac OS X 10.7.5 dans le dossier

~/Library/Mail/V2/Mailboxes/Deleted Messages

Ce chemin contient un espace entre Deleted et Messages qu'il faudra gérer en utilisant le caractère \. Les courriers sont conservés individuellement dans des fichiers qui se terminent par l'extension emlx. Utilisons find pour explorer et trouver les courriers.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -name *emlx

Cela renvoie une liste de tous les chemins (un par ligne) se terminant par emlx. Pour être sûr, que nous n'allons récupérer que les fichiers et non les répertoires, ajoutons type f.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -name *emlx

La liste ressemble donc à ceci :

/Users/karl/Library/Mail/V2/Mailboxes/Deleted Messages.mbox/B2E8CBB2-1440-43AC-B082-42F6500A369C/Data/4/2/7/Messages/724309.emlx
/Users/karl/Library/Mail/V2/Mailboxes/Deleted Messages.mbox/B2E8CBB2-1440-43AC-B082-42F6500A369C/Data/4/2/7/Messages/724310.emlx
…

Traiter chacun des messages

La commande xargs permet d'appliquer un traitement à chacune des lignes reçues. Par exemple nous pourrions obtenir les informations de création et taille avec un simple ls -l

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -name *emlx | xargs ls -l

Cependant xargs transforme les retours de ligne en espace avant de passer à la commande suivante.

ls: cannot access /Users/karl/Library/Mail/V2/Mailboxes/Deleted: No such file or directory
ls: cannot access Messages.mbox/B2E8CBB2-1440-43AC-B082-42F6500A369C/Data/4/2/7/Messages/724309.emlx: No such file or directory
…

ls identifie donc deux chaînes de caractères à la place d'une seule. Nos chemins contiennent des espaces. Il existe (au moins) une solution pour contourner.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -name *emlx -print0 | xargs -0 ls -l

Il suffit de changer le caractère de séparation -print0 avec find et d'utiliser -0 pour xargs. Cette fois-ci la liste est cohérente.

-rw------- 1 karl karl   22951 2013-03-28 08:45 /Users/karl/Library/Mail/V2/Mailboxes/Deleted Messages.mbox/B2E8CBB2-1440-43AC-B082-42F6500A369C/Data/4/2/7/Messages/724309.emlx
-rw------- 1 karl karl   36375 2013-03-28 08:45 /Users/karl/Library/Mail/V2/Mailboxes/Deleted Messages.mbox/B2E8CBB2-1440-43AC-B082-42F6500A369C/Data/4/2/7/Messages/724310.emlx
…

Trouver l'expéditeur pour chacun des messages

L'expéditeur peut se trouver à plusieurs endroits. Parfois cet expéditeur sera un faux expéditeur. Il faut donc être prudent avec l'information que l'on récupère. Les en-têtes pour ajouter l'expéditeur sont From, Sender et parfois X-Sender. Il suffit donc sur chaque message de rechercher ces chaînes de caractères. Nous pouvons utiliser grep et les expressions régulières (regex) avec les conditions suivantes.

  • se trouve en début de ligne : ^
  • majuscule/minuscule pas signifiant : -i
  • au choix l'une des chaînes de caractères : OR, soit \|
  • le résultat ne doit pas afficher le chemin : -h

Ce qui nous donne :

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:"

Et nous obtenons en retour la liste suivante (juste un extrait) :

From: "United Auto Protection" <kelly.tiffany@hulusarah.com>
X-Sender: "Editor IJTEMT"
From: "Editor IJTEMT"
From: "ups Account Holders Services" <ups-services@ups.com>
From: Inmac-wstore - Grand Destock <dest_inmac@pky-events.fr>
From: ABRITEL par CPM Direct <news@deal-comunikis.com>
Sender: ABRITEL par CPM Direct <news@deal-comunikis.com>
X-Sender: fixngo@publicite-par-email.com

Nous remarquons déjà quelques éléments. Certains champs ne contiennent pas d'adresses éléctroniques. Nous pouvons les éliminer en ne recherchant que les lignes qui contiennent le caractère @.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@"

L'extrait ci-dessus devient :

From: "United Auto Protection" <kelly.tiffany@hulusarah.com>
From: "ups Account Holders Services" <ups-services@ups.com>
From: Inmac-wstore - Grand Destock <dest_inmac@pky-events.fr>
From: ABRITEL par CPM Direct <news@deal-comunikis.com>
Sender: ABRITEL par CPM Direct <news@deal-comunikis.com>
X-Sender: fixngo@publicite-par-email.com

Nous voulons aussi probablement extraire uniquement l'adresse de courrier électronique. C'est à dire tout ce qui se trouve entre les caractères < et >. Nous allons utiliser sed et regex pour substituer des chaînes de caractères.

sed -e "s/CHERCHER/REMPLACER/"

Nous recherchons le début de ligne ^, suivi de n'importe quel caractère .*, suivi du caractère <. Puis nous voulons trouver n'importe quel caractère mais en groupe (.*). Cependant les paranthèses pour prendre leur significations de groupes doivent être précédées de \. Et finalement le caractère > marquant la fin de l'adresse électronique. Le groupe que nous avons trouvé, c'est que nous allons gardé avec \1 (le nombre dépend de la position du groupe). Nous n'avons ici qu'un seul groupe.

^.*<\(.*\)>/\1/"

Remettons tous cela ensemble.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | sed -e "s/^.*<\(.*\)>/\1/"

Mais que se passe-t-il si la chaîne de caractères ne contient pas < et > comme par exemple :

X-Sender: fixngo@publicite-par-email.com

Il nous faut traiter ce cas aussi. Ajoutons un sed.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | sed -e "s/^.*<\(.*\)>/\1/" | sed -e "s/^.* //"

La liste cette fois-ci devient :

kelly.tiffany@hulusarah.com
ups-services@ups.com
dest_inmac@pky-events.fr
news@deal-comunikis.com
news@deal-comunikis.com
fixngo@publicite-par-email.com

Trier la liste et éliminer les doublons

La liste peut vite devenir longue et contenir de nombreux doublons. La commande sort permet de trier.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | sed -e "s/^.*<\(.*\)>.*/\1/" | sed -e "s/^.* //" | sort

Cela m'a donné un résultat intéressant qui m'a permis d'identifier une erreur.

sort: string comparison failed: Illegal byte sequence
sort: Set LC_ALL='C' to work around the problem.
sort: The strings compared were `ups-services@ups.com' and `L\351ana <vacancesfpp@kiwost.net>'.

Corrigeons tout d'abord le message d'erreur de sort. La comparaison de chaînes de caractères se réalise en fonction de la configuration de mon terminal qui est pour l'instant.

→ echo $LC_ALL
fr_FR.utf-8

Le message d'erreur recommande LC_ALL='C' pour la commande sort dans ce cas. Nous pouvons l'injecter au moment de l'éxécution.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | sed -e "s/^.*<\(.*\)>.*/\1/" | sed -e "s/^.* //" | LC_ALL='C' sort

Nous obtenons une liste triée en effet, mais… ce n'est pas satisfaisant pour autant. Ajoutons un | grep "vacancesfpp@kiwost.net" qui était la chaîne de caractères posant problème. Le résultat est

L?ana <vacancesfpp@kiwost.net>

Cela signifie que notre sed n'a pas fonctionné non plus quand le champs contient des caractères étranges (non UTF-8). Il nous faut donc placer le LC_ALL='C' en amont.

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | LC_ALL='C' sed -e "s/^.*<\(.*\)>.*/\1/" | sed -e "s/^.* //" | sort

nous donne bien une liste ordonnée sans erreurs, mais cette fois-ci si je recommence le | grep "vacancesfpp@kiwost.net", j'obtiens :

vacancesfpp@kiwost.net

Nous pouvons finalement rendre unique chaque adresse de la liste avec uniq

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | LC_ALL='C' sed -e "s/^.*<\(.*\)>.*/\1/" | sed -e "s/^.* //" | sort | uniq

Si vous désirez compter combien d'occurences de chaque adresse il suffit d'ajouter -c

find ~/Library/Mail/V2/Mailboxes/Deleted\ Messages* -type f -print0 -name *emlx |xargs -0 grep -h -i "^From:\|^Sender:\|^X-Sender:" | grep "@" | LC_ALL='C' sed -e "s/^.*<\(.*\)>.*/\1/" | sed -e "s/^.* //" | sort | uniq -c

Pourquoi ?

Je voulais partager ceci, car j'ai appris

  • find -print0/xargs -0
  • injection d'un paramètre de terminal au sein de la chaîne de commandes LC_ALL='C'

Et que je me suis dit que cela pouvait être utile à d'autres aussi.

March 29, 2013 01:58 PM

March 28, 2013

David Larlet

Fondée sur des valeurs

J'étais à Devoxx hier soir comme annoncé pour présenter une approche différente de la SSII et je devais décrire l'expérience scopyleft :

scopyleft est une SCOP (Société Coopérative et Participative) toute jeune — seulement 3 mois — ce qui ne permet pas d'avoir le recul nécessaire pour valider ou invalider une approche. Ni même pour juger de sa viabilité. C'est pourquoi j'ai choisi de vous parler de sa genèse : autrement dit, de l'avant scopyleft.

Notre approche a été de ne pas commencer par le traditionnel business plan mais de nous aligner entre nous 4 sur les valeurs fondatrices que nous voulions comme cap au cours de la vie de l'entreprise. Si l'approche économique nous donnait une vision pour environ 1 an avec son lot d'incertitudes et autres pivotages, passer par des valeurs nous amenait à considérer une durée beaucoup plus longue… de l'ordre de la décennie. Ambitieux projet.

Cela commence par mieux se connaître, discuter de valeurs permet d'aller beaucoup plus en profondeur qu'une discussion sur le retour sur investissement, les salaires ou le titre que l'on souhaite avoir dans l'entreprise. Une fois d'accord sur le fond — honnêteté intellectuelle, courage, bien-être, respect et partage —, nous sommes arrivés à formuler une phrase (à défaut d'un manifeste) résumant notre objectif commun :

Travailler entre humains, sur des projets éthiques et intéressants, tout en privilégiant le bien-être et le plaisir de chacun.

Ces valeurs et cette maxime nous guident dans nos choix stratégiques au quotidien pour accepter ou non un client, pour concrétiser une initiative ou pour accompagner un projet.

C'est notamment ce qui nous a menés à choisir le statut de SCOP, un statut basé sur une gouvernance démocratique (1 homme = 1 voix) et favorisant la pérennité des emplois et du projet d'entreprise (co-entrepreunariat et réserve importante imposés). Ce statut met l'humain au cœur de l'entreprise, ce qui diffère d'une entreprise traditionnelle qui se concentre sur son capital. C'est un changement de paradigme majeur dans une société capitaliste. Nous avons enrichi ces statuts d'une co-gérance tournante (faute de pouvoir gérer à 4) et d'une égalité salariale.

Un autre aspect de la SCOP qui a attisé notre curiosité est la notion de solidarité inter-entreprises au sein de la confédération des SCOP. C'est notamment ce que l'on a pu constater avec les entreprises qui nous ressemblent, il existe relativement peu de SCOP (dans l'informatique) mais elles se serrent les coudes !

Ces 3 derniers mois nous ont permis de reconsidérer notre approche économique, de mieux nous connaître, d'avoir énormément de retours (à la fois de nos clients et de nos pairs), de coder ensemble, d'accompagner ensemble, d'assister à des conférences ensemble, de stresser ensemble, de faire de l'administratif ensemble, autant de tâches qui sont loin d'être insurmontables et qui sont le lot quotidien du créateur d'entreprise mais qui s'avèrent être moins pénibles lorsque l'on poursuit un objectif un peu plus « élevé » (sain ?) que le simple aspect financier. Augmenté par le fait de le réaliser à plusieurs.

Cette aventure aurait difficilement pu être envisageable sans avoir confiance dans notre savoir-faire acquis lors de nos expériences respectives à nos comptes. Malgré notre expérience dans le domaine, l'un de nos objectifs à terme est de nous libérer de la prestation pour co-produire des produits utiles, éthiques et open-source.

Pour résumer, scopyleft est une entreprise fondée sur des valeurs pour créer de la valeur. En coopérant.

Je n'ai pas dû dire la moitié de tout ça au final car l'approche monologue était un peu ennuyante et je préférais avoir plus de temps pour discuter. Et là je n'ai pas été déçu car les réactions ont été nombreuses, un peu décousues et agressives mais cela montrait un intérêt certain.

Décousues car on était nombreux à pouvoir répondre (une dizaine) et qu'il y avait beaucoup de questions qui passaient brutalement du fond à la forme selon le niveau de réflexion de chacun. Peut-être qu'un autre format (groupes de discussions par exemple) se prêtait mieux à la discussion ouverte mais la salle n'était pas adaptée.

Agressives principalement car le titre NoSSII a été interprété comme un affrontement alors que l'on avait bien mis en avant le côté Not only. Dommage, l'idée n'était pas du tout d'aller dans ce sens mais il est peut-être normal que certains se sentent déstabilisés lorsqu'on présente quelque chose de différent.

Quelques questions dont je me souviens :

À quoi cela sert-il de créer une SCOP vs. un GIE (Groupement d'intérêt économique) d'indépendants ?

L'objectif n'est pas du tout le même, principalement car on ne se regroupe pas en SCOP pour un intérêt économique mais pour partager et échanger à un autre niveau.

Qu'est-ce qui vous différencie d'une SSII classique finalement ?

D'une part le fait d'avoir le contrôle sur les objectifs de la société, ils peuvent être lucratifs ou pas, ils peuvent être citoyens ou pas, ils peuvent être éthiques ou pas, ils peuvent s'émanciper de la prestation ou pas. D'autre part, le fait de mettre l'humain au cœur du cadre de travail est un changement radical, ce qui change aussi les relations avec les clients.

Comment gérez-vous les problèmes d'éthiques ?

Nous n'avons pas de règle pré-définie, chaque cas aux limites est discuté longuement et un vote suivant les pratiques de l'Open-Source (et de Django) permet de trancher.

Est-ce que ça peut fonctionner à plus grande échelle ?

L'exemple du handbook de Valve a été mis en avant avec quelques autres. La question c'est plutôt de savoir quel est l'intérêt de passer à une autre échelle ? Dans notre cas par exemple, c'est une volonté forte de rester à taille humaine.

Ça rejoint d'ailleurs une question relative au référencement dans les services achats des grosses entreprises. C'est peut-être plus difficile en étant petit mais en fait ça nous intéresse peu de travailler avec ce type de structures donc ça limite le problème. Beaucoup de questions n'allaient pas assez loin dans le pourquoi et se limitaient au comment.

Comment trouvez-vous des clients ?

On ne sait pas démarcher. Partant de ce constat, ça passe plutôt par de la recommandation ou des connaissances qui nous suivent depuis longtemps et le partage de nos expériences. On a également la chance d'avoir des entreprises partageant nos valeurs qui nous transmettent des demandes.

Les réactions à chaud sont plutôt positives, j'espère que l'on aura réussi avec Ninja Squad et Lateral Thoughts à au moins attiser la curiosité de certains et pourquoi pas à en motiver pour monter leur propre structure !

[Mise à jour] : Retour sur Devoxx France - BOF NoSSII

March 28, 2013 11:00 PM

March 27, 2013

Karl Dubost

Surveiller la surveillance

Sticker pour une caméra de surveillance 3 mars 2013, Montréal, Canada

The self-feeding, self-imaging, and environmental surveillance capabilities of closed-circuit television provide for some artists a means of engaging the phenomenon of communication and perception in a turly empirical fashion similar to scientific experimentation.

Gene Youngblood, Expanded Cinema.

Lorsqu'un phénomème est généralisé, il devient très difficile de le combattre et de le renverser. Être vigileant au tout début est nécessaire avant qu'il ne soit trop tard, et que nous nous sommes habitués au status quo.

March 27, 2013 05:57 PM

Le spectacle de la tradition

deux publicités côte à côte 1er janvier 2013, Tsujido, Japon

The nature of these encounters exposes and frees us from a range of aesthetic and cultural conventions.

Carolee Schneemann, Kinetic Theatre.

Deux publicités dans le journal du nouvel an, l'une pour les soldes d'un magasin local, l'autre pour une chaîne de hamburgers. Les deux utilisent des éléments de la tradition. Que ce soit à gauche une illustration à la façon des u-kiyoe, à droite un autel.

Le détournement de référents culturels invitent au spectacle de la tradition. Quand acceptons-nous le détournement d'une authenticité de la culture et quand sommes nous choqués ? Qu'est-ce que cela dit sur notre attitude prétentieuse face à la culture ?

March 27, 2013 05:41 PM

March 25, 2013

Christian Fauré

Sur le paradigme indiciaire de Ginzburg (2)

Voici la suite de la note sur les racines du paradigme indiciaire de Ginzburg (1).

Avec Platon, les arts de la conjecture – qui permettent de remonter des effets aux causes en naviguant le long du fleuve du plausible –  furent écrasés par ce désir fou pour une connaissance apodictique (qui présente un caractère d’universalité et de nécessité absolue : une proposition apodictique est nécessairement vraie, où que vous soyez) dont la géométrie est l’emblème. L’induction et l’inférence sont suspectes, elles apparaissent comme hors de la rationalité qui doit procéder par déduction et maîtriser l’enchaînement en cascade des raisonnements vrais.

 

Pour Ginzburg, il est clair que la science Galiléenne du XVII° siècle, avec son paradigme scientifique est en rupture avec ce qu’il appelle les disciplines indiciaires (médecine comprise) :

“Il s’agit de disciplines  éminemment qualitatives, qui ont pour objets des cas, des situations et des documents individuels, en tant qu’individuels, et c’est précisément pour ce motif qu’elles atteignenent des résultats qui conservent une marge aléatoire irréductible.” p. 250

« De ce qui est individuel on ne peut pas parler (individum est inefabile) », dit la devise scolastique : voilà les disciplines indiciaires marquée de leur défaut de scientificité (cf. Le caractère “probable” des sciences historiques selon M. Bloch, Apologie pour l’histoire ou Métier d’historien, 1967, pp/ 52-67).

La voie philologique

Mais il est tout de même une discipline indiciaire qui a un statut privilégié, il s’agit de la philologie qui voit naturellement son acte de naissance commun avec l’écriture alphabétique qui transcrivit les poèmes homériques. Cette discipline s’est constituée en gommant au fur et à mesure les caractères accessoires du texte : suppression des éléments liées à l’oralité et à la gestualité, à la graphie des copistes, etc. Tout ceci s’inscrivant dans une logique de “dématérialisation du texte”, car si le texte à besoin de supports pour exister, il ne s’identifie pas à son support.

Et voici que la science des textes, de leur établissement,  de leur critique et de leurs commentaires (Nietsche disait : « J’entends ici le mot « philologie » dans un sens très général : savoir déchiffrer des faits sans les fausser par des interprétations. »), devient l’exemple que prend Galilée lorsqu’il présente sa conception de la science qui ne peut se comprendre si “on n’apprend pas auparavant à en connaître la langue, et à connaître les caractères dans lesquels il est écrit”, à savoir des “triangles, cercles et autres figures géométriques” :

“Pour le philosophe naturel, comme pour le philologue, le texte est une entité profonde invisible, à reconstruire au delà des données sensibles” p.255

Sons, saveurs et odeurs n’ont pas lieu d’être considérés pour qui veut lire dans le grand libre de la nature ; mais c’est pourtant ce à quoi doivent s’en ternir les médecins. Or il se trouve qu’un d’entre eux, particulièrement brillant, était contemporain de Galilée. Il s’agit de Giulio Mancini dont on vanta à la fois les extraordinaires capacités de diagnostic mais également sa connaissance de la peinture dont il était grand amateur.

La naissance de l’amatorat

Nous avons là l’ancêtre de Morelli, ce peintre de la fin du 19° qui défraya la chronique par sa méthode d’authentification des oeuvres. Mancini fut en effet l’auteur d’un ouvrage sur la peinture qui s’adressait aux amateurs, dont la figure commence à émerger avec le nombre croissant d’expositions de tableaux. Les anglais parlent  de “connoisseurship” (terme intraduisible mais que le me risquerai à traduire par “amatorat”).

Cette amatorat n’existe que parce qu’il s’intéresse aux tableaux à partir de leurs différences, et  en vertu du fait que le propre de l’oeuvre d’art est d’être unique (la reproductibilité technique dont parlera Benjamin n’adviendra que beaucoup plus tard). En se plongeant dans les “caractères” de chaque oeuvre, de chaque époque et de chaque peintre, l’amateur gentil-homme peut inférer des rapprochements et des distinctions qui font de lui un redoutable expert en datation et attribution des oeuvres, à partir d’un savoir fondé sur des détails (cheveux, barbes, yeux) qui font la différence.

L’amatorat et l’ensemble des cultures et des savoirs indiciaires vont connaître un tournant  au cours du XVII siècle :

“On assiste à une véritable offensive culturelle de la bourgeoisie qui s’approprie une grande partie deu savoir, indiciaire et non-indiciaire, des artisans et des paysans. [...]

Le symbole et l’instrument central de cette contre-offensive est naturellement l’Encyclopédie”.p. 273.

Chacun peut ainsi accéder aux savoirs indiciaires et plus généralement aux savoirs qui ne se maintiennent que via des corporations ; ces savoirs sont souvent des savoirs techniques, des savoir-faire que l’encyclopédie va formaliser et qui va avoir pour effet de multiplier le nombre d‘autodidactes qui vont faire croître le nombre d’amateurs (ces remarques relèvent surtout de Simondon, quand il évoque le cas de l’encyclopédie dans “Du mode d’existence des objets techniques” pp. 85-112.)

Ginzburg est notamment incroyablement perspicace me semble-t-il, alors qu’il poursuit description de la trame du rapport des disciplines indiciaires aux textes et aux livres, et étendant l’exemple de l’encyclopédie à l’émergence du roman :

“Pour nombre toujours croissant des lecteurs, l’accès à des expériences déterminés se fit, dans une mesure plus grande, par l’intermédiaire des pages des Livres. La roman procura même à la bourgeoisie un substitut et en même temps une reformulation des rites d’initiation – c’est à dire, l’accès à l’expérience en général.

C’est précisément grâce à la littérature d’imagination que le paradigme indiciaire connut à cette période une fortune nouvelle et inattendue” . P273

 

Où l’on apprend l’origine du mot “sérendipité”

Une fable orientale contant les aventures des trois fils du roi de Serendip qui, en interprétant une série d’indices, parviennent à décrire un animal qu’ils n’ont pourtant jamais vu est introduite en europe au milieu du XVI° siècle :

La trame du conte en rappelle maintes autres : un roi cherche qui, parmi ses trois enfants, sera à même de lui succéder. Pour les départager, il les soumet à diverses épreuves pour tester leur sagacité. Ne parvenant à faire son choix, il les encourage à parcourir le vaste monde pour y faire leurs preuves. Mais, contrairement à nos contes européens, dans ces terres persanes, les trois frères resteront unis et, ignorant toute idée de concurrence, mettront en commun leurs talents intellectuels pour résoudre maintes énigmes et aventures. Trouvant ce qu’ils ne cherchent pas, ils mettront en pratique une véritable pédagogie de l’observation et de la déduction. (source)

L’histoire a un succès tel quelle fut reprise par Voltaire au troisième chapitre de son Zadig et, en 1754, Horace Walpone forgea le néologisme, serendipity, pour désigner les “découvertes imprévues, fruits du hasard et de l’intelligence”.

Ginzburg note qu’en 1880, le nom de Zadig était devenu le symbole de cette approche, que Thomas Huxley définit comme “méthode de Zadig”,

“le procédé qui réunissait l’histoire, l’archéologie, la géologie, l’astronomie physique et la paléontologie : c’est à dire la capacité à faire des prophéties rétrospectives. p. 276

Marqué du sceau de la diachronicité et de l’induction qui remonte des effets aux causes, des pans disciplinaires commencent à s’affirmer en marge du paradigme galiléen qui, lui, peut reproduire à volonté les causes dans sa logique à la fois mathématique et expérimentale. C’est l’émergence de ce qu’on appelle aujourd’hui les “sciences humaines”.

 

Mais l’émergence des méthodes indiciaires qui s’attache à l’individuel et aux traits caractéristiques va connaître un développement surprenant avec l’émergence d’un contrôle qualitatif et minutieux de la société de la part du pouvoir étatique. Le contrôle des populations passe par l’identification des caractères spécifiques de chaque individu.

 

Le paradigme indiciaire au service de la société de contrôle

Le nom, les signes particuliers (cicatrices), puis la signature manuscrite, sont autant de procédés visant à établir l’ “identité” des individus.

La méthode des amateurs et connaisseurs qui permettait d’attribuer des oeuvres ou de démasquer des faux était couplée à une pratique de collectionneur. En effet, les amateurs sont souvent des collectionneurs : ils nourrissent leur passion à partir de leur propre collection qui leur permet d’aiguiser leur jugement. Là où un chacun ne verrait qu’une collection de choses identiques, le collectionneur et l’amateur voient dans ces séries identiques des jeux de dissemblance et de différences parfois infinitésimales qui justifient que deux pièces quasi identiques aient chacune leur place dans la collection.

A l’image de ces pratiques, les états vont chercher à cataloguer les individus car le nouveau Code Napoléon, basé sur le nouveau concept de propriété, va avoir tendance à criminaliser certaines classes sociales. Cette nouvelle législation,

“…avait augmenté le nombre de délits punissables et la définition des peines. La tendance à criminaliser la lutte des classes s’accompagna de la construction d’un système pénitentiaire fondé sur la détention de longue durée.”

Seulement voilà , en mettant de plus en plus de personnes en prison et pour des durées de plus en plus longues, on se retrouve dans un cercle vicieux où, la prison produisant des criminels, le suivi de ceux-ci va devenir critique :

“Le problème de l’identification des récidivistes, qui se posa au cours de ces décennies, constitua en fait la tête de point d’un projet global, plus ou moins conscient, de contrôle généralisé et subtil de la société. p. 282

Que l’on pense à Edmond Dantès ou Jean Valjean pour voir à quel point la figure du criminel récidiviste a pesé sur l’imagination du 19° siècle.

C’est très logiquement que des techniques anthropométriques, graphologiques, et enfin les empreintes digitales et jusqu’à nos analyses d’ADN modernes se mettent en place systématiquement dans la collecte d’indices et de traits particulier qui permettent d’identifier un individu, pour également pouvoir les confondre (au sens juridique).

Signaler sur Twitter

by Christian at March 25, 2013 10:33 AM