Archive for the ‘written in English’ Category

SVG as an alternative to Flash, here comes bliotux

Tuesday, December 22nd, 2009

As a follow-up to my SMIL-animated SVG for accessible textbooks article, here is a copy of the README file of wecena.bliotux. I currently have 4 full-time wecena volunteers currently making accessible textbooks for children with cognitive disabilities (mainly dyspraxia) under the supervision of an INSERM medical research lab and of a dyspraxia-related non-profit organization, Dyspraxique Mais Fantastique. They currently use Didapages, a Flash-powered proprietary authoring tool to make these would-be accessible textbooks. But we are not satisfied by this tool and I wanted to propose an open-standards free software alternative. So I wrote wecena.bliotux as a proof-of-concept of such an alternative technological framework.

Beyond dyspraxia and children with disabilities, I think bliotux may be of some use for any developer looking for an alternative to Flash as a technology to make highly-graphical, ineractive and animated offline or online applications. The source code is available under the wecena subversion repository (until I create a dedicated repository). Here is a full copy of the README file :

wecena.bliotux

This software package is a framework for building web applications having the following buzzwords

  • web
    apps: run in your web browser
  • offline
    apps: no web server, no Internet connection required
  • rich
    applications : highly graphical user interfaces, using SVG
  • animated
    applications : pages can include (interactive) animations using (SMIL-powered) animated SVG templates
  • interactive
    : interaction/behaviour is defined in a simple Javascript file corresponding to a given page
  • with persistence
    of user data and application state : using local storage with persistence engines such as Google Gears (or HTML5 localstorage when it’s mature enough in Firefox)
  • template-based
    : pages sharing a common layout/structure are based on template files
  • document-oriented: a simple data structure in a data.js file defines the data used to populate the corresponding SVG template for any given page
  • free software: distributed under the Affero GPL License (even though I am not 100% sure of the exact meaning of the Affero version for offline applications BTW…)
  • based on open standards: SVG now (Daisy Profile for SMIL+SVG, CSS and WAI-ARIA in the roadmap) rather than based on proprietary technologies such as Microsoft Silverlight or Adobe Flash
  • highly accessible
    even though using JavaScript (see open standards…)
  • as cross-browser
    compatible as possible: apps should run on any web browser as long as they offer some support for SVG and Javascript; and bliotux users should not have to care much about browser compatibily.

The original aim of this package is to build a non-Flash interactive animations management framework so thataccessible
textbooks can be made for children with cognitive disabilities (mainly dyspraxia)
.
But it could be used to produce any set of interactive animations
such as books, websites, interactive animations or I don’t know what.
You imagine.
You experiment.
You tell me what it may be useful for !

The following JavaScript libraries are used

Disclaimer with regards to JavaScript as a programming language :
Ahemm… Javascript was selected because we wanted to have one and only one language to be used both for the making
of bliotux-powered templates and pages and for their execution.
And their execution should not require any
prior installation of software : the web browser should be the only required stuff.
And Javascript seems to be the only open-standards-oriented way to offer rich interactivity to SVG in web browsers.
Too bad.

How to use wecena.bliotux ?

At the moment wecena.bliotux is nothing but a proof-of-concept.
More will come in case the project I’m working on selects this technology
as a viable alternative to the Flash-based proprietary product we are
currently using in order to make accessible textbooks for children
with cognitive disabilities.

Download and install bliotux

It’s in a subversion repository.
There is some subversion documentation available in
case you don’t know how to download software from a subversion repository
. Bliotux is stored
in the wecena repository but it will get its own repository some day.

Create a template

Bliotux pages are based on templates.
Let’s create a first template.

Name your template

Choose a name for your template. In this example,
the name is

simpleOperation

because it is a template page for textbooks
for children learning additions and other simple mathematical operations.

Name a template folder accordingly.
For instance, I have

wecena.bliotux/templates/simpleOperation/

Define the layout of your template

This part is the job of a graphics designer.

The layout of a template is defined by a SVG file.
(Download, install and) use any SVG editor to create such a file.
I personnally use Inkscape, which is free software.

Your SVG template should be named

layout.svg

and
should be stored under the template folder.
Here it goes:

wecena.bliotux/templates/simpleOperation/layout.svg

The next version of Inkscape should allow you to use its new timeline-based animation editor capabilities to add
animation to your template.
At the moment, you will have to have an XML developer edit the source code of your SVG
template and add animation (animated SVG) instructions “by hand” if needed.

Here is a clue about how to possibly accelerate the development of such SVG animations without waiting for the
next version of Inkscape :

  1. Download and install Open Office Impress
  2. Make a (duplicate) sketch of your layout in Impress
  3. Add the desired animation effects to it using the rich set of animation features Impress offers
  4. Save your animated Impress presentation in its native .ODP format
  5. Open this file using an archive handler (such as winzip under windows) :
    Open Office files are nothing but ZIP archives containing XML and graphics
  6. Edit the source code of the main XML file this .ODP archive contains.
  7. Ask your XML developer to copy, paste and adapt the animations instructions therein
    into your

    layout.svg

    file.
    (The animation instructions can easily be located : they use the

    anim:

    namespace).

Define the interactivity of your template

This part is the job of a Javascript developer.

This is the hardest part if you are not a developer.
It should be easy if you have any experience in web development.

In the case of a children textbook for teaching additions and other simple mathematical operations,
we’d like our “simpleOperation” template to display a simplified virtual keyboard with numbers.
When the child clicks on a number, this number is added to a “result” text element in the template layout.
So we need to know how to use an SVG element (the number we want to click on) as an interactive button
which will display some text result as the content of an other SVG element.

The interactivity of your template is first prepared in your

layout.svg

file.
Using Inkscape XML Editor (Ctrl + Shift + X), you add event attributes
to the SVG elements you want to add some interactivity to. This involves accessing
the XML source code of the SVG file, which you should not be afraid of thanks to
Inkscape XML Editor.

For instance, let’s say you have a SVG group of elements which you want to
act as a button. You select this group using Inkscape. You press Ctrl+Shift+X. The
XML Editor opens. There you see the group of elements as a <g … > element.
You then want to add interactivity to this group. You have to add a

onclick

attribute.
The value of this attribute should be “clickButton(evt)”. This means that whenever the
user mouse clicks on this button, a MouseEvent event called “evt” will be fired and
some Javascript function called “clickButton” will have to handle this event so that
something special happens.

Now you have injected some interactivity attributes into the XML source code of
the SVG file of your template. This source code now includes things like this :

<g onclick="clickButton(evt)" ...

Let’s develop this clickButton Javascript function so that you define what should
happen whenever the button is clicked. This definition is written in a Javascript file
you have to name “interaction.js” and which sits under the template folder:

wecena.bliotux/templates/simpleOperation/interaction.js

For instance, this file could contain the code below (see included examples, too, if needed) :

