Archives pour la catégorie written in English

Blockchains for social good

The blockchain technology underlies crypto-currencies such as a bitcoin. But its power goes far beyond currency trading, money transfer and purely financial applications. Many idealist pragmatists want to change the world using the blockchain technology. Here is my attempt at listing projects and applications which aim at making some social impact using blockchains.

Please don’t hesitate to drop me an email (sig at akasig dot org) or post a comment below if you know of other applications of the blockchain technology for social good !

Economic development, poverty alleviation, financial freedom, wealth sharing

The blockchain might make « the world’s unbanked a viable new market » , « bring banking to the underserved »… There are drafts of smart contracts being hacked for blockchain-based universal bankind accounts at CommonAccord. Their interview on the French radio BFM explains their project (minute 24.21).

Caricoin launched a mobile bitcoin wallet in order to provide banking services to the unbanked in the Caribbean, about 50% of the population in some areas there.

BitPesa uses Bitcoin to reduce money transfer fees for Kenyans. Future Perfect Ventures states :

It is the first pan-African blockchain-powered payment network. After careers in finance, technology and development, the founding team saw opportunity in emerging blockchain infrastructure to reduce business-to-business and peer-to-peer payments from 12-20% to 3%, putting money back into the pockets of businesses and individuals who are now able to save and invest more back into the economy as a result.

Abra is also backed by Future Perfect Ventures :

Bill Barhydt, founder of Abra, is a veteran of the cross-border money remittance sector.  He saw firsthand the inefficiencies created by multiple intermediaries including Western Union and banking institutions, which extract significant fees for small transactions.  With emerging markets rapidly adopting smartphones, Bill saw opportunity in enabling local agent networks in these markets with a blockchain powered app that would reduce fees for the sender and recipient, and provide agents with access to a broader customer base.  Launched in 2015 at the Launch Festival (where it won Best Startup), Abra is now live in the Philippines with additional markets to be announced in 2016.

Ripple « transfers money to anywhere in the world, in any currency, instantly ». « It allows for banks around the world to directly transact with each other without the need for a central counterparty or correspondent. »

4G capital lets donors fund small business in Kenya using digital currency which is then converted and distributed to the businesses

WeiLend implements a peer-to-peer lending contract.

There are several attempts at establishing a basic income, voluntary taxation or wealth-sharing scheme with blockchains :

  • Group Currency is a conceptual framework for blockchain-based basic income
  • Circles is an implementation of a Group Currency, proposing a universal basic income within a group of subscribers
  • Duniter is another implementation of a Group Currency and blockchain-based universal income.
  • Johan Nygren’s resilience.me and basicincome.co were an early attempt which has gone nowhere beyond generating some welcome buzz and public awareness (at least it seems to me).

Education and learning

The introductory video of the « Learning is Earning 2016 » concept by the Institute for the Future develops an ambitious and controversial vision of the use of blockchains for education and lifelong learning.

Badgechain is an open community of open badge enthusiasts discussing uses of blockchains for education.

The Sony Global Education division of the company has developed technology that uses the blockchain to house educational data that can be securely shared with other services and third parties.

OTLW was founded in Kenya (Kenya and blockchains with social impact, once again…) and proposes otlw-assess, a blockchain-based system for secure universal assessment of skills and knowledge and otlw-publish, a system for facilitating the distribution of micropayments to authors of (educational?) documents, I guess from persons citing their documents.

Several universities use blockchains to authenticate the deliverance of degrees or other academic certificates : University of Nicosia, MIT Media Lab, Holberton School as well as the Ecole Supérieure d’Ingénieurs Léonard de Vinci.

Preserving energy and the environment and limiting climate change

Grid Sindularity is a decentralized energy marketplace and energy data exchange platform. TransActive Grid is also a blockchain-based energy marketplace but it focuses on local peer-to-peer home-produced energy trading, not unsimilarly to DAJIE and its blockchain-connected energy boxes (except maybe DAJIE’s community is not necessarily local ? I don’t know).

