Looking for a new job

May 12, 2011

Okay… so it’s been too frustating to be in a situation where you can only do half of what could be done, due to internal obstacles and inertia.

Now is the time for me to move on for some challenges where I get the passion back and can actually get things done.

I am looking for an opportunity to work again with a great team, where the mantra is something like “Promote Open Source, work with the community, deliver great products/solutions, promote Open Source…”
More specifically, I expect contributing to some great community projects out there, in particular in the Python web frameworks space.

A word about me: I’ve been a early fan and user of Plone for customer projects back then, and I’ve stayed around these last 2 years following how the Plone, Zope and Pylons communities have been improving their projects and processes. Definitely need to associate these projects to my next successes!

If you have an interesting proposal for me, including fixed-term position and freelance work, contact me and I will send you my CV.


Current job: Enter phase 2

August 23, 2010

I’ve now spent 10 months in my current job, and I owe to myself to stop today for a quick restrospective before moving to another phase.

The first period (phase 1) helped me understand the context and what can be done to bring value. Fortunately, a lot can be done, so the challenge is interesting. Also, I was lucky to quickly understand and accept that, in the current context, change could only happen progressively.

Saying that nothing interesting has happened so far with the projects I am in charge of, would not be true. But the whole process is too slow (or sometimes chaotic), for unnecessary reasons.

My phase 2 is going to involve more initiatives to pick up the pace on the projects and get things moving. Wish me good luck or my next related post will be about asking if someone has a job opportunity for me 😉

As for other news, I restarted developing for personal projects with my favourite CMS (which is preparing a new release). I wish all success to Plone 4 and the community. If you need a CMS for a critical/complex site project, Plone is undoubtly in the top 2 or 3. Also, we have a great community which opens to various technologies and development practices besides Plone such as Zope Toolkit, ZODB, Deliverance, deco.gs, and BFG, to only name a few.


Python African Tour and beyond

May 23, 2010

While the Python African Tour (a.k.a. PAT) events are now underway, here is a wrap-up of some feedback and current thoughts about contributing through the organization of Python learning activities in Africa.

The New vs. the Old, again

When you talk to most people, you find that the Python language is underrated or new to them. C, Java, and PHP… it’s okay. But Python ?

Python could get a decent base of users in the medium to long term, if some influential guys in the university and entrepreneur spheres are aware of its advantages and decide to introduce it in their toolset or work environment.

Now, there is hope ; we’ve met guys from this new generation in Morocco, Senegal… and we are meeting others in Nigeria in a few weeks. In fact, these are the people who have been initiators and resource people in the process of organizing PAT events.

PAT Senegal team

PAT Senegal team - (c) DakarLUG

User Groups

The Senegal PAT event was hosted with the help of DakarLUG, a small but very active group of people spreading the Linux and Open Source message there (install parties, demos, and all that).

Seems we were lucky… From my perception, it is hard to find active local geek or learning communities, at least in the francophone world which I am more connected to.  Though this might be less true today, with the local barcamps, LUGs and Google Technology User Groups that have been launched these last two years.

Community is key to spreading Open Source ideas, practices and solutions, and if we can’t have local communities I am afraid this is going to be even more difficult.

We are helping to improve that situation ourselves, since in addition to the Python workshop, we have been organizing a camp day for a larger public, with presentations of interesting technologies and development practices.

Tools and applications, a.k.a. solutions

Ok, people want solutions… They have problems to solve.

While we want to not simply consume solutions, but be able to extend and hack around them, it helps a lot to quickly introduce interesting tools and applications (and platforms) to the people.

The current focus of PAT for this includes two domains where Python is really strong:

  • Web Frameworks (Django but not limited to). In the future, we should extend this with the “client” side of things (mobile, JavaScript, HTML5…)
  • Scientific tools (SciPy, NumPy)… for people coming from research departments.
Camp day - SciPy presentation by Emmanuelle

PAT Senegal / Emmanuelle Gouillart presenting Scientific tools - (c) DakarLUG

Sustaining and going forward

Last but not least, we need that students having participated to the workshop become contributors. This means they need to practice after the PAT event, so they need ongoing mentoring and small projects to work on.

One trick is to convince the head of the CS/Research department we meet in the universtity or school, to introduce Python in the curriculum, or allow students to use Python for their school projects. This gave encouraging results in Dakar.

An idea I have been nurturing is running our own kind of SoC program. This is the next phase, and more details coming soon.

Contact me if you want to share more thoughts, experiences, or contribute to any aspect of this.


Jumped in a new job and contemplating new challenges

November 21, 2009

I have recently quit Ingeniweb for a job in an international organization involved in the promotion of cultural diversity and sustainable development, to only mention two of its activity fields.

I am in charge of website projects (in the context of the Communication department). There is a lot to do, the first thing being understanding the context, the way things work here, and the people’s expectations.

As for the tools and technologies side of things, there is not currently anything Python-based here. PHP (SPIP) rules ! Well, I guess it’s perceived as easy and more importantly, skills exist everywhere (me looking in the direction of “web agencies”).
So, one of the interesting things will be to introduce Python, where it makes sense, in the not-too-far (hopefully) future. Anyway, I am confident that will happen one day. After all, it’s not always bad to be ahead of the time. You just have to wait, monitor, and talk to people everytime there is an opportunity. And you might be lucky and convince those who take the time to listen 😉


Scratching my own documentation itch

March 21, 2009

A week ago, I finished updating the Archetypes Developer Manual for Plone 3. In case you have not seen it, the new version is interesting for any developer who has to develop or update an Archetypes-based product ; it tries to present our current coding practices (GenericSetup, ZCA techniques…) The manual is accompanied by a new example package. It is also useful, directly, for the “what does what/how to” when using the ZopeSkel “archetype” template with paster to bootstrap your product package.

