[3389 total ]
Mock It!: Don't look back in anger

Next Thursday it will be a year since the release of Python 3. You've got to be out early in Christmas time which is my excuse for the untimeliness of this rant.

I thought I'd try to see what the fuss was about, i.e. does anything work? ... [More] WSGI? It doesn't. While very informative, the roadmap for the WSGI specification is also very unreadable. Let's see if we can extract some knowledge out of it!

It seems to me that people sit with a copy of Essential Python 2 and try to see how to interpret the WSGI specification against an imaginary Essential Python 3, e.g. "In Python 2 this was a string; what should–right, so bytes. Next, in Python 2 this was..." – to no end. Let's cut to the chase:
Rule 1: Strings should be strings, chunks should be bytes.The roadmap then mentions that on Jython, sockets will return unicode. That's wrong, so that can be conveniently filed as a bug. It continues with another string prediction: "The status line specified by the WSGI application must be a byte string." Why must this be a byte string? It is obviously an actual string. I think it's even a Freudian slip to call it a "byte string". Please see rule 1.

Then it gets a little unclear, but skipping ahead a handful of paragraphs, we come to this bullet point: "For the WSGI variable 'wsgi.url_scheme' contained in the WSGI environment, the value of the variable should be a native string." I think this is what the rest of the world calls the server protocol. If I can make a humble suggestion:
Rule 2: Please remove all proprietary keys from the HTTP environment.
Incidentally, the presence of these keys is probably what inspires developers to put all sorts of other proprietary keys in the HTTP environment. I have previously argued why this is wrong. It occurs to me that when the WSGI specification says environ, it means request. What the application needs is the request which holds the HTTP environment and the content body. Everybody uses the term request for this; an HTTP request. It's convenient to split a request up in an environment, which is the first few lines of the socket input and the body, which is the rest. This body might be quite large, so the interface must be an iterable of binary chunks.

Note that if we had a request object instead of this augmented environment, middlewares and frameworks that wanted to add touches of magic could wrap it or even change its class. Today they have to insert special string keys into a dictionary and explain how this isn't that wrong in their documentation (e.g. "it's better than a thread-local").

Okay, this has turned sour. All I wanted was to try out Python 3. I'm not sure the current approach is going to make this any fun. The 2to3 solution is not appealing. It's a bit like an in-law staying temporarily in the house. When does it end? When is the try-import-except dance over? Am I ever going to import anything from the functools module and feel comfortable about it? Here's a moratorium for you:
Rule 3: Forget Python 2.From now on it's on the paying clients only list. Join the movement of full incompatibility and never look back! The downside is that we have to rewrite everything. I think it's worth it. Microsoft should have done it, Apple did it.

Who got the better uptake? [Less]

Kamon Ayeva: Jumped in a new job and contemplating new challenges

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 ... [More] 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

[Less]

Zea Partners: Future trends of the use of open-source software in public administration - a regional perspective

This seminar, organized by the Region of Extremadura - Spain, will include a discussion concerning current trends and future perspectives of open source software in European regions. During the roundtable, Xavier Heymans, CEO of Zea Partners, will ... [More] present the PloneGov initiative. The event will take place in Brussels at Committee of the Regions (CoR) which is the political assembly that provides the regional and local levels with a voice in EU policy development and EU legislation. [Less]

Zea Partners: Python: Conference Emphasises Language's Benefits

"Simplicity, Flexibility, Beauty!" is the theme for Kiwi PyCon 2009, a
conference being held this Saturday and Sunday in Christchurch to
promote the Python programming language in New Zealand.

Team Rubber Developer: Closure Compiler – Javascript optimising compiler

While I still haven’t got around to releasing my python port of the yui-compressor (I will soon, I promise), my plan had originally been to extend the compressor into an optimising compiler for javascript – but I  just stumbled upon the a Google ... [More] project that seems to have beaten me to it.

The Closure Compiler (google code page) does exactly that – it takes your javascripts and optimises them for both filesize and run-time.

I haven’t looked too deep yet, but it seems that it uses the parser from Rhino, and augments it with an implementation of a javascript AST, and an optimiser that works on the generated AST.

The Closure compiler is written in Java – anyone who feels like working on a python version is likely to find pynoceros (the python version of Rhino’s parser I annouced a few weeks ago) useful. [Less]

Karl Horak: Decisions, Decisions...

Looking at CMS Matrix tonight I find an astonishing 1099 listings. How can anyone make a sane decision with that many choices? This ties in nicely with Barry Schwartz's thoughts in a TED video on the paradox of choice: too many choices lead to ... [More] decision-making paralysis and dissatisfaction. He provides examples with salad dressings, jeans, and cell phones, among several others. To over-simplify his thesis, too many potential choices increase the difficulty of decision-making and heighten expectations. This in turn dilutes satisfaction with one's ultimate decision.