The French Lumo and its Solarcoins allow consumers to invest in the shared production of renewable energy. Lumo recently plugged into the ElectricChain which shares solar energy data on the blockchain from 7 million solar facilities, for scientific and commercial purposes.

Solether is like a Cash machine but it distributes electricity from its solar panel (for instance when you want to charge to mobile phone) in exchange for blockchain payments, instead of distributing cash.

ClimateCoin incentizes the offsetting of carbon emission by letting donors and carbon emitters to give ethers to persons who plan trees or reduce CO2 emissions in other ways, in exchange of public and secure carbon offset receipts.

decibel.LIVE incentizes local businesses to reduce the level of ambient noise they are making in the neighborhood by letting them earn public and secure receipts of noise reduction from local mobile phone users who monitor ambient noise from a blockchain app on their phone and receive micropayments in compensation for their monitoring.

La’Zooz and Arcade City aim at developing ridesharing and uberizing Uber by not having to trust any central party be it a taxi company or Uber.

Health, independent living and accessibility

MyHealthIRL provides « health wallets » which gives your control over your health records (including their sharing and privacy) and facilitates second medical opinions for instance. TrustlessPrivacy seems to aim at the same target.

PointNurse is a web and mobile nursing platform empowering healthcare providers (nurse practitioners, medical doctors, …) to provide online consultations and support for patients. Payments and health data sharing seem to be secured on a blockchain as well as sharing of the profits generated by the platform, hence its promise of being « member-owned ».

EyePi is a blockchain-based platform that allows pharmaceutical laboratories or other actors of the health industry to outsource and « crowdsource » health-related innovation and research challenges to third parties and guarantee that these innovators and researchers are fairly rewarded.

The U.S. Department of Health and Human Services launched a (non-blockchain-based) contest for innovators to propose use cases of blockchain technologies within the healthcare industry before August 2016.

Impact investing, investing on social impact and smart social impact bonds

ImpactGrid is a blockchain-based smart investing platform and marketplace. It is to provide a transparent and secure solution for measuring and reporting social impact and to allow users to invest in the most impactful social innovations. This project is led by the Indian Investrata Foundation for Social Entrepreneurship.

The UBS bank runs experiments on a blockchain-based experimental trading platform. UBS gave some of its experimental code to Finclusion Lab, a London-based fintech social enterprise, to develop a blockchain platform for the HEAL Alliance, a non-profit project looking into a cure for HIV. Using this platform, the HEAL Alliance wants to issue smart social impact bonds for raising funds for HIV research and letting people trade bonds in order to allocate most funds to the most promising cures.

Jaan Tallinn is the cofounder of Skype and the file-sharing app Kazaa. He says :

Incentive schemes, whereby people who have done the most good for humanity are rewarded 20 years into the future would create the expectation that doing long-term good is valuable.

Blockchains are supposedly good at identifying people doing some good, tracking their progress, recording and securing measures of their impact and rewarding them according to pre-established and immutable incentive schemes. Jaan Tallinn is

« compiling a research paper on ways of using blockchain to create more co-ordination mechanisms, » that can be used to save humanity from possible resource-based problems, « from crime and corruption to deforestation and over-fishing. »

Democracy, governance and transparency

Several blockchain-based software projects want to create secure and fully auditable online voting platforms : FollowMyVote, PublicVotes, V-Initiative, DemocracyOS to some extent, … The main drawback of current (non-blockchain-based) online voting software is that they are most often not open to public scrutiny to ensure the accuracy of the voting system. Ballots have to be verifiable. Blockchains bring an advantage of verifiability to online voting systems.

DCent is research project funded by the European Union (7th framework programme). It develops an open-source, distributed and privacy-aware tools for direct democracy.