function clickButton(evt){
    alert('You clicked the button !');
    $('.whereResultShouldBeDisplayed', svg.root()).html('Clicked !');
    $('.someSVGElementsWhichShouldBeEmptiedWhenButtonGetsClicked', svg.root()).html('');
    storageSave('.whereResultShouldBeDisplayed', 'Clicked !');
    storageSave('.someSVGElementsWhichShouldBeEmptiedWhenButtonGetsClicked, '');
}

If you are as unfamiliar with Javascript as I am, you need some more explanations here.
What does this function says ?

It says that it takes an input parameter called “evt”. But it won’t use it in this case.

It first displays a popup alert window with a message (‘You clicked…’)

Then it changes the content of the SVG displayed in the web browser. It writes the text ‘Clicked !’ in
every SVG (or HTML BTW) element which has an attribute called “class” (the same attribute which can be used
for CSS files) including the value “whereResultShouldBeDisplayed”.

For instance, let’s say you have this text element in your layout.svg file :

<text
  id="text4790"
  y="386.98224"
  x="454.43787">
  <tspan
    y="386.98224"
    x="454.43787"
    id="tspan4786"
    class="whereResultShoudlBeDisplayed someOtherClass">Not clicked yet.</tspan>
</text>

Then, once the user clicks the button, your interaction.js file will have this text element changed into this :

<text
  id="text4790"
  y="386.98224"
  x="454.43787">
  <tspan
    y="386.98224"
    x="454.43787"
    id="tspan4786"
    class="whereResultShoudlBeDisplayed someOtherClass">Clicked !</tspan>
</text>

Can you see the difference ?

For more information about how Javascript can have the web browser manipulate
the content of the page at runtime, please see jQuery API documentation. Just remember to
apply jQuery selectors to the root of the SVG document (

svg.root()
) and you should be fine.

There is also this call to storageSave in your interactivity function. What does it mean ?


storageSave

is a function defined by bliotux.
It takes 2 input parameters : a key and its value.
It will have this pair of (key, value) made persistent in the local web browser.
Even if the browser (and possibly computer) is closed (shutdown), this (key, value) pair is still available
and can be later retrieved using another bliotux function :

storageLoad(key)
.
Next time the same page is displayed, any SVG element which corresponds to key (as a jQuery selector) will have
its content filled with value.

In this example, storing the text

"Clicked !"

as
the value of the key

.whereResultShouldBeDisplayed

means 2 things:

  1. this text

    "Clicked !"

    can be further retrieved with any Javascript call to

    storageLoad('.whereResultShouldBeDisplayed')
  2. next time this page is displayed using the same web browser, the

    "Clicked !"

    text will be added to all SVG elements which have the

    whereResultShouldBeDisplayed

    class attribute in their source code.

As a result of this, the state of each page can be made persistent
so that when the user returns to a given page he already interacted with
this page displays the exact same info/aspect/behaviour as before.

Now you have your

interaction.js

file which defines the full interactivity of your template document.

Create a page

Creating a page is much easier than creating the template a page is based on.
But it requires writing some (extremely simple) code using any text editor (Windows notepad…).
Any brave user should be enabled to do so.

You have a full bliotux template, including an SVG layout (possibly including animation) and Javascript interactivity.
Now let’s create a page based on this template.

Name the folder with the page name

In this example, let’s name a first page

Sesamath_CP_page-094_exercice-001

along the name of a French free (as in free speech) textbook vendor.
In order to do so, we create this folder:

wecena.bliotux/pages/Sesamath_CP_page-094_exercice-001/

When we want to access this page, we’ll have to direct our web browser to such an URL as

file:///home/jean/wecena.bliotux/index.xhtml?page=Sesamath_CP_page-094_exercice-001

Define the template this page uses

Which template will this page use ?
The answer comes as a Javascript file we have to create:

wecena.bliotux/pages/Sesamath_CP_page-094_exercice-001/data.js

This file contains the declaration of variables describing this page.
The variable called template defines the template to be used for this page:

var template = 'simpleOperation';

Populate the template

The next variable in this

data.js

file define data which will get injected into the template so that
the page is built :

var data = {
  '.pageCentaine':'',
  '.pageDizaine':'9',
  '.pageUnite':'4',
  '.exerciceCentaine':'',
  '.exerciceDizaine':'',
  '.exerciceUnite':'2',
  '.operande1Centaine':'',
  '.operande1Dizaine':'',
  '.operande1Unite':'7',
  '.operateur':'-',
  '.operande2Centaine':'',
  '.operande2Dizaine':'',
  '.operande2Unite':'5',
  '.resultatCentaine':'',
  '.resultatDizaine':'',
  '.resultatUnite':'',
};

This data associative array lists (key, value) pairs which define which content should be injected where.
The key (for instance

.pageCentaine

) is a jQuery selector to be applied to the root of the SVG template.
The value is some SVG code which is to be inserted as the content of any SVG element matching the key.

Rather than using

id

attributes as selectors (

#pageCentaine

), it seems preferable to use

class

attributes (

.pageCentaine

) which carry the meaning (semantics) of the corresponding SVG element and can be reused
several times in the same template (whereas IDs should be unique, I suppose).
Anyway, the SVG template should be edited so that the corresponding

class

attribute are present where needed.

Include some page-specific graphics

Using the mechanism of templates and the data.js file, you may have your SVG template include some areas where
pages could have specific bitmap (JPEG, PNG) files displayed.
This is just the matter of including such a JPEG file in the

layout.svg

file,
giving the corresponding SVG element an appropriate class attribute (using Inkscape XML editor for instance)
and then defining in

data.js

the name of the picture file to insert in this area of your layout for this specific page.

But you can also have given pages include full SVG files.
For instance, the left part of

simpleOperation/layout.svg

is meant to display a funny but didactic illustration
where characters (such as Tux the penguin) invite the child to perform the mathematical operation at hand.
Such an illustration could contain page-specific animations.
Adding an animated GIF file would not be enough.
The full power of SVG for animations may be required.
In such cases, you can define an svgParts variable in the data.js file of the page :

var svgParts = {
  '#illustration': 'illustration.svg'
}

This variable says : “Hey, bliotux, please look at my template
and find the SVG element with

illustration

as the value of its

id

attribute.
Then replace this full SVG element with the first

g

element (SVG group) you will find
in the

illustration.svg

file sitting under this page folder. Thanks.”

That’s it

You can access and test your page at a URL which should look a bit like that (the exact path depends on the folder hierarchy
on your hard drive):

file:///home/jean/wecena.bliotux/index.xhtml?page=Sesamath_CP_page-094_exercice-001

Side note : Now I realize I can’t use doctestjs for this document so it’s pretty useless to me.
It would have been much useful if only I had figured out a way to have some Javascript code generate
a template document in the filesystem during the doctest so that I can further test bliotux on it
using doctestjs. Maybe later…

The “social horror stories” prize

Friday, December 11th, 2009

Technologie et Innovation Sociale” is a French initiative which aims at having more technology-based solutions available to solve major social issues. It’s a would-be incubator for hightech social enterprises. As a first step, Technologie et Innovation Sociale wants to identify those major social issues : which ones are real stakes ? which ones are to be prioritized ? which ones are the most urgent ones ? How to proceed ? If plain surveys are to be published on the Internet, then we will identify social issues for geeks and internauts, for the information haves. What about the information have-nots ? How to leverage the power of Web 2.0 technologies and have online volunteers sort, classify and prioritize those issues ? How to gain some legitimity and to preserve some representativeness ? Here are my suggestions.

Let’s launch a “social horror stories” prize and website. It’s an open and collaborative website where any user can register and publish any social horror story : “John Doe is a bank employee. He is also homeless. This week, it’s snowing and it’s -12°C at night. The homeless shelters are full and John Doe could not find any bed yesterday. It was so cold he stuffed his coat with personal papers before trying to sleep in the park. He died of hypothermia. One of the papers he was using in his coat was his last last paysheet. Read the full story “Homeless dying without bonus” in the Coldcity New Tribune Dec 10, 2009.” The more they propose such stories the higher their “storytelling” score.

The story (and any data published on the site) is published under a share-alike Creative Commons license. All content and data can be fully downloaded, copied, aggregated, analyzed, criticized and redistributed by anyone under the same license. Hence users get the guarantee that their contributions are kept from being owned and controlled by some editors for their sole interest.

The user adds any available reference in order to check the facts.

Further contributors read this story as a blog post. They tag this story with freely chosen keywords (selecting from or added to a search-as-you-type list) :  “homeless, weather, death, cold, bank, shelters, urgent, revolting, astonishing, fact-checked, important, life-or-death, so-modern, poverty, …”. The more they tag, the higher their “tagging” score. Some tags are worth a higher increase in score : these are tags selected by the site editor for special purposes (“worth-donating-my-money, worth-petitioning, worth-more-attention-by-the-government, illustrative-of-a-very-common-issue, unsolvable, …”).

The story itself can be edited by any reader (wikipedia-style), and the record of subsequent changes are being kept and displayed with a click. Comments allow users to self-regulate these changes through discussion. If needed, controversial stories can be locked by a group of power-contributors and displayed as such, following a (hopefully rare) vote by commenters about the “controversiness” of editions for this stories by commenters.

The site proeminently displays a list of tags : “urgent, important, incredible, imaginary, cheesy, …“. Clicking on the “revolting” tag (or any other tag) displays an (almost-randomly-picked) pair of stories sharing this tag. The user is presented with a simple question : In your opinion, which one of these stories and the underlying social issues they illustrate is the most “revolting” one ? The user clicks their answer and is given another pair of horror storie/social issues to compare in a given dimension. The more they click such story-fights, the higher their “ranking” score. Stories are also ranked along tags according to the number of pair-fights they win.

The higher a story gets ranked on a tag, the higher the “tagging” score of the person who put this tag on the story and the higher the “storytelling” score of the authors of this story.

The site is invite-only. Each user has a single sponsor (the person who sent them the invitation). The higher a score for a person (+1), the higher the score for their sponsor (+1/2), the higher the score of the sponsor of this sponsor (+1/4), etc. This multi-level scoring gives a strong incentive for users to recruit good storytellers, good rankers, good recruiters and so on.

What can are these scores used for ? First, it’s like a game : there is a hall of fame for best taggers, best storytellers, best recruiters, best rankers, best overall user and so on. In each category and for the overall ranking, the top best gamers/users win the prize. What’s the prize ? It’s money of course !

Not usual money users can save in their bank accounts though. It’s money donated to the NGO of their choice (proabably selected in a huge pre-filtered list). There will be money donated to some NGOs. But which ones ? The winner choose.

How much money is to be donated ? There is a jauge on the home page displaying the amount of donation at stake. The initial amount may be low. But any user can donate to the game (paypal or similar micropayment systems). Corporate sponsors can bid on special category prizes (check the “Hilton Hotels prize for the most revolting homeless story”). Philanthropists money is donated to the NGOs picked by the users.

In the end what do we get ? Much fun. Better awareness and illustration of a wide variety of more or less common and revolting social issues. A huge and free (as in “free speech”, not as in “free beer”) base of content and data which can be used as a rich and stimulating source of inspiration for would-be social entrepreneurs and social innovators. Some insights about the perception people have of social issues and topics. Further data analysis can nourish a democratic debate about these issues and their relative importance and prioritization by public policy makers and social innovators. The site can act as a specialized social news aggregators platform as well as an advertising platform for social innovators proposing solutions in their respective field of action (along the corresponding tag).

That’s it.

At the moment, my best source of inspiration for a somehow similar implementation of such ideas (beyond the wikipedia) is Stack Overflow (which is still far from implementing all aspects of this though).

In fact I first had this whole idea for Wecena, my own social venture. I think such a scheme could be used to have volunteer contributors collaboratively rank and analyze the potential social impact of nonprofit projects. This would not be a “social horror stories prize” but a “social innovation project” prize in my very case. Some sort of a collaborative alternative to Social Return On Investment (SROI) analysis. And the multilevel-scoring-coupled-with-donations scheme could be used by me in order to recruit additional IT corporations as philanthropists for the nonprofits organizations I serve. I remixed my initial idea for the purpose of stimulating the conversation at Technologie et Innovation Solidaire. I hope this can be useful.

Please tell me what you think.

Mobile health applications for Africa

Tuesday, October 6th, 2009

My friends at Pesinet are building a mobile health technology and system which will save the life of thousands of babies in poor countries such as Mali, in Africa. It happens that I identified several similar solutions and I want to share these pointers with them (and with you !).

The open mobile consortium (OMC) is definitely an organization Pesinet should get to know in details and consider joining. RapidSMS is a mobile, SMS-based, data collection solution promoted by the OMC.Rapid Android is a mobile, Android-based system also by the OMC. The Open Data Kit is another OMC solution for mobile data collection and exploitation. Mesh4X, yet another OMC solution, for information sharing. CommCare aims at supporting mobile health workers. The OMC does not only provide technology but also access to expertise and insights from other social innovators.

LittleFish is another open source initiative which aims (aimed until 2002 ?) at providing  technologies for mobile health workiers. Why do they seem to have stopped ? Maybe there are some interesting lessons to learn from their experience for Pesinet ?

The Grameen Foundation runs an “AppLab” program which aims at creating applications and technologies for social development. One of their project builds technology for community health workers in Ghana (also funded by the Bill and Melinda Gates Foundation).

Do you know any other similar initiatives ?

How to record VoIP calls from your PC ?

Wednesday, July 29th, 2009

Beyond having low and flat rates, beyond allowing mobility without a mobile phone, voice-over-IP has another advantage : it allows calls to be recorded. Here is how to proceed (assuming you are geeky enough…).

For instance, this week, I could not physically join an interesting meeting between French NGO leaders and IT professionnals considering how to best volunteer for these NGOs. So I gave the organizer of the meeting a VoIP phone (Siemens Gigaset) and asked him to call the Asterisk-powered SIP call conference system our nonprofit has (thank you Fred and JML  for this !). It allowed me to join the meeting as a distant caller and… to record a big MP3 file of the 3-hours long discussion.

For recording this voice-over-IP conference, here is my setup. I was calling from a linux PC, 2GB of RAM and a great free software SIP-compatible softphone called Twinkle (greater than Ekiga IMHO). My voice-over-IP provider was our Asterisk server. I could have used any other free SIP provider, such as ippi. Ippi is great and I am a happy customer of their service.

I was also running the Wireshark packet sniffer as root. After the call, I had to post-process the VoIP packets Wireshark captured. Wireshark decoded them and extracted the audio content of the conversation. Then I used Audacity to normalize, level and compress the audio and to save it as a big podcast-ready MP3 file.

The tricky parts :

- The Siemens Gigaset can’t (easily ?) be configured to call an SIP address which does not have the same domain as the SIP account it is using. For instance, if the audioconference system is at sip:conference@sipprovider.org then you’d better configure the phone to use a sip:mygigaset@sipprovider.org account rather than a sip:mygigaset@anotherprovider.org Too bad… :(

- You should warn the participants they are being recorded. Not only can this be required by your local laws but it also gives them another incentive to think of speaking close to the phone which is recording them in the meeting room.

- During the conversation, people in the meeting room would sometimes forget the presence of the phone and speak too far from its microphone. Hence I had to say “Can’t hear you !” from time to time and participants would take the phone in their hand as if it were a microphone. Local participants (in the meeting room) would even call the distant participants “the phone” and say “Hello, phone, how are you ?” and stuff like that. It was a bit as if the phone was yet another participant speakers had to take into their hand in order to be heard and recorded. Quite funny. Having the phone close to the speaker is also a matter of discipline and habit for the meeting organizer.

- Distant participants like me would use the “mute” feature of  their local (soft-) phone so that they can’t be heard when not talking, so that there is less background noise in the conversation.

- I would have preferred to have at least one local participant available in a text-based chatroom (think IRC channel) or at least in some instant-messaging system. This would have allowed me to remind the phone has to be kept close to the current speaker and stuff like that without having to loudly say “Can’t hear you”. Unfortunately, the only IM-available participant was the main organizer who quickly forgot his screen and keyboard so that he could focus on the discussion going on.

- A 3-hours call required a lot of RAM for wireshark, even though the captured packets were being saved on the hard-drive ; when post-processing the packets, I had to split the session into 4 smaller parts so that wireshark would not crash when doing its audio extraction.

- When post-processing one of these smaller packet captures, wireshark would sometimes not detect the accurate nature of the packets : instead of seeing them as Real-Time Protocol (RTP) packets which they indeed were, it detected them a “OICQ” packets. So I had to force wireshark into considering them as RTP files (using its “Decode…” command).

- In order to have wireshark decode and save an audio file from the RTP streams, the command to be used is “RTP / Show all streams” from its “Statistics” menu. Then you use the “Analyze” button and then the “Save Payload” button. I had to select the “.raw” (vs. “.au”) format for the audio file because of the codec used by the VoIP phones.

- When saving the audio file, I decided to save distinct files for the forward (my voice, sent from my softphone to the audioconference service) and reversed stream (the meeting voices, sent from the audioconference service to my softphone). This allows distinct and finer audio postprocessing (the audio levels were different).

- In audacity, I chose to first normalize the audio tracks, then level them (it adjusts the audio level when the speaker changes or talks to far from the phone) then audio-compress them a bit. I would then merge the parts and tracks into a single mono audio file. Stereo does not make much sense in the case of a many-participants call but can be useful if you record a 2-participants conversation.

That’s it. Now I have to finish the audio-postprocessing of my MP3 and find some place on the Net where to upload it for the participants. What do you think ? Do you have some tricks to share on this topic ?

Altruistic stock options

Monday, February 9th, 2009

As far as I understand the concept of “altruistic capital“, the firm practicing altruistic capital donates a percentage of its capital to a nonprofit organization and commits to keeping on donating more shares when the number of shares increasees, so that the percentage of donated shares remains constant (it is called the “altruistic index” if I remember well).

Here is my “altruistic stock options” variation on this theme. Since I am almost a newbie in entrepreneurship and altruistic capital and since I don’t master the arcanes (and vocabulary) of finances, please someone tell me if this makes sense and what you think :

Instead of donating the shares to the nonprofit, the nonprofit has to buy them.

At first, let’s say 10% of the shares are sold to the nonprofit. Later the capital changes and 100% more shares are about to be created (the number of shares is to double). Because of its commitment to my variation on the altruistic capital theme, the nonprofit then receives the exclusive and time-unlimited right to buy the number of shares it needs in order to get back to owning 10% of the capital, at the price of these shares when they are created. It means that once it buys these shares, the nonprofit will still own 10% of the capital : 5% bought at first and 5% bought after more shares where created. Unless the nonprofit buys this 5% more shares, the capital of the firm is only 195% what it was first and the nonprofit has earned the right to purchase 5% more shares at the price they have when the other 95% shares are created. This 5% more shares are sort of “altruistic stock options” which the nonprofit receives.

Pros of this variation :

  • it contributes to funding the altruistic firm : it’s more of a win-win cooperation between the firm and the nonprofit than a pure donation of capital to a nonprofit ; as a consequence, it may be a more seductive offer for entrepreneurs
  • it allows the nonprofit to invest in the company when and only when it wants to (for instance, when it wants to receive more dividends or when it wants to sell its shares – as long as this is allowed)
  • it gives an incentive to the nonprofit for investing as soon as it can (so that it can receive more dividends)
  • it may allow nonprofits to actively contribute to the development of social startups (small capital but both expected social impact and expected financial impact)

Cons :

  • Higher complexity
  • Lower generosity
  • Puts a barrier on the entry of poor nonprofits into the capital of altruistic firms (they have to be able to buy more shares even though they can wait as long as they want) unless they enter these firms when at startup stage, maybe the system can be bootstrapped by first having altruistic shares donated and further donations be replaced with altruistic options.

So, what do you think ?

How to get visual performance profiles from plone doctests ?

Thursday, February 5th, 2009

I am developping a couple of Plone 3.x products. They have some tests, including a huge functional doctest which takes a long time to run (about a couple of hours !) but covers some of my most interesting use cases. I wanted to use these tests in order to get some insights about possible performance bottlenecks and other optimization hot points in my code. The result of my effort was a very nice visual chart showing these bottlenecks and hotpoints.

[update: added another visualization package, see at the end of the post]

Here is how I had to proceed (note that I am more of a foolish and coward hacker than an expert and I decline any responsibility on the consequences of following my howto !) :

1. Give your python a suitable profiler

Plone 3.x requires zope 2.10 which in turn requires python 2.4. More recent versions are not supported AFAICS. Problem: python2.4 does not have a reliable performance profiling module. Its “hotshot” module is both slow (when loading statistics) and badly bugged : it crashes when you have it load some of the profiles it can generate. You have to add a better profiler to your python environment, namely cProfile (which is shipped with python 2.5).

I am a terrible sysadmin and I don’t really understand (and care about) how python manages its pathes and accesses its libraries. So I did this :

  1. download and unzip the source tarball of python 2.5 so that you get cProfile source code
  2. locate relevant files referring to lsprof (the old name of cProfile), using a grep -R lsprof * on the source directory
  3. I personnally located the following files (I leave cProfile test files apart) : Lib/cProfile.py Modules/_lsprof.c and Modules/rotatingtree.* (.c and .h)
  4. download and unzip the source tarball of python 2.4
  5. copy the located cProfile files from their python 2.5 location to the proper dirs into the source code of your fresh python 2.4
  6. update python 2.4 ’s setup.py file so that the line below is added just after the hoshot one : exts.append( Extension(‘_lsprof’, ['_lsprof.c', 'rotatingtree.c']) )
  7. did I mention I am so bad at hacking things that I don’t even provide a patch for the operations above ?
  8. compile python 2.4 using a ./configure then make

At this point, you must have an executable python interpreter version 2.4 which includes cProfile. You can check by launching this python and trying a import cProfile which should not fail.

I replaced my system python2.4 by then doing a sudo make altinstall but I also had to manually tweak my system files so that this new python2.4 gets properly called (I am using ubuntu 8.10 intrepid, BTW) :

cd /usr/bin

sudo mv ./python2.4 ./python2.4.5

sudo ln -s /usr/local/bin/python2.4

Now, a plain command line call to python2.4 should give you an interpreter prompt which lets you import cProfile if you dare. I suffered some colateral damage here : the python prompt lost its ability to have previous lines copied at the prompt by pressing the Up/Down arrows. And I had to re-install reportlab from the source (some of my products depend on pisa which depends on reportlab). Anyone knows how to restore this Up/Down arrow capability ?

2. Recreate your buildout using this new python version

So that zope gets recompiled using your new python version :

rm -Rf parts bin develop-eggs

python2.4 bootstrap.py

bin/buildout

3. Patch zope testrunner so that it supports cProfile instead of only supporting hotshot

I got a bit confused because my buildout contains 2 zope testrunners. It took me some time to figure out which was which : the one which is used by the zope instance your buildout creates is the one which is shipped with zope 2.10 and is located at parts/zope2/lib/python/zope/testing/. The other one I have is in the zope.testing egg. I don’t know how and why I got such an egg. Anyway, this egg supports both hotshot and cProfile whereas zope 2.10 testrunner doesn’t. So I hacked the weaker/older zope 2.10 testrunner with some inspiration from zope.testing so that cProfile can be used when running tests. Here is the diff you can use for enhancing  parts/zope2/lib/python/zope/testing/testrunner.py. Oops, left version is the modified one, right version is the original one.

38,69d37
< before_tests_hooks = []
< after_tests_hooks = []
< available_profilers = {}
<
< try:
<     import cProfile
<     import pstats
< except ImportError:
<     pass
< else:
<     class CProfiler(object):
<         “”"cProfiler”"”
<         def __init__(self, filepath):
<             self.filepath = filepath
<             self.profiler = cProfile.Profile()
<             self.enable = self.profiler.enable
<             self.disable = self.profiler.disable
<
<         def finish(self):
<             self.profiler.dump_stats(self.filepath)
<
<         def loadStats(self, prof_glob):
<             stats = None
<             for file_name in glob.glob(prof_glob):
<                 if stats is None:
<                     stats = pstats.Stats(file_name)
<                 else:
<                     stats.add(file_name)
<             return stats
<
<     available_profilers['cProfile'] = CProfiler
<
75,98c43
<     pass
< else:
<     class HotshotProfiler(object):
<         “”"hotshot interface”"”
<
<         def __init__(self, filepath):
<             self.profiler = hotshot.Profile(filepath)
<             self.enable = self.profiler.start
<             self.disable = self.profiler.stop
<
<         def finish(self):
<             self.profiler.finish()
<
<         def loadStats(self, prof_glob):
<             stats = None
<             for file_name in glob.glob(prof_glob):
<                 loaded = hotshot.stats.load(file_name)
<                 if stats is None:
<                     stats = loaded
<                 else:
<                     stats.add(loaded)
<             return stats
<
<     available_profilers['hotshot'] = HotshotProfiler

>     hotshot = None
288c233
<     if len(available_profilers) == 0 and options.profile:

>     if hotshot is None and options.profile:
320,324c265,266
<         if available_profilers.has_key(‘cProfile’): prof = available_profilers['cProfile'](file_path)
<         else: prof = available_profilers['hotshot'](file_path)
<         before_tests_hooks.append(prof.enable)
<         after_tests_hooks.append(prof.disable)
<

>         prof = hotshot.Profile(file_path)
>         prof.start()
335c277,278
<             prof.finish()

>             prof.stop()
>             prof.close()
342c285,292
<         stats=prof.loadStats(prof_glob)

>         stats = None
>         for file_name in glob.glob(prof_glob):
>             loaded = hotshot.stats.load(file_name)
>             if stats is None:
>                 stats = loaded
>             else:
>                 stats.add(loaded)
>
459d408
<                 [hook() for hook in before_tests_hooks]
461d409
<                 [hook() for hook in after_tests_hooks]
656,659c604
<     [hook() for hook in before_tests_hooks]
<     results = run_tests(options, tests, layer_name, failures, errors)
<     [hook() for hook in after_tests_hooks]
<     return results

>     return run_tests(options, tests, layer_name, failures, errors)

Oh, BTW, this diff also lets you filter out the profiling of the setup and teardown steps of your tests which are of poor value compared to actual tests. Thanks to Daniel Nouri for this.

At this point, you should have given your zope instance the capability of profiling tests using cProfile. You can check it by asking for a debug prompt from zope : bin/instance debug The prompt you get should allow you to safely import cProfile

4. Profile your test

Say you have a Products called Products.DearProduct with some tests. Profile them :

bin/instance test -s Products.DearProduct –profile

At this point, you should get a tests_profile.*.prof file saved in the current dir. It contains the performance profile cProfile generated, using the pstats format. You can manually load and analyze this data. Or have a limited GUI show you what it’s like. Or you can go for the nicer, more insightful version which follows.

5. Visualize and analyze the performance profile you generated

Thanks to Ingeniweb folks, I heard of gprof2dot and xdot. Download them (the scripts, not the folks). Use them to generate and display a very nice graph :

chmod 744 gprof2dot.py

chmod 744 xdot.py

./gprof2dot.py -f pstats -o profile.dot tests_profile.*.prof

./xdot.py profile.dot

Note the * you may replace with the ID of the profile generated above. Or you can use the fancy but dangerous one-liner below which runs the tests,  generates the profile, generates the corresponding graph, displays the results of tests and displays the graph for analysis :

rm -f tests_profile.*.prof && rm -f profile.pstats && rm -f profile.dot && bin/single-instance test -s Products.MyDearProduct –profile > /tmp/test.txt ; ./gprof2dot.py -f pstats -o profile.dot tests_profile.*.prof && less /tmp/test.txt ; ./xdot.py profile.dot

At this point, you should be starring at nice colored graph which represent the flow of your tests and the method which may be performance bottlenecks. And you should be hoping that it was worth the effort.

[Here starts the update]

After some contemplation moment, I tried to analyze the graph of my tests and did not feel extremely happy with this graph visualization. It indeed shows me that the slowlyness of functional doctest is mostly due to the testing framework (zope.testbrowser, etc.). This slowlyness “hides” the optimization opportunities of my code. And I don’t know how to exclude some products from the being profiled or from being present in the profile stats (I would have liked to filter out zope.testbrowser and other Plone-specific things). But, all hope is not lost, here comes kcachegrind:

sudo apt-get install kcachegrind

sudo easy-install pyprof2calltree

pyprof2calltree -o output.calltree.stats -i tests_profile.*.prof -k

Using kcachegrind with the help of pyprof2calltree, I was able to focus on my product methods and identify those methods which deserve some caching. Added some @memoize decorators and reran the profiled tests so that I could enjoy the performance improvement… Happy I am, happy thou shalt be.

What do you think ?

Dilbert est en intercontrat !

Saturday, January 17th, 2009

Dilbert n’a plus de projet actuellement, crise oblige. Scott Adams va-t-il lui faire faire du wecena ?

Dilbert.com

Altruistic Capital, semifinalist of Echoing Green 2009

Monday, January 12th, 2009

Albeit disappointed, I enjoyed the results of the 1st selection phase of the 2009 Echoing Green fellowship program. Of course, it had some positive consequences on my venture. But the most positive side of this is that Thierry Klein brought my attention to the fact that his own (French : Cocorico ! as we say here)  initiative, namely the Altruistic Capital, is selected as a semifinalist. I wish he will be at the next Echoing Green selection week-end in New York this spring and, hopefully, the Altruistic Capital project will be boosted by a 60.000 USD grant.

The Altruistic Capital concept is a nice and innovative way for tightening the public good to the performance of for-profit corporations, by letting nonprofit organizations receive a share of these profits. They indeed become shareholders of the forprofit, as the name “Altruistic Capital” suggests.

Next questions for me are :

  • how can I let some open source businesses become more familiar (and hopefully fond of) such initiatives (this is also an open question for the economy of communion which shares so much in spirit with some aspects of free software)
  • when, how and to which nonprofit(s) will I donate a part of the capital of my nonprofit ? this question is a bit difficult for me to handle given that my customers are nonprofits and I may prefer not to create interferences between business itself and the altruism of my capital… or maybe I should let this happen ?

I definitely have to spend some time with Thierry, face to face. Maybe next time he comes to Paris if our schedules can be synchronized.

Good luck, Altruistic Capital and Thierry, for the next phase of the EG selection process !

Echoing Green fellowship program : we did not make it :-(

Saturday, January 10th, 2009

Disappointment… Our application to the Echoing Green fellowship program is no more in the race : it did not advance in the application process” and was rated as “noncompetitive” (see their full email at the end of this post). There were 950 applicants this year. 300 projects are selected as semifinalists. Too bad we are not among these.

Given the high number of applicants, EG doesn’t tell us why our application is rated as “noncompetitive”. But if I had to bet on their rationale, and given the other semifinalists, I’d say that the 2 main weaknesses of our application were :

  • it may seem to focus too much on France : wecena services can be offered to nonprofits worldwide but the business model fully relies on French legal specificities and on French corporate donors => maybe it can’t be seen as a “global” solution at this stage of development ? maybe I’ll first have to prove wecena services can benefit to non-French nonprofits, too.
  • above all, it is not a “direct” solution : it does not directly aim at eradicating poverty or fighting diseases or providing resources to suffering people ; it rather gives social entrepreneurs and nonprofits access to IT skills and services which in turn can leverage their capacity to innovate ; and EG said they would favor direct solutions over indirect ones.
  • maybe there is a 3rd reason, too : the wecena business model is fairly sophisticated and, even with your help, I may be suffering from the curse of knowledge ; in other words, it’s hard to communicate this model without diving into obscure details

This failure of course has negative consequences : I won’t have a week-end in New York paid by EG :) nor won’t we get 60,000 USD from them for the wecena project. Fortunately, it also has some positive consequences :

  • We won’t have to draft longer essays and translate the French materials into English for further evaluation, which frees some valuable time in order to put more effort on selling the wecena concept to French IT firms ; convincing them takes so much time ! Ive been working with 3 of them for now 1 year on this project and contracts yet have to get signed…
  • You helped me to write down the why and the how of the wecena program ; I could translate that into French and provide it as additional marketing materials to the nonprofits and IT firms I work with, which may turn to be a very valuable asset for getting the first IT firm to donate skills and time to our nonprofits ; when I published these materials in French, it also allowed us to officially become a partner of the MUNCI, a French union of IT consultants.
  • It gave me the opportunity to work closely with the folks at the Antropia social incubator of the ESSEC business school (the number 2 business school in France, I’d say) and this convinced me to apply to their own fellowship program : they will give me their decision in March but it may be a bit easier that the EG selection because the wecena program already received a small award from them.
  • The list of the 300 Echoing Green semifinalists contains some quite interesting projects in the high tech field (frogtek for instance) and I may propose them to benefit from wecena services once the money pump is started with the French nonprofits I already have contracted with. I might even get in touch with EG and propose wecena services as part of their grants to future fellows in needs of free IT skills and services, why not ?

Anyway, thanks a lot to all of you, dear friends or colleagues who contributed to the wecena application to the EG fellowship program either online or offline. Special thanks to IA_ who was an early and steady commenter, who was brought to us from Texas by the magics of the Internet. :)

If you want to give a further hand to the wecena project, you can still have a look at what’s here if you speak French (and fill the mini-survey I published there, including the part where you can spam your geeky friends), or just comment this post in English if you can’t.

Here is the EG email announcing the bad result :

On behalf of the entire Echoing Green team, thank you for your recently submitted application for a 2009 Echoing Green Fellowship. We received nearly 950 applications this year, and as always, we were inspired and encouraged by the ideas, commitment and enthusiasm for public service captured in those applications. We applaud the good work you are undertaking through your program.

We regret to inform you, however, that your application did not advance in the application process. All applications were evaluated for competitiveness. It was determined that your application was not competitive and is no longer under consideration for an Echoing Green Fellowship. All decisions are final and cannot be changed.

Please note that we review each application twice and evaluate the proposal against the selection criteria of the Echoing Green fellowship program. Designating your application as noncompetitive is specific to our application process and selection criteria and is not intended to reflect the strength of your idea or the need for the proposed program in your community. Unfortunately, based on the volume of applications we receive, we cannot provide you with individual comments on your application. However, you can find a list of the most common reasons an application is deemed noncompetitive at http://www.echoinggreen.org/noncompetitive. While we cannot provide you with specific feedback on your application, we hope that you find this information helpful as you prepare future proposals.

We wish you success in finding other sources of support for your work. While Echoing Green may not be the right fit for your efforts, we encourage you to pursue your dream of helping people and communities locally, nationally and internationally. Best of luck!

Sincerely,

Heather McGrew

Vice President, Fellow & Alumni Programs

Applying to the Echoing Green fellowship program

Tuesday, November 4th, 2008

[This post is the draft of my application to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG). You can follow the latest posts for that application and its preparatory work using the echoinggreen tag on my blog.]