In his book "The Paradox of Choice" he points out that even infinite choice isn't a bad thing if it can be conceptualized in a simple way, for example, in a one-dimensional matrix comparing a simple feature set. But as the dimensions of comparison go up, the computation needed to calculate an optimal choice becomes increasingly difficult. I see this at my day-job where they have been unable to decide on a corporate standard for CMS. In the end, people look for surrogates for quality to simplify the decision-making process, things like the recent Packt Awards or the Idealware report.

Another solution is to follow the herd and make the same decision others before you have made. This can easily lead to an information cascade and sub-optimal results. I've discussed these beasts elsewhere, but want to point out again that herd behavior is fragile--a little correct contrary knowledge can quickly dispel an information cascade.

Of course, one problem is that one size (CMS) does not fit all. In my case workflow and security trump everything else, so the choice is dramatically limited... and simplified. I don't spend my time agonizing about if I made the right choice or second-guessing myself.

Along those lines, in a bookstore tonight I saw a copy of "Blink," also about decision-making. After only a short skim, I'd say that I agree with the author: we often make an optimal decision within seconds but then our slower conscious analytical processes talk ourselves out of it. (This is not to say that reflective decision-making is always a bad idea, just that we should weigh our initial impressions more heavily in the reflective process.)

I see this all the time grading tests at college--the initial correct answer is erased and an incorrect answer finally selected. I tell my students all the time to not second-guess themselves unless they have a good reason.

This resonates with a number of usability studies that indicate that we make web choices within seconds or fractions of seconds. This article by Jakob Neilson has a good discussion and references on this topic. BTW, almost 60% of visits to Plone.org are less than 10 seconds. On the other hand, about 30% of the visitors stay 3-30 minutes. My guess is that Plone.org visitors aren't generally making a "use Plone" decision in 10 seconds.

Now here's an experiment for you: go to Plone.org and count off 10 seconds while you look at the site. What did you remember? Branch with bud, Plone South America, "powerful, flexible, easy to install, use, and extend."

Do the same for Drupal.org: two simultaneous releases, "critical security vulnerabilities," Whitehouse.gov.

Try OpenOffice.org: productivity suite, learn, download, help, do more, participate. Hmm? Simplifying choice, but letting the user make an informed decision about what to do next. Maybe Schwartz is on to something... [Less]

Israel Saeta Perez: Installing Plone 4.0a1 on Debian

I just read on a tweet that the first alpha release of Plone 4 is already available for testing and I wasn’t able to resist the temptation. :P  As some people have already pointed out, Python 2.6 for Debian is only available from the experimental ... [More] repository, and most of us prefer to stay testing or unstable at most. :)

Thanks god, there’s a buildout recipe (we should create a Linux distro based on buildout someday, alecm ;) to build Python from source in an isolated environment. Steps:

svn co https://svn.plone.org/svn/collective/buildout/python/ buildout.python
cd buildout.python; python bootstrap.py
Edit buildout.cfg to fit your needs. You might want to comment out the references to the Python versions you don’t want to install.
bin/buildout
cd to-another-directory; paster create -t plone3_buildout plone4.
Enter “4.0a1″ (without quotes) when asked about “Which Plone version to install”. Make sure you have the last version of ZopeSkel (2.14.1 while I’m writing this - easy_install -U ZopeSkel) or the generated buildout.cfg won’t be valid for Plone 4 otherwise. Thanks to MatthewWilkes for the pointer and of course for the ZopeSkel release. :)
path-to-buildout.python/python-2.6/bin/python bootstrap.py
bin/buildout. If you get tons of lines in your console output about fetching distribute, see this post by Reinout van Rees.