But voting systems rely on unique identities so that one person casts no more than one vote. And blockchain don’t come with unique identities for persons : you can possess any number of accounts on a given blockchain. In order to work around this problem, as far as I understand, BitVote backs your vote with publicly registered evidences of the unicity (uniqueness) of your identity such as a track of time you spent browsing various web pages. Since you are unique, you can’t simultaneously spend a given short timeframe browsing a lot of distinct web pages. In order to ensure « one vote per person », BitVotes relies on « one browsing history per person ». Some sort of « proof of browsing » for proving your identity…

Deloitte sees in blockchains an opportunity for periperal countries to reduce losses due to corruption, bribery, thief and tax evasion while Provenance sees an opportunity for consumers to make companies more accountable for the impact their products have on the environment and local communities. Provenance allows consumers to learn about a product’s journey along its supply chain.

In order to limit corruption and enhance public transparency, several projects aim at building public ownership registries on top of blockchains without the help of third parties such as notaries and cadastre surveys. ProofOfExistence proves a given document existed at a given date and NotarEth provides a basic blockchain-based notary service : it proves you had access to a given set of documents at a given point in history. BitLand registers land ownership in Ghana. Regis is public blockchain application for registering ownership of digital assets. It is used by, among others, the BVRio Institute to protect the Brazilian rain forest by registering timber trading records. And Brian Singer, from the William Blair investment firm, explains how blockchain-based public registration of ownership will solve poverty.

It looks as if blockchain innovators were reinventing registry services, notary services and other legal services in a trustless and automated world which seems somehow ignorant of existing « local » laws and « dumb » contracts. How to bridge this gap between blockchain-based services and local laws ? CommonAccord « creates global codes of legal transacting by codifying and automating legal documents, including contracts, permits, organizational documents, and consents ». It offers a collaborative platform for turning existing legal documents into source code for automateable smart contracts on blockchains. See for instance this French employment agreement or the Paris agreement on climate change.

Safety, security, insurance and risk sharing

New businesses come with new risks. Case Wallet and Civic provide blockchain-based identity protection services against identity theft and fraud. Civic offers identity theft insurance.

Regarding more traditional risks, many insurance startups invest on blockchains. Dynamis provides supplemental unemployment insurance. InsurEth provides flight insurance. Wekeep provides (undefined yet?) mutual insurance services. Others provide infrastructure software for blockchain-based insurance : Allied Peers is an insurance software engine and Dactuary decentralizes actuary services.

FarmShare implements a distributed « community-supported agriculture » platform which lets farmers share benefits of food production and risks such a low crop yield, environmental abuse or even some form of social abuse.

Even the UK government gets into the party by trialling the Blockchain for Welfare & Pensions.

Conclusion

The blockchain revolution has just begun and decentralized applications for social impact and social innovations are just emerging. Most social entrepreneurs come for traditional non-profit management or business schools and it make take some time for them to grasp the potential benefits of blockchain technologies over traditional web and mobile technologies.

For more socially impactful applications of blockchain technologies, I am looking forward to reading about the ideas being collected by the Blockchain Social Impact Challenge. Other useful sources of news to keep an eye on are the State of the Dapps site and the Social Tech Guide.

Please comment below if you know of other dapps having a great potential in terms of social impact or drop me an email (sig at akasig dot org) in case the comment section below is closed and I will update this article.

How to run Tesseract from web browsers with the help of emscripten

Tesseract is a fairly accurate Optical Character Recognition (OCR) engine available as open source and free software. It’s written in C and C++ and usually runs from the command line or from a GUI. But I work on a web application where we have to let thousands of users run OCR tasks from their web browsers without having to rely on server-side processing. So we asked our great Capgemini developers team to compile Tesseract so that it could be executed from Javascript code. This is were emscripten is useful : it allows programs written in C to be compiled into Javascript. This compilation was tricky but they made it.

Here is their HOWTO documentation.

I share it under the Create Commons CC-BY-SA 3.0 license so feel free to improve it as you like.

How to test lean canvases in the optimal order ?