[Edit: The application deadline was met and this application was submitted. But you can still post your comments, suggestions and supports messages in order to better make the case of IT pro bono work for nonprofits.]

OK. In order to prepare my application, we have been discussing my preparatory work (your comments on these other posts are still much welcome and needed). Here is the draft of the application itself. This post is the content that will eventually be submitted end of November 2008 to EG (the preparatory work is for you, me and other readers). It is still a draft and it requires much of your attention both on my English spelling/grammar/style and on the content itself (the wecena concept, the logic and clarity of my answers, …). Answers to EG are limited in length… but your comments are not limited howsoever !

What is your new, innovative idea to create lasting social change? Be clear, specific, and jargon-free in your answer

[Edit: Compare the initial answer below with related comments from Sig and Amir] [Edit:minor English fixes included]

Non-profit social innovators of all sectors (health, education, poverty, …) have huge social ambitions but limited resources and capacity. Information Technology (IT) helps as an option to leverage the efficiency and reach of their programs. But IT skills and services are costly and too often out of budget reach for these innovators.

IT service firms are rich in consulting skills but have not been given a strong enough incentive to donate them pro bono (free) in any large scale.

Fortunately, corporate social responsibility is rising on the corporate agenda and recent French labor and tax laws allow local IT service firms to offer services free to innovators *at no cost* for donors. In order to bridge the digital divide between nonprofits and corporations, all it requires is a proper mix of administrative process automation, management methods and tools, a donation channel and a culture of giving.