What’s next ?

I started another manual to give an overview of the Zope Component Architecture techniques and tools we use for Plone development. Part of the initial work is refactoring/merging existing howtos and tutorials written by the other documentation contributors, and updating them. Hopefully, a first cut of this manual will be reviewed and published in a few weeks.

Sprinting at Pycon

Next week, I am going to Pycon in Chicago and will have 2 days to participate to the post-conference sprints. My current plan is to just dedicate my time to documentation. Topics that I may start contributing on are “Dexterity content types” and “WSGI setup for Plone (3/4) + using middlewares to augment your deployment”. There may be other topics to give priority to, and I will discuss with others to find out. And of course, I will have some time to make progress on the ZCA manual.

Looking forward to meet other “Python Web” community members there!


Documentation bookmarks for self and others

February 20, 2009

Useful parts of the various documentation efforts now available within the Zope community:


Proposing Python trainings

February 20, 2009

After years of Plone training, I have been working on a Python course offering. That evolution makes sense since a wider group of people come to Python via Plone, and now I want to bring to the table the other interesting and useful bits of Python… Things like SQLAlchemy, web frameworks, system administration or data crunching techniques and tools, or simply exploiting the Python Standard Library.

There is probably a bunch of people interested by using Python for their daily work, and who need some training to get there.

If you are in that situation, feel free to contact me and let me know which type of course you would like and if I can help organize it for you. For maximum flexibility, you could choose among several options: a public class with several participants, a customized class for a group within your organization, or one or several coaching days to help approach problems within a project. I have already experienced any of these formats and they all work well.

If you are based in France, you might want to join the first public Python class we will be organizing in June for the french public.


Promoting Python and Plone in Africa

November 7, 2008

It seems that only South Africa had an event listed as part of the World Plone Day set of local events. As an african, I am of course interested by this fact, and I would have expected some Plone presence in another region. Hopefully, we can fix that for next year’s edition !

I am promoting an effort called Python African Tour which aims at sending volunteers, within the next couple of years, in the different regions of Africa, based on sponsoring, to train beginner developers there on Python and its related technologies. It’s a way to introduce newbies there to a programming language that helps the developer get his job done, as well as all the community practices that help us improve our daily work. It’s also a way to get new developers join the Python community.

The first country the tour will visit is Morocco, in December, from the 18th to the 22nd. Among the possible countries to plan in 2009 are Nigeria and South Africa. Obviously our plans will depend on discussions with local contacts we get, and sponsoring possibilities.

For Morocco, Amine Soulaymani, a developer living in Morocco, and Daniel Nouri have volunteered to participate as instructors for the students at Ecole Mohammedia d’Ingenieurs, ­the school that will host the Python training session.
In addition to the training session during the first 2 days, we plan to have 3 days of community activities: an unconference-style open event with demos and talks related to Python, followed by a sprint that will be hosted in the offices of Nextma, a solution provider doing Python. Talks and sprint activities should cover Plone, with the participation of a PloneGov / CommunesPlone team joining us from Belgium, WSGI / Repoze and ­OpenERP with contributors from Nextma.

On a side note, I have proposed a talk with Roberto Allende for next year’s Pycon to present our ideas and actions to help spread Python in both South America and Africa.

If you want to contribute in any way, ­­contact us through the project’s mailing list.


Not at the Plone conference

October 7, 2008

Unfortunately, I was unable to go to DC for the Plone conference.

I want to apologize to the people who were expecting to follow the tutorial on z3c.form, which had to be canceled.

I am thinking about submitting an improved version of that tutorial proposal for Pycon 2009, and I hope to be there and meet some of you.

Have fun, and let the people know it ! Zope is back (in various forms ;)), and we are going toward more successes in the coming years.


More on using the EditForm

September 17, 2008

I now better understand this after reading z3c.form’s doctests: If the context object that you want to edit fulfills the interface used for your EditForm, the code for defining the form class could be as small as this (followed by the usual configure.zcml snippet):

class ContactEditForm(z3c.form.form.EditForm): """ Contact Edit Form """ fields = z3c.form.field.Fields(IContactData) # For wrapping the form presentation within Plone's layout ContactEditFormView = layout.wrap_form(ContactEditForm, label="Edit Form")

If it does not, you get an error as the framework finds that the object does not match the schema or there is not an adapter to it.

The solution in such a case is to define an adapter to the interface, and override the getContent() method of the form to give the adapted object to the EditForm so it can do its job on it, i.e. update it.

Here is an example with an ATDocument used as the context.

class ContactAdapter(object): zope.component.adapts(IATDocument) zope.interface.implements(IContactData) def __init__(self, document): self.document = document @apply def lastname(): def get(self): return getTheLastname(self.document) def set(self, value): setTheLastname(self.document, value) return property(get, set)
class ContactEditForm(z3c.form.form.EditForm): """ Contact Edit Form """ fields = z3c.form.field.Fields(IContactData) def getContent(self): '''See interfaces.IForm''' return IContactData(self.context)

This approach is valid for cases where you don’t want to introduce a new content type. Hopefully, there will be a time when introducing a new type would be easier, not require too much things to change, and not add complexity to your Plone site with the risk of maintenance issues. (I’m thinking plone.dexterity here.) Then, things should be straightforward.

You can find the detailed code of my z3c.form usage examples in the
example.z3cform package in the Collective.

Update: Do not forget to register the Adapter in the configure.zcml. (Thx to Gilles for informing me that I forgot to mention this bit.)

<adapter factory=”.adapter.ContactAdapter” />