I have portfolio of lean startup ideas or one startup idea but several versions for its lean canvas. And I have a limited capacity for testing these ideas. I can’t test all of them simultaneously and I wonder : which one should I start testing first ? which lean canvas should I start with ?

First, let’s remember why we always start testing the most uncertain hypothesis when given one canvas. For your startup to be a success, all of the hypotheses in the canvas have to be tested and validated as true. Hence the cost of testing the whole canvas : it is the sum of the costs for testing each and every of its hypotheses. You test the canvas and test it further and cumulate testing costs. But if ever the hypothesis you just tested is false, you have to pivot and start again with a modified canvas, a new version of your canvas, or you have to put that project aside and further test another one. You therefore hope you start by testing a false hypothesis rather than a true one. You’d rather spend as low as possible before invalidating the whole canvas. By failing fast, you limit the cost of testing the whole canvas and you can start with an hopefully better version or give up with this project. In other words, you should try to pick the hypothesis which has the highest probability of being false. That’s the most uncertain hypothesis.

But one has to notice that some tests are expensive while others are cheap. How to take the cost of testing into account ? You should multiply the probability of each hypothesis with the cost required for testing it. You then pick the hypothesis which has the lowest product of probability and testing cost. Given a lean canvas, you can annotate your hypotheses :

  • P=1 for low probability hypotheses, P=2 for medium probability, P=3 for high probability,
  • C=1 for low cost tests, C=2 for medium cost tests, C=3 for most expensive tests

You then multiply P and C and get P*C products from P*C=1*1 =1 to P*C=3*3=9 and start with the lowest P*C hypothesis.

Now, let’s get back to my initial problem. I have a portfolio of lean startup ideas and have to pick the first one to be tested. Which idea should I pay the most attention to first ?

Let’s calculate the probable cost for testing a whole canvas. This cost is not the sum of the cost of each and every hypothesis in this canvas because I may have to abandon this canvas as soon as one of its hypotheses is proven to be false.

Let’s call :

  • H1, H2, …, H9 the 9 hypotheses in this canvas, in their order of testing (lowest P*C first)
  • p(H1), p(H2), …, p(H9) the probabilities of these hypotheses (0 <= p(Hi) <= 1)
  • c(H1), c(H2), …, c(H9) the cost for testing these hypotheses
  • C the probable cost of testing this whole lean canvas of hypotheses

At first, there is the cost of testing H1. If H1 is found to be true, you then have the cost of testing H2. But we don’t know beforehand if H1 is true or false. We have to take the probability of H1 into account before adding the cost of testing H2. So the cost of testing one whole canvas is :

C = 1*c(H1) + p(H1)*c(H2) + p(H1)*p(H2)*C(H3) + … + p(H1)*p(H2)*…*p(H8)*c(H9)

Let’s assume that all of these costs have the same order of magnitude. Then the terms on the far right of this sum are negligible compared to the first terms. In other words, you don’t have to calculate all of these items and you can approximate the cost of testing the whole canvas :

C =~ c(H1) + p(H1)*c(H2)

or even, assuming that p(H1) =~ 0 (it’s the most uncertain hypothesis) and c(H2) =~ c(H1) (they are of a same order of magnitude), you can further approximate :

C =~ c(H1)

So the cost for testing a whole canvas is approximately equal to the cost for testing its most uncertain hypothesis, or its hypothesis with the lowest product of cost and probability.

Now I have my collection of lean canvases and I can calculate the probable cost of their testing :

  • for each canvas, I have to identify its hypothesis H1 with the lowest product of cost and probability,
  • the probable cost for testing this canvas is approximately the cost of H1

What is my collection made of ? Let’s say it’s a collection of several versions of a same project. On one hand you hope your first attempted canvas will be the right one so that you don’t spend time and effort testing bad versions. On the other hand you have to take the cost of testing into account and would prefer cheap tests to expensive ones. So your best version is the one with the best ratio of probability to cost. You want to maximize P / C.