Wecena services are an innovative pro bono IT model that allows French nonprofits to benefit from more than 1 full-time equivalent of IT professional skills each. 100% of the cost for the donor is supported by the French tax payers. Massive donations without cost can boost non-profit innovations.

A couple of characters remaining

What drew you to this issue? When and how did you come up with your idea?

[Compare the initial answer below with alternative from Sig (based on comments from Amir and Yann)] [Edit:minor English fixes included]

I have been volunteering in nonprofits since 8. At 18, I was volunteering as a video team leader in immigrant communities and local youth organizations. Technology (then video) was used as a way to let poorer immigrant youth and richer local youth meet and connect. I then decided that both my volunteer engagements and my career would aim at bridging social gaps with the help of technology.

I have been employed in the IT industry for 10 years as an entrepreneur, manager and researcher. I have witnessed how deep the digital gap between the social and corporate worlds is. IT hardware and software can now be obtained free through used hardware donation and free software. But skilled time remains a very scarce and limiting resource for any innovative nonprofits.

I have been trying for 10 years to find sustainable ways to drive my career towards fueling social innovation with technology. As a former entrepreneur, I have been monitoring market opportunities in this field. The French legal environment and the emergence of corporate social responsability as a shared concern among major corporations now offer a perfect opportunity for proposing wecena services.