And it should work… But it doesn’t in my system. :(  I get an error in the buildout.python bin/buildout:

SystemError: (‘Failed’, ‘patch -p0 < /somepath/buildout.python/parts/readline-patch/readline.patch’)
And if I remove the readline.patch stuff from the buildout.python buildout.cfg, it works, but then I’m unable to install PIL nor PILwoTk in the Plone 4 buildout… I’ve already tweeted fschulze (who is presumably the author of the collective.buildout.python stuff, according to comments in the #plone IRC channel) about this issue. I hope it will get solved soon! :) [Less]

Mikko Ohtamaa: Installing Python Imaging Library (PIL) under virtualenv or buildout

I have greatly struggled to have PIL library support in isolated Python environments like virtualenv --no-site-packages.

For example, when installing Satchmo shop under virtualenv:

../bin/clonesatchmo.pyhe Python Imaging Library is ... [More] not installed. Install from your distribution binaries.
../bin/clonesatchmo.py
The Python Imaging Library is not installed. Install from your distribution binaries.
Though it clearly is there, installed ... [Less]

ifPeople: Can you take 3 Minutes to build the social change movement?

ifPeople is honored to be a nominee for the YouTopia grant of $15,000 of branding services from Free Range Studios. To win this, we need your vote! Can you please take 3 minutes to register on the website and vote for our “Collaboration for Social ... [More] Innovation” idea?

Our idea is to build a community of social innovators leveraging web technology to increase their impact. This community, which is already forming based on the work of our clients and our partners, will share lessons, exchange ideas, and collaborate. This community would include other partners and their clients who share the desire to build strategic and technology capacity in the sector.

We’re asking for your help in making this nascent community grow and thrive by supporting our YouTopia proposal! Why do we want to do this? Technology is a big challenge for most social enterprises, yet it’s also necessary for magnifying their impact.We use Plone and Salesforce.com to radically increase our clients capacity for communication, engagement and action. We believe this network will improve collaboration and knowledge sharing amongst organizations using similar tools and facing similar challenges.

Better Tech skills = Bigger Impact = A Better World

Voting is easy. You just need to create an account on the UserVoice website and then you can distribute 3 votes in the “Socially Responsible Business” category (you can give all three to one or distribute them). Vote for ifPeople here.

Please let us know any questions about the proposal in the comments. Thanks for your support!

[Less]

Four Digits: ISO 9001:2008 certification using Plone

In September this year we got ISO 9001:2008 certified by Det Norske Veritas using Plone

Introduction
At Four Digits we want to work using certain guidelines and structure. To ensure quality we decided to try to get ISO 9001 certified. ... [More] ISO 9000 is a familiy of standards for quality management systems. It's maintained by the Organization for Standardization. ISO 9001:2008 is the subset for Quality management systems and is intended for use in any organization.

Some of the requirements in ISO 9001:2008 include a set of procedures that cover all key processes in the business, such as:

Monitoring processes to ensure they are effective;
Keeping adequate records;
Checking output for defects, with appropriate and corrective action where necessary;
Regularly reviewing individual processes and the quality system itself for effectiveness; and
Facilitating continual improvements

Implementation
The classic example what companies do to ensure quality, is creating large procedures, instructions and manuals on paper. All the papers have to be reviewed and maintained and must be kept up to date. Changelogs have to be kept up to date by hand. We want to encourage the use of digital solutions and this is where Plone comes in; our company intranet and client support system is based on Plone. We added several functionalities to our intranet (custom products / add-ons, extenders) to fill the need of quality control of all kinds of documents and messages.The core of the system exists of procedures which describe how we work, instructions (howto's) and handbooks (staff handbook, plans).

Versioning for the win
One of the big wins of Plone in this situation is that you can use versioning and comments to document what changes you implemented in documents, support tickets, instructions and procedures. By making certain input required, such as the 'Change note', so your changes get documented.  The out-of-the-box feature to compare revisions of documents is a great feature to see what's happened to a procedure or instruction. Next to versioning of documents, we use subversion for our code and trac to display all the changes, so this is also documented.

Client satisfaction
One of the key things in ISO 9001 is customer satisfaction through consistent products and services which meet customer expectations. In our procedures and instructions we describe how we work. To provide support to our customers we initiated a online support system using tickets where all the changes and progress is being placed. The customer logs in to the system and sees what happened and when. If advice is needed, bugs or problems occur, this is the place to report them. All projects and improvements are also managed by these tickets. It is one of the main components of our system.

Certification
When we started to think about this we called the help of Ouke Pijl from 2Reflect. To be honest, we didn't knew a lot about ISO 9001 and he explained and translated the ISO guidelines to something we could grasp and understand. We improved and extended the intranet system based on that advice. It was time to think about certification.

A company called Det Norske Vertias was contacted; DNV specializes in inspection/audits/certification and managing risk for all kinds of organizations. Peter Blankestijn, our contact and lead auditor DNV certification joined us at our office for a first 'try out' audit in March. He asked us almost about everything in our company and we had to explain how things worked, how we document things and how we can proof that we actually work using the guidelines we specify. We showed him our intranet, client system, ticket system, projects, versioning, comments and all other aspects. The combination of the documents, tickets, addons and history is the base of the system. He told us he was impressed by the way we set things up and which approach we had on this subject. Also he communicated all his recommendations for the things still missing.

We got some time to implement these things and Peter visited us again in August for the real ISO 9001 audit which took place on two different days. Everything was audited, questions asked, things which has to be proven and we could do this all by using our Plone based intranet system as reference. Peter was very positive and wrote his recommendations, wrote the needed reports and send them to DNV, which reviews the audit-results and makes the final decision. Now we wait...

We've got it!
After a few weeks we got the official message, we are ISO 9001 2008 certified! The official certificate was send by mail. The certificate has a nice place on our company wall:

Products
Add-on Products we used to realize this system:

PloneHelpCenter
Poi
TinyMCE
PloneSurvey

 

Thanks and info
I would like to thank Ouke Pijl and Peter Blankestijn for their great help, advice and information!

More information about ISO 9001 can be found at Wikipedia and the website of Det Norske Veritas. [Less]