We know C =~c(H1) but what’s the total probability of a canvas ? It’s the product of the probabilities of its hypothesis :

P = p(H1) * p(H2) * … * p(H9)

So :

P / C =~ p(H1) * p(H2) * … * p(H9) / c(H1)

Let’s call :

  • version A and version B the versions of canvas to be compared and optimally ordered for testing
  • H1A, H2A, …, H9A the hypothesis in version A of the canvas
  • H1B, H2B, …, H9B the hypothesis in version B of the canvas
  • PA and PB the probabilities of version A and version B
  • CA and CB the costs for testing version A and version B

We want to compare the probability to cost ratio of these 2 canvas :

PA/CA =~ p(H1A) * p(H2A) * … * p(H9A) / c(H1A)
PB/CB =~ p(H1B) * p(H2B) * … * p(H9B) / c(H1B)

For this comparison, let’s calculate PA/CA * CB/PB. Is it more or less than 1 ?

Given that these are 2 versions of the same lean startup projects, they probably share a significant number of hypotheses. You can eliminate these hypothesis and only keep this limited number of hypotheses which differ from A to B, which we will call :

  • HiA, …, HnA in version A
  • HiB, …, HnB in version B

So :

PA/CA * CB/PB =~ ( p(HiA) * … * p(HnA) ) / ( p(HiB) * … * p(HnB) ) * c(H1B) / c(H1A)

If only one hypothesis Hi differs from A to B, you then have to compare p(HiA)/c(H1A) and p(HiB)/c(H1B). In other cases, the product of several probabilities will … probably… be more different from version A to version B than the cost of their first hypothesis (which may even be the same hypothesis) and you can then approximate :

PA/CA * CB/PB =~ ( p(HiA) * … * p(HnA) ) / ( p(HiB) * … * p(HnB) )

In other words, you simply want to start with the most probable version and only take cost into account if you can’t make up your mind considering probabilities only.

You then take the version with the cheapest first test.

Now let’s add one last difficulty : my portfolio is a collection of distinct projects which I want to test in an optimal order. You want to maximize the probability of validating a high value canvas with a minimal testing cost. So you have to estimate :

  • V the value of each canvas (assuming they will be proven to be true and successful)
  • P their respective probability
  • C the cost for testing their first hypothesis (their least probable and cheapest hypothesis)

And you want to pick the project with the highest V*P/C

Assuming that the cost for testing hypotheses is of the same order of magnitude from project to project, you can consider V*P only and pick the project with the highest V*P value (unless your V*P values are similar and one of the first hypotheses has a surprising cost which you then have to take into account).

Let’s summarize… Given a collection of lean startup projects described as canvases. Some projects may have several versions of their canvas. And each canvas is a set of 9 hypothesis. You want to pick the best hypothesis to start testing :

  1. First, for those projects with several versions, only consider the most probable version and put the other versions aside
  2. Now order your projects by value according to their value assuming they are successful and group them into 3 classes :
    • V=1 for projects with lowest value,
    • V=2 for projects of medium value
    • V=3 of highly valuable projects
  3. Do the same with their probability of success in 10 years
    • P=1 for the most risky projects
    • P=2 for mediumly risky projects
    • P=3 for projects with a higher chance of success
  4. Pick the project with the highest P*V value. In case of tied projects, restart steps 2 and 3 with these projects only and discriminate them. If you can’t make up your mind, go on with step 5 for each of the remaining projects and pick the one with the cheapest first test.
  5. Hopefully you selected one project. Rate the costs and probabilities of its 9 hypotheses, pick the one hypothesis with the lowest product of cost and probability (or further discriminate your best hypotheses by rating them once again).
  6. Test this hypothesis.
  7. Hopefully your test was a success, meaning that you know your hypothesis was true (you should be surprised given it was the least probable in this canvas) or false (which still means the test was a success: this is validated learning). What to do now ? If the hypothesis is false, this canvas is invalidated and you have to pick another one. If the hypothesis is validated as true, this project just turned even more probable. But maybe your portfolio now contains new projects or this test gave you ideas for even more valuable versions of the canvas of this project ? So get back to step 1 !
  8. Finally, what if your test takes a long time before validating or invalidating its hypothesis (e.g. you have to wait for an appointment or for the next season of activity) ? Which hypothesis to test next ? You should get back to step 1 but consider that the hypothesis which is still being tested still has the same probability but its cost is now null (or diminished by the amount of time and effort spent on starting its test and waiting for results). So the probability of its canvas is still the same as before but its cost is approximately the cost for testing its next hypothesis plus the cost for finishing the first test.