A couple of characters remaining

As specifically as possible, demonstrate the need for your organization. Use statistics and references

[Compare the initial answer below with related comments from Sig] [Edit:minor English fixes included]

The dependence of nonprofits on technology to manage information, communicate with donors, staff and volunteers, and handle various other tasks continues to grow. Beyond organizational support, IT is a must for scaling social innovation and driving progressive uses of new technology.

In France, 1 year of a full time IT engineer or consultant is sold at about 80 kEUR including a cost of about 60 kEUR in salary and associated taxes. Most innovative nonprofits are limited in size and may not employ more than 6 full-time equivalents (FTE), with a corresponding budget of less than 200 kEUR. Buying a couple of FTE IT engineers would cost more than half of the annual budget of the organization which is not acceptable.

At the same time, employees of French IT services firms earn their salary even when they are “on the bench” waiting for their next customer engagement because of a employee-protective labor law. Around 5% of these employees are “on the bench” at any given time. This represents thousands of inactive FTE each year who aren’t given the chance to contribute to the public good.

What a waste of brain power !

A bit more than 18 characters remaining.

What is the root cause of this problem? How does your idea tackle this root cause?

[Compare the initial answer below with related comments from Sig] [Edit:minor English fixes included]

“On the bench” brain power is considered a non-avoidable waste in the IT service industry. There has been no channel for “recycling” this waste so far. The short duration of these “on-the-bench” periods represents an obstacle for any commercial customer (including nonprofits): left alone, new consultants would spend much time learning their new mission context and would already have to move away because of a new commercial customer engagement. Individual productivity is too low in such a context. And knowledge can’t easily be transferred from consultant to consultant in such short time frames without the help of costly knowledge management (KM) methods and tools.

The French tax laws allow wecena pro bono services to generate significant tax savings which would be converted back into money donations for supported nonprofits. With this money, Wecena.com would be hired to offer appropriate KM methods and tools that let consultants become productive fast enough and which encourage consultants to become volunteers once their pro bono mission has ended.

Innovative nonprofits would us wecena.com to hire skilled pro bono donors and to provide additional productivity support.

No characters remaining.

Note: I should replace this paragraph with a summary from the result of our conversation here (it was written before this discussion). What do you think?

Help Echoing Green visualize what your organization will do. Describe the specific programs that your organization will engage in to deliver your long-term outcomes

[Edit:minor English fixes included]

Consider a nonprofit (NP) which requires better or new information technology for its new program. The NP staff leading the project would contract with wecena.com for providing complementary IT staff for free.

Wecena.com allows the NP to promote its program while emphasizing both its skills requirments and its expected social impact. wecena.com identifies and meets French IT service firms which offers proper skills and services and “sells” the NP program needs to the IT firm.

On-the-bench consultants apply on wecena.com for the program of the NP on a voluntary basis. The best of them starts the mission at the NP premises. After a couple of weeks, she stops and moves on to a new commercial engagement. Another on-the-bench consultant takes on the tasks left by her colleague. The NP staff uses wecena.com as a knowledge continuity management platform. At the end of the month, wecena.com generates tax receipts to the donating firm on the behalf of the NP. Based on the calculated tax cut, the firm donates money to the NP which in turn pays wecena.com for the services provided. A portion of these consultants turn into volunteers in their free time with the blessing of their employer.

Almost no character remaining.

Note: more details available here.

Describe your long-term desired outcomes. How will you measure your progress toward these outcomes?

[Edit:minor English fixes included]

I envisage a world where pro bono IT services are considered a critical enabler for major social innovations from education to environment via poverty reduction. An army of computing experts and corporations join the fight for changing the world. Wecena services are considered the secret weapon of high-impact social innovations. IT firms compete in donating more and better skills to prominent social entrepreneurs. Specialized for-profit social ventures emerge and compete with wecena.com.

By the end of 2010 we expect to deliver 10 full-time equivalents (FTE) of pro bono IT consulting and engineering to less than 10 ambitious non-profit projects and to increase this volume with a rate of at least 4 FTE per year. We will build non-profit loyalty : the expected median duration of our relationships with each NP will be of at least 6 months for non-profits having accepted first donations more than 1 year before. At least 10% of the employees involved pro bono will turn into volunteers in their free time. Anecdotal evidence will show that wecena services increase non-profit programs reach or efficiency by a factor of at least 3.

And we will be financially profitable before 2010.

16 characters remaining

Note: see this post for a more detailed conversation.

Innovation is important to Echoing Green. Explain how your idea is truly innovative. Identify other organizations that are addressing this issue and how your approach is different and has the potential to be more effective

[Compare the initial answer below with related comments from Sig]

Wecena.com offers the first and only IT assistance solution for big social innovations (requiring more than 1 person-year) that costs nothing for both nonprofits and for corporate donors without relying on volunteering or direct governmental subsidies. Other organizations provide IT assistance to nonprofits :

  • Compumentor/TechSoup offers donated software and hardware but no IT pro bono service
  • The Taproot foundation offers pro bono service (IT included) but their grants are worth no more than 35.000USD compared with a minimum 64,000USD per wecena grant.
  • Taproot as well as direct pro bono donors (e.g. Accenture France) operate at a significant cost for donating firms by dedicating individual consultants for the whole project whereas wecena teams of “on the bench” consultants allow any IT firm to try out pro bono services at no cost. The risk of low productivity for these teams is mitigated by management methods and tools from the open source community, by the rate of consultants turned into volunteer contributors and by the higher volume of potential donations.
  • Volunteer-match web platforms start addressing the need for IT pro bono service but with the same limits as above.

4 characters remaining.

Note: see this post for more details

Building a new organization is challenging. How are you entrepreneurial? Describe your skills and experiences that demonstrate you can lead a start-up organization

[minor edits]

In 1996, I co-created a French nonprofit. I raised funds from the French government for its “Internet in the hood” program. I led this program which provided technological assistance to more than 10 nonprofits in local immigrant communities in France.

In 1998, I co-created and led a small Internet consultancy, experienced its downfall and managed its closing without bankruptcy. I had earned customers including governmental agencies and the Fondation de France (the biggest umbrella organization for French foundations).

In 2000, I joined a Fortune Global 200 firm (Saint-Gobain) as head of its corporate web technology group. In 5 years, I turned this 5 persons team of engineers into a more than 20-consultants-big skills center offering engineering and consulting services.

In 2005, I became team-leader of the French Motorola Labs team researching Web x.0 technologies for Motorola phones and set-top-boxes.

When ready to launch my wecena.com venture, in 2007, I negotiated a compensation package with my management line so that I could safely leave my position even though I am the only source of revenue for my family of 6. I funded Wecena SARL in July 2008.

4 characters remaining.

Why are you uniquely qualified to lead your specific organization? Describe your experience working with this issue and population

[minor edits]

My project requires the following skillset : managing innovative IT projects, being an entrepreneur, serving the non-profit field.

As the head of a corporate IT department then as the leader of an IT research team, I demonstrated my IT skills : I led the creation of a global electronic identity system for more than 200,000 corporate users worldwide and created technology which generated academic publications and patents. I managed the growth of an IT service team until it was 20 IT consultants big. I supervised 100 intranet projects and have been the champion of free software and open source in corporate environment.

I succesfully faced entrepreneurial challenges by taking organizational initiatives, raising required funds and selling innovative services to customers. I raised and managed an 8 millions EUR budget in a corporate environment for a project I led.

I have served non-profits as a volunteer (Boyscouts, Ingénieurs Sans Frontières, Red Cross), as a board member and volunteer (my tech assistance program for 10 immigrant youth communities), during 1 year as a public servant (urban policies agency) and occasionally as a consultant (Fondation de France).

5 characters remaining.

How much money have you fundraised to date? Who is your largest funder and what is the size of their grant? Provide an estimate of your total budget for each of the next two fiscal years

[Compare the initial answer below with related comments from Sig]

I funded Wecena SARL in July 2008 with 3,000 EUR only. I am the only (and therefore largest) funder of this company.

1st fiscal year (ends in September 2009): estimated revenue of 120 kEUR

2nd fiscal year (October 2009 to September 2010): projected revenue of 286 kEUR

934 characters remaining.

Why you may (not) disagree with my wecena solution

Monday, November 3rd, 2008

[This post is the 6th part of my preparatory work before applying to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG). You can follow the latest posts for that work using the echoinggreen tag on my blog.]

EG suggests that I find some professionals in my field who are likely to disagree with some part of my idea, meet them, list their objection to my idea and try to formulate my response.

I did it. You may relate to some of these objections. Hopefully, you will end agreeing with my responses or suggesting even better responses as a comment to this post !

  • An IT firm consultant : “Your wecena concept is a source of unfair competition for us ! : he was fearing that non-profits with a budget would rely on (“free”) wecena services rather than buying IT services from companies such as his. I agree that wecena services might compete with some IT consultancies. But this competition would be limited : “classic” consulting and wecena consulting differ in their form. Classic consulting offer dedicated consultants whereas wecena consulting offer a path to building a community of volunteers while providing basic services from a big number of individual interventions. Another difference is that there will probably be a difference between non-profit projects relying on classic consulting and those supported with the wecena model: the wecena model favours innovative projects which would probably not be in the reach of non-profit budgets and would require classic consulting otherwise. Furthermore, even if they were to be some competition, it would not be unfair : the French law allows some non-profits acting for the public good to benefit from an access to low cost resources based on tax savings offered to donors. It would rather be unfair to forbid such donations on the basis that non-profits should have bought these resources at market price or should have lived without these.
  • A former executive manager of a major IT firm in France, now head of a non-profit: “My non-profit would not accept Wecena services because they are based on the short and variable ‘on the bench’ periods of consultants rather than on full-time consultants donated by IT firms for several months each year. As a head of a non-profit which is organized as a governmental agency, he manages staff “the usual way” (permanent and paid staff) and refuses to rely on volunteering. Therefore, a model which induces high staff turnover rate among the pro bono consultants only has drawbacks for him (lower productivity, higher management and training costs) and no advantages (recruiting a high number of volunteers which keep on contributing on their free time). Furthermore, as a former head of a major IT firm, he can give a call to any other president or CEO in his former industry and can get free and easy access to dedicated consultants from such firms. Smaller firms can’t afford dedicating permanent staff to pro bono work. And they aren’t many IT firms with pockets deep enough and on-the-bench periods long enough to fund such long-duration pro bono dedicated offerings. Ideally I agree with him on the fact that dedicated pro bono staff delivers superior quality for classic IT projects. But I bet that wecena services deliver superior quantity of pro bono donations and even superior quality for some non-profit IT projects with a focus on building strong communities of volunteer contributors (think free software here).
  • The financial manager of an international NGO with a focus on eradicating extreme poverty : ” We do have needs for wecena services and would be more than happy to work with you. But we feel like your for-profit business margin is too high for us to accept your support. He was referring to the fact that, as a for-profit organization, we aim at making money on the services we would deliver to his organization even though it would be at no cost for him because we also take in charge the effort of obtaining such 100% of this budget from the IT firms donating pro bono work. I clearly see his objection as an objection with some ethical reasoning behind it : even though it is at no cost for them (we provide both the budget and the invoice), do we “deserve” that amount of money? Could they engage in what they may perceive as a “waste of money” ? Or an undue profit from a greedy corporation ? This sort of questions may resonate strongly in an organization dedicated at eradicating extreme poverty. The question for me was then : ” How can you make profit when working for a client which aims at eradicating poverty? ” My current answer to him/them was that I encouraged them to negociate the quality or quantity of services we offer them for a given price. If they feel like our price is too high (whatever their reasoning is), I starting engaging them in a negotiation. They accepted it and we have to meet again some time soon so that I can better understand what the deep ground of their objection is and how I can better answer it.
  • The head of an innovative Internet-based non-profit: ” We can’t ask for one of your grant immediately because your business model is based on an innovative exploitation of tax regulations which might expose us to tax risks. We’d prefer other non-profits to start first! This objection has some common sense in it I guess : are pro-bono-on-the-bench-consultants tax-risk-proof? My answer is a definite yes because it is the answer given to me by several experts in the field of the French tax law : my accountant who is also head of a firm offering legal tax advices, a close relative who is a university professor in tax law, the financial managers of the several IT firms I am recruiting as donors, and, last but not least, the lawyer in charge of legal training of donors and non-profits at Admical, the French organization for the promotion of industrial and commercial philanthropy which is also at the root of the French tax law on corporate donations. As a marketing argument, I may have to buy a formal white paper from a tax law firm some day…

That’s it. Do you have other objections ? What do you think of my responses to the objections above ?

How others have tried to solve the issue wecena services are to solve?

Monday, November 3rd, 2008

[This post is the 5th part of my preparatory work before applying to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG). You can follow the latest posts for that work using the echoinggreen tag on my blog.]

Echoing Green suggests the following steps before applying to their fellowship program :

Find at least three other organizations that work in your field, work with the community you will serve or work in the same way that you hope to. You can find these organizations by talking to experts, reading articles, and searching the Internet. [...]

Wecena services are pro bono information technology services offered to non-profits by IT services firms with additional consulting and support from us. Wecena services aim at filling the digital divide between innovative non-profits and modern corporations, with a focus on big IT projects (more than 1 man.year of staffing needs) and on non-profits with some presence in France. Who’s trying to address similar issues and how do we differ from each other ?

  • NTEN: an international nonprofit organization based in the United States, NTEN is the trade association for nonprofit technology assistance providers. We share similar values and goals. But NTEN does not provide non-profits with access to pro bono IT services. And it has no strong presence in France.
  • CompuMentor provides technology assistance internationally to other non-profit organizations. Its TechSoup website provides non-profits with access to donated IT products (software and hardware) but not to pro bono service.
  • Some IT corporations directly offer non-profits pro bono IT services. For instance, Accenture France donates about 10 full-time equivalents of IT engineering or consulting work to non-profits organizations. The TechSoup website lists at least 2 smaller US firms offering some pro bono services. Several others private pro bono IT initiatives probably exist elsewhere but may not be publicly advertised. Wecena services and Accenture France pro bono missions are similar in nature (IT engineering, integration, training or consulting). They differ in some of their characteristics. Accenture France dedicates consultants for individual missions that may last up to 6 months. Individual interventions for wecena services offered by other IT firms may be much less shorter because they are based on the “on-the-bench” periods of time consultants go through when they are not yet assigned to a new commercial project. As a result of this constraint, wecena services introduce a huge rate of staff turnover in the pro bono team. This cause of lower individual productivity is partially compensated by the use of specific management methods and tools, by the additional support and consulting we directly offer to non-profits and by the rate at which individual consultants are turned into volunteers when their pro bono intervention ends. Note also that all IT firms can’t afford offering pro bono work the Accenture way: smaller firms can’t afford dedicating 6 months of a consultant to a non-profit ; and firms offering engineering services rather than consulting services have much shorter “on the bench” periods of times (the cost of pro bono work for them in therefore higher). Wecena services are costless to IT firms because they are funded by “on the bench” costs and tax savings. Long-duration pro bono missions cost much more to donors. Wecena services allow IT firms to give a try at pro bono services and invite them to go further into corporate philanthropy at their own pace. It lowers the barrier to entry for would-be philanthropist firms.
  • Other IT firms in France (for instance Steria and its corporate foundation) offer grants to innovative non-profits with strong IT needs. However they don’t offer pro bono consulting but rather encourage employees to volunteer on their free time (optionnally with a yearly couple of work days donated by the firm as a complement).
  • The Taproot foundation is an American foundation. It aims at engaging the America’s business professionals in pro bono service. It offers 4 practices : marketing, HR, strategy and… an Information Technology practice. This IT practice offers 3 possible pro bono projects : a donor database, a simple website or an advanced website. Each of these projects have an estimated value between 30.000 $ and 35.000 $ which may include some software licensing cost. It does not offer pro bono grants out of a limited number of US cities. Wecena services have a primary focus on French non-profits. Wecena services are limited to IT projects (no other practice). The lowest value wecena services can offer per non-profit is twice bigger (50 000 EUR) and even aim at delivering a value of 100 kEUR to 150 kEUR per non-profit in IT staffing (software licenses not included). The Taproot foundation model of pro bono services probably does not have a specific focus on the “on the bench” periods of time for IT consultants whereas the wecena model does have such a focus which allows lower cost for IT donors and therefore, potentially, a higher volume of donation and a high number of donors.
  • Betobe, Coobalt, Passerelles & Compétences are French organizations which offer matching systems between volunteers and non-profit organisations to foster collaborations online or offline, with or without a focus on IT needs. None of them target IT firms and pro bono service.
  • Mobee and Koeo are French web platforms matching non-profit needs with pro bono donors. None of them have a particular focus on IT needs. None of them specifically focuses on marketing IT pro bono service as an ideal pro bono solution for IT firms. They don’t offer additional IT consulting services to non-profits. Similarly to the previous category of organizations (Passerelles & Compétences-like), they usually grant support for short missions (a couple of weeks long) rather than focusing on “big” projects whereas wecena services are designed for IT projects with a big staffing need (at least one man.year). Other similar platforms are emerging with a focus on complementary or redundant niche non-profit markets (environment, culture, poverty, education, …) rather than a focus on industry-specific (or skills specific) pro bono solutions.

Note to commenters: for this post, don’t spend too much time on my English spelling/grammar/style because this post may not be included in my EG application. I’d rather like to know what you think of the clarity of how wecena services relate or differ from each of these other actors and models.

What’s the logic of our wecena idea?

Monday, October 27th, 2008

[This post is the 4th part of my preparatory work before applying to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG).]

EG suggests I analyse and explain how our work will move from the problem to the stated goal. Here are 3 questions they ask and my attempt at answering them. Please enhance and/or challenge my answers by posting comments.

Their 1st question, about the root cause :

Does your intervention match up well with the specific problem or is it addressing some other issue ?

My answer :

We are responding to the non-profits inability to market IT pro bono services donations as a significant source of value for the IT services industry. We do this by selling French IT services firm a skills donation solution that allows them to rise their corporate social responsibility profile at no cost. This is made possible thanks to unique and under-exploited opportunities offered by the French law and thanks to an efficient online donation management tool. We compensate the non-profits lack of IT project management skills by offering them our training and consulting assistance.

Their 2nd question, about our intervention :

Is your intervention detailed enough to explain the exact way clients will benefit from your programs ?

My answer :

The wecena opportunity is advertised via a website and blog conversations. French top social innovators with strong potential IT needs are identified and contacted. Their projects are selected on the basis of their leadership capacity to manage donated skills with our assistance. A direct B2B sales effort then let’s us recruit medium-sized donor firms from the French IT services industry on their behalf : we “sell” these donors the rising importance of corporate social responsibility for their banking and industrial customers and for recruiting and retaining the best talents ; and we emphasize the fact that they can compensate 100% of the cost induced by these donations both with the fact that their “on-the-bench” consultants keep receiving their salary anyway (because of the French labor law) and with the significant tax savings offered to corporate donors by the French tax law. Non-profit recipients accept that consultants leave their project team as soon as they are assigned to a new commercial mission by their employer. This induces a high rate of project staff turnover. Combining online knowledge management tools, “open source development” and “agile development” methodologies, our training and consulting services allows the project leadership team to cope with this turnover rate. Our online donation management tool allows skills needs to be published and updated by non-profit leaders. Consultants from the donor firms volunteer for the projects that best match their motivation and experience. Our tool also automates the emission of monthly tax receipts which let donors compensate their effort with tax savings. We thus limit the administrative overhead for both the non-profit and the philanthropist.