That’s it. Now how do YOU proceed practically speaking for ordering your portfolio ? How do you optimize the ordering of tests in your portfolio of hypotheses without wasting time and effort and over-optimizing ?

A/B split testing with Plone

I have a deep interest in the lean startup method. One of the favorite tools of the lean startuper is A/B split testing. My favorite software package is Plone. Can Plone be used for A/B split testing without having to develop a specific python product ? The answer is probably yes.

Here is my recipe for a starter toward A/B split testing with Plone :

  1. take a fresh Plone
  2. add a PloneFormGen
  3. add a « Thank you » page for each and every option you want to test ; note the ID of the pages (e.g. page « optionA » and page optionB ») ; the user will be redirected to one of these pages
  4. add a text field to the form (multiple-lines text field not one-line string field)
  5. override the default value of this field with the following tales expression :

    python:[random.seed(str(request.AUTHENTICATED_USER) + request.REMOTE_ADDR), random.choice([i.getId() for i in here.aq_parent.aq_inner.listFolderContents(contentFilter={« portal_type » : « FormThanksPage »})])][1]

  6. make the text field a hidden and server-side field
  7. overrides the form’s custom validation action with the following expression :

    redirect_to:request/form/page

    where « page » is the ID of the text field you set up above.

  8. add a Data Recorder to the form so that the value of the « page » field gets recorded

What do we have now ? We have a form with a button. When the user clicks on the button, she is randomly redirected toward one the several « Thank You Pages » that you have defined. The redirection is based on the IP address of the user and her username if she is authenticated. The redirections are uniformly distributed against your destination pages. And they are recorded in the data record field.

You A/B split test is not complete and several further steps must be taken before this is a fully operational solution but that was an enjoyable hack to make for me. Have fun with it and tell me how you would proceed with split testing and continuous deployment using Plone !

Lifeventure.me makes your wisdom shareable and actionable

Jose is a former colleague of mine (Motorola…), experienced business developer and social entrepreneur. His new startup LifeVenture.me has a mission. It « will make the wisdom of the world’s citizens searchable and actionable » by capturing the memories and wisdom of ageing persons on a tablet. You should check the video presenting his iPad app here.

The topic of his new venture sounds very much exciting and I can relate to it. In a few days this month, my grandfather will be exactly 100 years old ! It will be a huge family celebration and he certainly will enjoy it even though he will claim he is in his 101st year now and we are one year late (as he always says at his birthday celebrations).

He wrote his memoirs. My sister and my mother compiled them as a family book along with some pictures of him. We had it printed about 50 times and every family member got its book. We also regularly celebrate him with sorts of « derived » family products such as a tee-shirt with the portraits of his children, grand-children and grand-grand-children printed all over the back of the shirt.

The daughter of my grandfather (i.e. my mother) has been building our family tree online for years. His other daughter (my aunt) tried to start a public writer freelance career lately. Her old customers want to have their memories written by means of her interviewing them and the audio then being transcribed and edited.

My other grandfather died without written memories and his son (my father) and I do regret this.

As a member of a somewhat large latin-styled family, I sometimes have discussions with my parents and relatives about how to best share the collective wisdom of our elders and build on it. But we haven’t found any convenient-enough solution. Writing memories and compiling memoirs is quite a hard and tedious process. It also sounds vain to some (hence possibly the reason why my other grandfather didn’t bother writing his).