3rd EG question :

Will your intervention logically produce the specific outcomes you desire ?

The French labor law and tax law enable sustainable and win-win relationships between innovative non-profit organizations and IT services firms. Our assistance allows non-profit teams to cope with the high rate of project consultants turnover induced by the wecena donation mechanism. As a consequence, a constant flow of skilled and motivated consultants feed the non-profit project team on their work time. As a follow-up to their individual donated intervention, a portion of them keeps on intervening as volunteers on their free time. Professional IT support communities can be built. Innovative and ambitious IT projects can be led at low cost. This allows non-profits of all fields to extend the reach of their social programs, accelerate them and produce impactful social change with modern tools.

Note : I am not sure I am satisfied by this piece of my preparatory work. I feel like this is not fluid enough and I may loose the reader by providing too much (or too blurry?) detail. I don’t know… What do you think ?

What will the wecena community look like when we’ve solved the problem?

Friday, October 24th, 2008

[This post is the 3rd part of my draft application process to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green.]

Once the problem of giving innovative non-profit access to professional IT skills and services at no cost is solved, what will the wecena community look like ? This is the question EG suggests I answer before submitting my application to their fellowship program (see page 8 of their applicant coaching guide). Coach me by commenting my answering attempts below.

EG suggests I start by answering this 1st sub-question :

If your work succeeds, what will the headline in the newspaper say ?

Let’s try such a headline for 01 Informatique or ZDNet :

” Pro bono IT services a critical enabler for major social innovations from education to environment via poverty reduction. ”

Or this one for the French non-profit press (Reporters d’Espoirs anyone ?) :

” An army of computing experts and corporations join the fight for free access to education in villages of the South. French non-profits at the front. ”

Or

” Information technology for social good no more a dream. Low budgets no more an excuse from non-profit boards. ”

For the global press, possibly headlines such as :

” Who’s the best in IT? Exxon Mobil or Greenpeace? Wecena the secret IT weapon for environmental innovations. ”

” U.S. Congress to pass a France-inspired law in favour of pro bono service donations. ”

And ultimately (just for kidding ?) :

” Price of IT pro bono services on the rise at Wall Street. IT shops on the race for CSR awards. ”

2nd sub-question from EG:

If your work succeeds initially and then your organization ceases operations what will the impact on society be ?

My answer :

Wecena’s business model is designed for generating enough profits so that competitors gain an incentive at emerging and replicating our model. Our earlier successes, financial transparency and benefits sharing will prove there is a profitable market for IT pro bono services delivery channels. Several organizations are already well positioned to contribute to such a market: sustainable development consultancies, consulting agencies dedicated to non-profits, philanthropy consultancies, non-profit technology assistance programs. In the end, this will give the most innovative non-profits access to a reliable and cost-efficient source of corporate IT pro bono services.

3rd sub-question for setting goals :

How will you measure the volume of your work? And what goals do you have for each in the short and long-terms?

OK. I’m a bit bad on this one. I can think of indicators of success. But I yet have to specify expected levels of success for these indicators. Too high and I am too optimistic as it would probably exceed our capacity to fund and manage growth. Too low and it would not show the passion there is for this project. Here are the reasonable indicators I am thinking of :

  • number of full-time equivalents (FTE) donated annually by IT corporations to wecena customers (non-profits) as of pro bono service deliveries : 4 FTE in the end of 2009, 10 FTE in the end of 2010, total available market of several hundreds of FTE in France only (woo hoo !)

Next sub-question, probably harder :

How will you measure if your work is making a difference? And what goals do you have for each measure?

My best guess at the moment :

  • median duration of relationships with non-profits (customer retention) : the more they keep accepting donations, the more useful they probably think these donations are : goal = after 2 years of operation (starting from our first operation), expected median duration of at least 6 months for non-profits having accepted first donation more than 1 year ago.
  • volunteer recruitment rate : percentage of IT engineers led to volunteering for “their” non-profit after a pro bono realization with us (rate of volunteering after the end of a wecena mission) => let’s say I’d be very happy if 10% of the wecena engineers kept on contributing at least once two weeks after the end of their individual intervention
  • increased understanding and knowledge of social challenges and innovations by IT employees and managers : => 50% more correct answers to online quizzes proposed by non-profit recipients at the start and at the end of any individual interventions
  • increased understanding and knowledge of IT uses and managements by non-profit members : => 50% more correct answers to online yearly quizzes proposed by us + IT donors.
  • profits (supposed to come with sucess in order to prove there is a market) : at least 5% after 2 years from the start of the 1st operation ?

There would be other indicators to monitor but I am not sure how to collect such data and how to process it so that we isolate our specific contribution :

  • evolution of the percentage of IT service companies donating pro bono services (market donors rate)
  • % of IT pro bono services in non-profit budgets (the more, the merrier)
  • evolution in the perception of technology by non-profit social innovators : we can survey this but I am not sure how to best setup such a survey so that it is reliable, comparable and relevant year after year
  • Cost, outreach and impact depth of social programs powered by our IT pro bono services compared to similar programs not relying on our services => this would be the real evidence of success but I don’t think we can acquire and process such data ; ideally, technology wecena gives access to would make multiply the impact and/or reach of a social innovation by a factor of 10 : ten times more people accessing open education programs, ten times more people with disabilities turning to computers as a daily tool, ten times less effort for homeless people to find a job, etc.
  • Qualitatively, I would like to hear from non-profit boards that recognized social innovators set themselves new social goals because of the technologies wecena can give them access to.

Hey, what to do you think ?

What is the underlying cause of the problem wecena is trying to solve ?

Friday, October 24th, 2008

[This post is part of my draft application process to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena.]

EG 2nd pre-application question: Root Cause Analysis: What is the underlying cause of the problem you’re trying to solve ? see page 7 of the applicant coaching guide.

1st sub question :

What are the obvious symptoms / apparent effects of the problem ?

My answer :

There are 2 apparent symptoms or effects of our problem:

  1. there is a lack of technology-based social innovations compared to both existing social challenges and to existing non-social innovations
  2. most non-profit organizations under-exploit the capacity technology can bring them when trying to transform society, organizations and markets

2nd sub-question from EG :

Why is it so ?

My answer :

The cost of IT professionals is much too high for non-profit budgets. IT man-days are too expensive on free markets.

3rd sub-question from EG, trying to get deeper to the root cause of our problem

OK. But why ?

My answer :

IT service companies sell expensive services and donate very limited amounts of pro bono services. They usually ask for payment, even when pro bono services would bring them more indirect value at no cost. These donations could indeed be of no cost for donors in France because of an extremely favorable legal framework.

4th EG sub-question on this, getting even deeper to the root cause :

Why is it so ?

My answer :

Non-profit organizations do not offer IT service companies opportunities to donate pro bono services at low (or no) cost and with the promise of a high social impact that will also bring real value back to the donor in the form of reputation, talent retention and better recruitments of fresh engineers.

5th step suggesteed by EG :

Based on this, what’s the root cause of your problem ?

My answer :

Non-profit organizations don’t have appropriate skills and knowledge for creating, marketing and managing an offering to IT service companies that would present pro bono service donations as a compelling solution for addressing the need these companies have to prove their “corporate social responsability” at low cost. Moreover, most non-profit organizations lack the IT management skills that would allow them to collect, deliver and exploit such pro bono donations at a sustainable cost.

We’ve got our root cause (I think). But EG wants to asks a last :

Why ?

My answer :

Legal frameworks encouraging and facilitating IT pro bono services are nowhere as favorable to donors as in France. But some of these laws were passed recently (2003, updated in 2008) and are still under-used and unknown by many potential donors and recipients. Moreover donor-to-recipient intermediation costs for the delivery of pro bono services are high. And such deliveries are complex to adapt to the business constraints of both corporate donors and non-profit recipients : IT service companies want their engineers and consultant to commit to profit-making long-term missions and can’t afford to miss commercial opportunities because of commitments toward non-profit projects. Competition is fierce and consultant profiles are too often seen as “replaceable” with one another. And because of low budgets, non-profits rarely attain a critical mass of IT needs that would let them justify launching such innovative partnerships.

So what ? EG suggests we end with deriving …

What are the implications for your work ?

My answer :

Wecena proposes an integrated IT pro bono services donation channel that exploits the French labor and tax laws at their best and for the highest benefit of public good. By only focusing on the non-profit needs for IT services and skills, we accumulate experience and efficiency both in how to market our donation proposal to the IT industry and in how to let non-profits exploit such donations at their best, despite their lack of IT management skills. This focus is also critical to maintaining relatively low intermediation costs.

More precisely, IT donors aren’t asked to commit individual consultants to a given project but to commit to a certain amount of service donation to non-profits. This can generate extremely high staff turnover (individual consultants leave projects as soon as they are assigned to a new commercial mission). But this allows projects to benefit from a continuous flow of skilled professionals to be then turned into online volunteers. As a consequence of this, projects have to be carefully selected on the basis of how resilient they can be to extreme staff turnover. And corresponding project management tools and methods must be offered to non-profit leaders.

Help me earn 60.000 USD for wecena

Friday, October 24th, 2008

Wecena services are my new social venture. The US-based Echoing Green non-profit organization helps social entrepreneurs with a 2 years fellowship program and seed grants including 60 000 USD for the take-off of high-social impact projects. You can think of them as a social venture fund. I’d like to apply to this project competition so that the wecena concept succeeds at bringing corporate-grade information technology to the hands of the most innovative non-profits in France and all around the world. The deadline for this year applications is December 1st, 2008.

Readers, I need your help.

You can help by reviewing the next posts on my blog (I will use the “echoinggreen” tag, you can use this links for follow-up posts). I will post pieces of my draft application to the Echoing Green fellowship program. You can help if you are an English speaker (possibly native…) : I need you to correct my English language and style. You can help if you feel concerned with the importance of information technology and the Internet for serving the public with high-impact and broad-reach social innovations : I need you to help me making the case to Echoing Green. You can help if you like my project and would like to contribute one way or another : just tell me you support this whole stuff and share any comment or thought. If you have a couple of hours available for helping, you can even start by reading Echoing Green’s applicant coaching guide.

You can contribute in English (preferred) or in French (ça ira tout aussi bien). In case you are reading this from the wecena.com website, note that your comments have to be posted on my personal blog (link below).

Let’s start with the 1st pre-application question

Let’s start with Echoing Green (EG) ’s pre-application tools. EG suggests applicants (me) should use their questions to prepare their application. Let’s try with the 1st question (page 6 of the coaching guide) and throw an answer…

Problem Definition, What specific problems are you focused on and can you realistically solve it?

Their 1st sub-question :

What specific injustice in the world have you seen that compels you to start a new social change organization ?