Some thoughts about the LifeVenture app now :

At first glance (I just watched the video and the iPad app has not been released yet), the process of filling the questionnaire sounds a bit tedious and a bit cumbersome. Especially given the fact that once it’s filled you can’t go back to it. I can guess this questionnaire may relate to the experience of Jose in the field of personal health records management. Couldn’t writing one’s memories rather be turned into an enjoyable and social or familial activity through some sort of gamified interviewing process ? Maybe it would give more opportunities to have conversations and visits from grand-children who would get a solid collective project to share with their ancestor. I remember having had cumbersome conversations with my now-gone grandmother on the phone. What to ask her beside how she feels (bad…) and how her day was (as the day before…) ?

It also makes me think of these japanese community organizations where younger adults visit elders in the neighbourhood and ask them to make paper flowers which are then sold even though the price does not cover the cost of the visit and hide the real reason of this system : getting a solid excuse for multiplying social activities with some isolated ageing persons. Good excuses are important sometimes.

Maybe the LifeVenture app would also give the opportunity to distribute all sorts of derived personalized products for the birthday or christmas of the ageing person or for family celebrations. Another business model option may also be to have the app act as some kind of controlled marketplace for « public writers » who would offer families the option of having memories recorded, transcribed and edited through the app. These writers may be living in developping countries and offer low cost services. Such a business model may also create jobs for people in the need, Samasource-styled. Interviews may be recorded and controlled in order to prevent abuse of older people. Interviewers may require some accreditation and privacy should be strictly enforced.

Some more suggestions for entrepreneurs such as Jose, from my recent experience founding Wecena and then at the Cned innovation department : has he heard about the « lean startup » movement ? he must have. Did he take 30 minutes to write down his business assumptions under the form of a business model canvas ? He should have. Does he start his new venture by validating his assumptions about customers problems before building his iPad app ? He most probably should. Does he try to get pre-sales for his app before building it ? He should. Does he read Steve Blank’s blog ? He should ! Did he follow the Lean Launchpad MOOC and buy Steve Blank’s Startup’s Owner Manual ? He may find them much useful even as the experienced entrepreneur and business developper he is.

You’ve got it : I am now a big fan of Steve Blank’s take on how to search for a valid business model. I sincerely regret not having known this when I launched my 2nd startup 4 years ago. Maybe my love for the Lean Startup hype is making me blind and won’t last long. I don’t think so but time will tell. Meanwhile I’d be more than happy hearing from Jose on such topics.

Jose, let’s have a call soon so that I can share with you my enthusiasm about your project ! See you soon, Jose !

The Humanitarian Openstreetmap Team had a conf call

… today. And here is the recording of the audio (OGG format). Unfortunately, it is missing 3 or 4 minutes at the beginning (I had to realize nobody else was to record the call and launch a few pieces of software) and 20 seconds at the end. I did no post-processing.

There’s even a public piratepad with the agenda and notes from the call.

Free money

Not « free money » as in « free beer » but free as in « free speech ». I mean « Libre money », like « Libre software ». Money made free. Goods made free so that they make people freer. What could this mean ?

Could the concept of copyleft found in the realm of software and intellectual creativity be transposed to material and rival goods so that humans get freer from their dependency on material goods and property ?

Let’s pretend I have a pencil in hand (or 10 euros). Here is my (imaginary) offer to you be : you can get this pencil if and only if :

  • after some predefined time (let’s say after 10 seconds) you must accept to give this pencil (or an equivalent pencil ?) further (not back) to anyone who asks for it and accepts some predefined conditions (the contract)
  • the most important condition this futher person/borrower must accept is to further transfer the goods along with their freedom contract once the defined delay has expired : they can’t put any additional restrictions to the freedom of people wishing to get these pencil(s)
  • maybe you will have some interest to add to it (for instance the condition may be that you must accept also giving a second pencil under these conditions after 10 seconds)