My answer:

Non-profit social innovators lack access to corporate-grade Information Technology (IT) skills and services. This is a form of digital divide between non-profit and for-profit innovators. Why would information technology be primarily made to buy more stuff or spread more advertisement ? Why isn’t it more importantly made and used for fighting poverty, overcoming disabilities, sharing education or enhancing public health ?

2nd sub-question from EG :

Who, specifically, is hurt or affected by this injustice and how does the injustice manifest itself ?

My answer:

Beneficiaries of all fields of social innovations suffer from the lack of technology-powered social innovations and from the under-exploitation of technology by non-profits. Had non-profit innovators been given resources to better use technology, the reach of their programs would have been extended, their ability to transform organizations, markets and society would have been increased. More beneficiaries would have been helped better and earlier. Unseen social innovations would have been launched and developped.

EG 3rd question for defining the problem:

Is it realistic that a single organization could address this injustice ? if not, define the problem more narrowly ?

No. We only focus on the access by French non-profits to significant amounts of IT skills and services. Accessing software or hardware is out of our scope. We also only focus on IT needs that represent at least one full-time equivalent of services and skills. Smaller needs and projects won’t be supported (at least not immediately). Direct help to foreign non-profits is not in our immediate scope but we are considering partnerships with foreign non-profits in the need of free IT skills and services when it can increase the social efficiency of our effort by supporting higher impact global social innovations.

That’s it. What do you think ?

What should be the EU ICT R&D policy ? Tell them

Tuesday, September 9th, 2008

A nice article and hopefully useful survey (runs until 7 November 2008) that will let you have your say on what the EU policy should be regarding Information and Communication Technology R&D.

Very long-term backup fabbed with a reprap ?

Tuesday, August 26th, 2008

How will your personal data be readable 2.000 years from now ? The Long Now Foundation blogs about a nickel-based 3 inches-large disk that can reliably hold high amount of printed data for at least 2.000 years. Data is printed on it in small font : a 750-power optical microscope is required to read the pages !

On the other side of the blogosphere, the reprap community considers adding an ElectroChemical Milling (ECM) tool head to their home DIY 3D printers :

With this tool head, it could machine any conductive material, regardless of how hard it is or how high its melting point.

Maybe someday, personal very-long term backups will be printed at home ?

At the moment, industrial ECM/EDM machines can “achieve a one micron positional accuracy and wire EDM walls as thin as 0.010” (.254mm)” or (ECM) make holes/traces  as small as 0.2 mm large. I guess some progress is required before 750-power optical microscopes are required for reading data printed with this technology. But maybe that before 2.000 years from now, ultra-precision will be achieved by fabbers ? Id be curious of knowing which technique was used by the Long Now Foundation project and how difficult it would be to port this technique to the wonderful world of fabbers.

Rapid prototyping with microcontrollers ?

Monday, August 25th, 2008

I have no clue about micro-electronics and embedded systems. I am a Web application architect and developer, working with very high-level programming languages such as Python (or Perl or Java). I hardly remember assembly language from my childhood experiments with an Apple IIe and almost never touched C or C++. But I have been dreaming lately of rapid-prototyping some advanced non-Web application in an embedded system using my programming skills. So I thought I could share bits of my ignorance here. Please bear with me and give me some hints in order for me to best get out of darkness ! :)

Microcontrollers are now gaining capabilities that are comparable to microprocessors of early personal computers. The two most popular microcontroller (uC) series are Microchip PIC uCs and Atmel AVR uCs. For instance the PIC18F25J10-I/SO costs around 3 or 5 euros per unit at Radio Spares (I am in France: think RS in the UK or Allied Electronics in the USA). It has the following characteristics: 40 MHz, RS-232 capabilities (serial port), a “C compiler optimized architecture”, 48 kB of program memory (Flash mem) and around 4 or 5 kB of data memory (SRAM + EEPROM).

There are nice peripherals available, too. For instance this Texas Instrument CC2500 2.4GHz RF data transceiver (= transmitter + receiver) at around 2 to 3 euros per unit or current sensors approximately at the same price. In fact, periphals possibilities are limitless…

For free software hackers, there was a linux version for such chips : uCLinux. But is it still an active project ? I think I read that the comon linux kernel now includes everything that is required for it to run in embedded sytems. What about GNU utilities ? I know there are things like busybox on bigger but still embedded processors (phones). Anything equivalent on microcontrollers ?

There are simulators that will… let you pretend your desktop computer has a microcontroller inside, or sort of. :)

There is at least one C library for microcontrollers. C is considered as a “high-level programming language” in the embeddeds world ! That is to say that assembly language has been the norm. Some higher-levels languages can be used with microcontrollers, including some exotic-to-me Pascal-like languages like XPlo or PMP or Java-like but living dead things like Virgil and… what about my beloved Python ?

There are at least 2 projects aiming at allowing Python-programming on microcontrollers. pyastra is a “Python assembler translator” that can be used with some PIC12, PIC14 and PIC16 uCs. But it looks dead. Pymite looks sexier but not much more active :

PyMite is a flyweight Python interpreter written from scratch to execute on 8-bit and larger microcontrollers with resources as limited as 64 KiB of program memory (flash) and 4 KiB of RAM. PyMite supports a subset of the Python 2.5 syntax and can execute a subset of the Python 2.5 bytecodes. PyMite can also be compiled, tested and executed on a desktop computer.

At the moment, it seems like Python programming on microcontrollers is a dead end. Nothing worth investing time and efforts unless you want to also have to maintain a Python compiler… Same may be true for Java, not mentioning Perl. In fact, it seems to me that the object-oriented crowds are too far from microcontrollers applications to generate enough interest in initiatives such as Pymite, at the moment. Oh, and I am knowingly ignoring C++ which I did not investigate, having no experience in C++.

So what is left in terms of (open source) programming languages that would be of higher level than C ? The best guess I can make is Great Cow Basic, which is a free software Basic (procedural) language. Example programs look nice to me. It has been active recently. And it supports most of the chips I would consider experimenting with.

Next steps for me, I guess, would be to pick a PIC simulator and an IDE for Great Cow Basic (any eclipse plugin ?). Then I will probably have to figure out how a Basic program can be executed on a simulated PIC. And how a PIC simulator can be useful without all of the electronics that would surround it in any real setup. I’ll see that. When I have time to pursue my investigations and experiments in this micro-world.

And piclist is a great site for beginners.

3D scannerless scanning for fabbers

Monday, August 25th, 2008

For several weeks (or more), I have been dreaming of the day I’ll get my hands on a Reprap (self-parts-printing 3D desktop printer, a DIY fabber). I have been lucky enough to have a good friend promise me he would give his free time for assembling such a printer for me as long as I pay for the parts. 3 days of work are required to assemble the parts which you can order via the web in case you don’t already have access to such a reprap, which is my case. I will try to wait for the next major release of Reprap, namely Mendel 2.0 (current version = Darwin 1.0) unless I can’t resist temptation long enough…

Anyway, I have mainly been dreaming of possible applications of fabbers. Their use is extremely competitive (and disruptively innovative) as soon as you want to print customized 3D shapes which can’t be bought from the mass-manufacturing market. For instance, a reprap is cool when you want to print a chocolate 3D version of your face (see the Fab@Home project) or a miniature plastic representation of your home or anything that has a shape which is very specific to your case (not to mention the future goal of printing 90% of complex systems such as robots, portable electronic devices including phones and… fabber-assembling robots…). And this is where 3D scanning is a must : with a 3D scanner, you can scan an existing object and build a 3D model from it which you can then modify and print at the scale you want.

So my dreams lead me to this question : I could get a fabber some time soon but how to also get a desktop 3D scanner ? Some people have already started hacking home 3D scanners. But I had also heard of techniques that allow users to build 3D models from existing objects using either a single picture of the object, 2 pictures, several images or even a small movie. Some techniques require that the parameters of the camera(s) are known (position, angles, distance, …). Some techniques require 2 cameras in a fixed and known setup (stereophotography). Some techniques require that the camera is fixed and the object lies on a turntable. I really know nothing about computer vision and the world of 3D techniques so I was happy to learn new words such as “close-range photogrammetry“, “videogrammetry“, “structure from motion“, “matchmoving“, “motion tracking” (which is the same as matchmoving) or “3D reconstruction“. After some Web wandering, I identified several open source (of course) software packages that could offer some workable path from existing physical objects to 3D models of them using plain cameras or video cameras.

The idea would be the following :

  1. you take an existing, very personal object, for instance your head !
  2. with a common digital camera, you take pictures of your head from several angles
  3. you load these pictures into your favorite 3D reconstruction free software package
  4. it creates a 3D model of your head which you can then export to a 3D editor for possible adjustments (think Blender)
  5. you export your corrected 3D model into the reprap software stuff
  6. your reprap fabs your head out of plastic (or chocolate ?)

Here are the software projects I identified :

  • From a single image :
    • jSVR, Single View Reconstruction, a semi-automatic process for identifying and exporting three-dimensional information from a single un-calibrated image, dead project ?
  • Using a turntable :
  • From stereo images :
  • From a movie or a sequence of pictures :
    • e-Foto, a free GNU/GPL educational digital photogrammetric workstation, but is it suitable for close-range photogrammetry ?
    • Voodoo Camera Tracker, a tool for the integration of virtual and real scenes, estimates camera parameters and reconstructs a 3D scene from image sequences ; oops, this is not free software but freeware only
    • Octave vision, Algorithms for the recovery of structure and motion, using Octave, a one-shot development, no future…
    • Tracking / Structure from Motion, another piece of student homework
    • libmv, a structure from motion library, which plans to one day take raw video footage or photographs, and produce full camera calibration information and dense 3D models, very promising but being rewritten at the moment (August 2008)
    • GPU KLT a high-performance research implementation
  • Using the shadow of a stick (!) :
    • Scanning with Shadows (see also this site), wave a stick in front of a light source to cast a shadow on the object of interest, and figure out its 3D shape by observing the distortion of the shadow
  • Don’t know which technique is used :
    • OpenCV (see also this site), Intel’s Open Computer Vision library may some day contain some 3D reconstruction capabilities
    • Voxelization, a .NET based framework, designed for helping in development of different volume reconstruction, 3D voxel visualization and color consistency algorithms in multi view dynamic scenes, dead project ?

My personal conclusion :

I haven’t tested any of these packages. At the moment, there seems to be no easy-to-use free software package that would compare to commercial stuff such as Photomodeler or ImageModeler or research works such as Microsoft Photosynth. However these techniques and algorithms seem to be mature enough to become present as open source package soon, especially given the emerging interest in 3D scanning for fabbers ! Most promising free packages for scannerless 3D scanning for fabbers are probably Stereo and libmv.

What do you think ?