Once you get the pencil under such a contract, you are free to do anything you want with this pencil (you may draw a picture for instance). 10 seconds later, you may still keep it as your own (and keep on drawing pictures meanwhile) until someone comes to you and asks for this pencil. Then you must propose this pencil and an additional one under the conditions above. If the further person accepts these conditions, she may take this pencil (or these 2 pencils) and do the same : do anything she wishes during some time then keep doing anything she wants until someone gets the (1, 2, 3 or 4) pencil(s) under the same contract.

From now on, these pencils are made free. They are still the property of the persons who initially set them free. But, as long as the conditions of the contract are respected, they will freely flow from person to person. If there is an interest rate defined in the contract (the second pencil or 100% interest rate in the example above), then these interests are also made free and will contribute to the total amount of free rival goods in circulation. In some future, the whole population of pencils of planet earth may be made free in such a process !

You may note that this whole concept I am proposing here :

  • is rooted in the free culture of free software
  • is also rooted in the culture of giving in freedom which the economy of communion tries to promote
  • gets inspiration from the current trend of sharing stuff via the Internet, and optimize the ownership and use of material goods, including the fabulous freecycle network
  • somehow relates to the American ideal of « giving back to the community » (once you are richer) but with a twist
  • allows charitable gifts to poor people to be made less humiliating because the gift is now a loan and « officially » recognizes that the person receiving goods (the « poor » person) also receives a debt not toward the giver but toward humanity, while still giving merit to the initial loaner who « sufffers » from the « loss » of the items made free
  • is a common practice in many traditions such as master/apprentice  or teacher/student or parents/children relationships : master transfers some trade knowledge to apprentices as long as a moral obligation to further transfer this tradition/knowledge to future generations of apprentices/would-be-masters.

Now there are several practical problems with any attempt at contractualizing these practices of « giving back to the community » :

  • what if someone is materially not able to further give/transfer the good when the loan delay has expired ?
  • how to limit the risks of having malicious people exploit the system at their own profit and break the chain of freedom ?
  • are interests rate desirable or even morally acceptable ?
  • which sets of conditions would best guarantee the development of the freedom of humanity with regards to these goods ?
  • could such contracts be drafted and enforced world-wide despite borders and disparities among national laws ?
  • in order to maximize the probability that people don’t abuse the system and protect the freedom of these goods in further paying their debts, should the power of this contract mainly rely on justice (a judge may take your goods in order to pay your freedom debt) ? or on social mechanisms (such as only accepting female borrowers or borrowers who come as a group of independent but socially related people, in a way similar to some practices in the field of microcredit) ? or both ?
  • could such a system be made viable offline ? or will it necessarily rely on online trust mechanisms (identity, reputation, social networks, cryptography, …) ?
  • could such a system be made viable without a central platform ? can it work in a peer-to-peer fashion in the same way free software licences work (the only central point of failure for the GPL is the unique power of the FSF to release later versions of the GPL) ?
  • could the risk of failing borrowers (people not paying their debt further) be covered by some insurance mechanisms and agents ?

My real purpose here (beyond playing with an attractive concept) is to invent a contract which can be useful in order to augment the freedom of people to access and use goods they don’t own while still protecting (and contributing to) the freedom of further people to do so.

With your comments and contributions, maybe we could find the perfect combination of conditions a freedom loan contract should impose in order to meet the purpose above.

In further comments or posts, we/you may :

  • tell the fiction of several goods released under free loans/free debt contracts in order to explore the potential advantages and drawbacks of some combinations of conditions,
  • propose several such loans « for real » to readers in order to practically experiment and play with these concepts.

(But please DO NOT ASK for money here. Money will not be given to you. People asking for money and not usefully contributing to this conversation may be banned as spammers.)

SVG as an alternative to Flash, here comes bliotux

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

« 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

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 ?

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

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 ?

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 ?

Altruistic Capital, semifinalist of Echoing Green 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 :-(

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

[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

[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?

[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?

[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 ?