community
Oct 31, 2011
Plone at PyCon UA
I spent last weekend (22-23 October) in Kiev promoting Plone and Pyramid at PyCon UA. It was an amazing opportunity to spread the latest news about Plone4 and its enhancements.
The Kiev event was fruitful experience from two points of view: the audience was not aware of what has been happening in Plone since 3.x; they were mostly Django developers. I think I did my best to explain what are the key values of using Plone and Pyramid together and what are the benefits comparing to other frameworks like Django. I met several fantastic guys deeply interested in what we are doing in both Plone and Pyramid community. Hope to see you all on another Python event.
Apart of Plone talk there were other invited speakers. Let me mention few of them.
Opening talk done by Tarek was about Packaging. He explained current situation of packaging in Python and the future of it. I hope we will have setup.cfg to rull-them-all in near future and that the community will start to use proper versioning soon.
Then there was Armin with Basket of Random Python Snippets. I don't like the idea of showing ONLY code while doing your presentation but I strongly encourage you to read them online. Some of them are really great tips!
Last talk I attended was done by Alexander and I must admit - I have enjoyed it a lot. He was showing "SQLAlchemy: a better ORM". I was never a big fun of Django ORM but now I'm strongly convinced that Pyramid + SQLAlchemy + pyramid_formalchemy is a way much easier to play with.
Bottom line: I must agree with Yury that it would be more interesting event if all of the speakers present slides in English (like on RuPy2011 last October). Nevertheless I enjoy this weekend a lot. I love the city and the atmosphere. The topics and invited speakers were properly chosen so everybody could find a subject to discuss about. Thanks again and hopefully see you next year.
And tomorrow it is time for Plone Conference 2011 which will end this autumn's conference marathon.
Oct 20, 2011
RuPy 2011 - Strongly Dynamic Conference
Last weekend (14-16 Oct 2011) I've attended RuPy (Ruby + Python), a strongly dynamic conference held in Poznań (Poland) and organized by GIK Association. I had a great opportunity to share RedTurtle's "Pyramid and Plone" integration use case with wider audience. It was truly an open source event and a great opportunity to meet geeks from the Ruby community.
It was RuPy's
3rd 4th edition and apart it was the biggest (ca. 300 attendees) I must say - it was the best (I was attending all previous editions). The GIK have chosen Poznań International Fairs as the conference venue which was a damn good idea. During 3 days of the conference there was ca. 30 events (talks, workshops and sprints). Most of them was related to Ruby which is a problem each year. Getting more support from Python community is highly appreciated!
What I think is notable is the speaker feedback system. Each room had 3 containers marked: :-) :-| and :-(. After each session the speaker was receiving his anonymous feedback from the audience. From the speaker point of view (so also mine) it's surprisingly easy and gives you great opportunity to check if what you've just said wasn't a completely bullshit. What I would suggest is to make bigger effort in promoting it after each talk.
Interesting talks
my subjective list of notable talks
Programmer Anarchy
by Fred George
Writing your own programming language
by José Valim
Tradeoffs and Choices: Why Ruby Isn't Python
by Yehuda Katz
I didn't find the slides but I hope RuPy team will publish them soon. In the mean time - short abstract:
"When a Pythonista first dives into Ruby, he is confronted with a strange and unusual world. Multiple kinds of functions, implicitness everywhere, violations of the Zen of Python galore! In this talk, Yehuda will talk about the tradeoffs in Ruby's language design: why, in many ways, Ruby couldn't be more like Python even if it wanted to."
Summary
It was an amazing weekend with some interesting discussions with people from Python and Ruby world. Thanks RuPy, hope to see you next year!
Last but not least the organization committee followed best practices and shared their website source code to wide public.
Sep 28, 2011
ZEA, come una fenice, rinasce da Arnhem
Seduto nello spazio, gentilmente offerto da Allianz, all'interno dell'aeroporto di Monaco mi ritrovo a raccogliere un po' di pensieri riguardo al meeting ZEA appena concluso. Lo posto solo ora, al termine del lavoro, finalmente con un buon WIFI.
Dopo la rifondazione che abbiamo attuato nei mesi scorsi, abbiamo deciso di tenere una serie di incontri trimestrali. Vogliamo approfondire al massimo la conoscenza reciproca, raccontarci le nostre esperienze e dare/ricevere dai colleghi spunti e opportunità. Una specie di micro-conferenza con cadenza molto ravvicinata.
Erano presenti 8 partner oltre a noi:
- Four Digits (NL)
- Abstract (IT)
- Jarn (NO)
- Gocept (DE)
- Infrae (NL)
- Greenfinity (HU)
- Startifact (NL)
- Netsight (UK)
- RedTurtle (IT)
I talk
La giornata era organizzata in modo da avere talk ma anche spazio per discussioni aperte e lighting talk.
Evito di entrare nei dettagli: c'è un ottimo post di Matt Hamilton (Netsight) che vi invito a leggere.
Primo meeting: un sacco di cose da decidere!
Allo scorso Sorrento sprint è stato eletto un board (Kit Blake, Geir Baekholt e il sottoscritto) e in questo senso eravamo ora chiamati a proporre una strategia da seguire per i prossimi anni.
Questo è un cambiamento importante rispetto alla passata gestione. Abbiamo una strategia, condivisa tra il board e i membri che possono approvarla, emendarla, aggiungere nuove proposte.
Il presidente, e il suo vice che lo affiancherà fino a sostituirlo dopo 6 mesi, hanno l'incarico di metterla in pratica. Il board supervisiona in modo light i vari presidenti nell'arco di 5 anni. Giusto per garantire un minimo di continuità nelle iniziative.
La nostra proposta è fondamentalmente basata su due capisaldi.
- ZEA sarà molto più leggera: poca burocrazia, quote di partecipazione contenute (400€ per le aziende oltre i 3 componenti, 100€ per gli altri e try-before-buy fino a tutto dicembre), nessun vincolo di azione o partecipazione da parte dei membri. ZEA agevola le opportunità: non le crea e non le impone.
- ZEA sarà molto più comunitaria e coesa: una meta-company di 100+ persone, con gli skill derivati dalle competenze di 20+ aziende. Agiremo ognuno come sede locale di ognuno degli altri. Ancora una volta saremo a diffondere il verbo di Plone, come sempre secondo la nostra mission, e lo faremo in modo coordinato e condiviso.
Le azioni pratiche che contiamo di intraprendere nel breve e nel medio periodo sono:
- partecipare a eventi transnazionali a livello europeo per far conoscere Plone e il nostro brand;
- spingere sull'organizzazione e sulla partecipazione a sprint e tune up per continuare a evolvere (evolution not revolution) il nostro CMS preferito;
- organizzare un Transnational Exchange Programme durante il quale sviluppatori di un'azienda andranno a lavorare in altre aziende del gruppo per qualche tempo;
- ehm... sì, avremo anche un nuovo website
E non sarà solo Plone. Pyramid e Django già da un po' lo stanno affiancando. E non sarà solo tecnologia, in diversi abbiamo evidenziato competenze consulenziali che finora erano rimaste colpevolmente taciute.
Questa proposte, che come board abbiamo avanzato, sono state apprezzate dai membri e nei prossimi mesi proveremo, appunto, a metterle in pratica.
La community
Lo so. Mi ritrovo spesso a ripetere come un mantra la parola "community": nei post, nei talk, nelle serate con i colleghi, nelle presentazioni ai clienti.
Ancora una volta son qui a sottolineare questo aspetto: essere parte di una comunità.
Questa volta però non è una comunità di persone, ma una comunità di aziende. L'idea di base non cambia: in fondo le persone che guidano queste aziende sono le stesse che negli anni hanno sviluppato e evangelizzato il mondo su plone. Abbiamo ancora la stessa idea fissa (potevo dire meravigliosa).
Quello che cambia è il punto di vista. Un'azienda deve produrre reddito per sé e per tutte le persone che vi lavorano. E deve farlo in modo continuativo, organizzato, pensato.
Questo è un bene per Plone. E un bene per i nostri clienti (l'esperto della funzionalità che serve al mio cliente è sempre stato a un colpo di telefono, ma lo conosco molto meglio)
Personalmente, l'essere parte di una comunità di imprenditori mi aiuta a semplificare questa fase: tutti tendiamo a rendere le nostre aziende floride e stabili nel tempo, non dovrò più inventarmi in solitudine il modo migliore per farlo, potrò anche mettere a frutto suggerimenti e mediare iniziative già intraprese con successo da altri.
E' stata una 2 giorni impegnativa, carica di aspettative e con molte speranze per il futuro. Come lo stesso Matt nel suo post, anch'io "look forward to the next meeting in January…" ovunque sarà. :-)
Jan 20, 2011
SignUpSheet - collaborazione Open Source
La storia recente di questo prodotto Plone può essere presa ad esempio del nostro modo di operare, e delle dinamiche tipiche del mondo del software libero in cui ci muoviamo.
"Si può modificare liberamente": forse è questa la prima cosa che viene in mente parlando del software libero. Quale, tra le conseguenze di questa libertà, decreta la superiorità del software libero?
Opportunità
Non tanto la pur determinante possibilità di adattarlo alle proprie esigenze, quanto la possibilità di lavorare a più mani su una soluzione software:
- "in serie": quando si implementa un prodotto esistente con nuove funzionalità, si sta ricevendo il testimone in un'ideale staffetta la cui prima frazione è stata corsa dal suo creatore (e, a scanso di equivoci, bisogna poi essere disponibili a passare il testimone al successivo frazionista - chi ha orecchie per intendere...);
- "in parallelo": creando o modificando software assieme. Chi collabora? Aziende con aziende (e questa è "coopetition"), Clienti con Clienti (e questo è "Riuso"), aziende con Clienti (e questo è il mercato).
Ovviamente, le due modalità coesistono. Prendiamo il caso di SignUpSheet, il più diffuso prodotto Plone per iscrizioni online.

Cosa c'è sotto
All'origine di SignUpSheet, stanno due prodotti Plone di Martin Aspeli: Poi (sistema di issue tracking) e RichDocument, ai quali Aaron VanDerlip si è ispirato nel 2007 per la realizzazione iniziale del sistema di formulari online. Successivamente, Roché Compaan ha fornito la funzionalità di esportazione CSV, Simon Pamies ha aiutato a migliorare la gestione via browser degli archetype, Andreas Jung ha migliorato il codice e pacchettizzato il prodotto, la cui compatibilità con Plone 3 è stata assicurata da Radim Novotny. Tanti nomi, che per noi sono anche facce conosciute, da diversi continenti e nazioni, dal Sud Africa alla Repubblica Ceca.
I risultati? Assieme a tutti questi predecessori illustri, e su iniziativa del Cliente (uno di quelli che hanno capito il software libero e si impegnano in prima persona), abbiamo fatto fare a SignUpSheet un altro passo avanti, migliorando la compatibilità con i recenti rilasci di Plone e risolvendo un problema di internazionalizzazione che impediva la traduzione di alcuni dei testi a corredo del prodotto.
Una morale non moralista
Software Libero: più ti coinvolgi, più lo apprezzi. Non si tratta di risparmiare, si tratta di crescere. Magari non tanto salendo sulle spalle di pochi giganti, quanto su quelle di molti uomini simili a noi, con obiettivi convergenti con i nostri: e questo si chiama Community. Da non perdere!
Jun 04, 2010
La Comunità (secondo matt hamilton)
Questo è esattamente quello cui penso quando penso alla comunità Plone
Jun 01, 2010
Sorrento Sprint Summary - collective.amberjack progress report
RedTurtle is participating each year in Sorrento's Plone sprints. We were there also last week. It was an amazing time of brainstorming and coding. I will try to make a summary of what we have archived.
Symposium
We have started collective.amberjack presence in Sorrento with Massimo's presentation at the European Plone Symposium.
Sprint
Then we had two sprinting days. We have started day one with brainstorming. We had three objectives/questions:
- collective.amberjack sandbox
- refactoring the code - how to simplify collective.amberjack tour definition and registration
- translations - how to manage tour/steps translations
thanks to a fruitful discussion (garbas, dukebody, gborelli, miziodel, shywolf9982, sorry if I forgot your name ;-) we have right now answers to all of our dilemmas.
SanDbox
First idea of having a sandbox for collective.amberjack came up at last Plone Conference in Budapest. We have collected a lot of ideas for different use cases. We have had also some internal brainstorms in RedTurtle about it. Finally after confronting all the concepts - during Sorrento brainstorming - we will have a simple solution which should satisfy most of the users:
- simple Plone site deployment (like demo.plone.org)
- open registration for all users
- collective.amberjack preinstalled and ready to use
- user will try-out Plone using amberjack in his member folder
- nightly restart with fresh Data.fs
Code refactoring
We have started refactoring collective.amberjack. There are 3 areas of interests: javascript, tour definition and tour registration. Luca was doing a great job trying to simplify javascript part. He also prepare a good startup for future enhancements. I was refactoring tour part. We have decided to use a
configuration baseD tour definition,
which looks like that:
[amberjack] steps = 0_create-a-new-folder 1_fill-out-the-fields 2_publish-the-folder 3_all-done title = Add and publish a Folder [0_create-a-new-folder] blueprint = collective.amberjack.blueprints.step title = Create a new folder url = / text = Folders are one of .... validators = python: isManager python: isNotFolderCreated microsteps = 0_0_microstep 0_1_microstep 0_2_microstep [0_0_microstep] blueprint = collective.amberjack.blueprints.microstep description = If you don't want to perform the ... automatically done by your browser. [0_1_microstep] blueprint = collective.amberjack.blueprints.microstep idstep = menu_add-new description = Click the [Add new...] drop-down menu. [0_2_microstep] blueprint = collective.amberjack.blueprints.microstep idstep = new_folder description = Select [Folder] from the menu.
This concept is well known across the community. I hope it will be also more human readable comparing to python dictionary ;-). We have a working version in the trunk. For new tours we have also
new tour registration
- comparing to old approach (registration only using ZCML) you can now use also TTW registration. Other important change is that tour doesn't need to be a python package any more. Because it's a simple .cfg file right now you can simply zip it into an archive (zip, tar) and register it. We have a working implementation for web source and local file system registration (which you can find in the trunk). Archive file can be shipped with multiple tours and with
translationS
which right now are still just a concept that need to be implemented. We would like to make a use of i18ndude tool but because it was designed for ZPT this could be a wrong approach. Overall idea is to keep all the files (tour and the translations) together, something like:
- mytours.zip |- tour1.cfg |- tour1_en.po |- tour1_it.po |- tour1.pot |- tour2.cfg |- tour2_en.po ...
Fixing bugs
Mirco and Federica were working together and did an enormous job fixing most of the 1.1a release bugs. Thanks to Rob we have solved also some TinyMCE problems that we have had. We have still some open issues, like 'new portlet creation' tour that need some attention so we still need your help!
What's next?
The current development focus is on 1.1 release, which includes:
- new tour definition (python dictionary based tour will still work until 1.2)
- new tour registration (old registration will still work until 1.2)
- finish translation implementation
- fix last bugs
- deploy sandbox probably on demo.plone.org
- collective.amberjack.windmill - which should become default interface for creating and editing tours; we have right now something more then just proof of concept:
May 04, 2010
New collective.funkload releases
I have recently released a new version of collective.funkload and collective.recipe.funkload. There is one major improvment - funkload recorder is now working properly with collective.funkload scripts.
Here @RedTurtle we are heavily using funkload for acceptance and benchmarking tests. We have started using it in 2008 just after Bristol Performance Sprint. We have found even more useful with buildout recipe. The only missing part was the recorder. It's built-in Funkload itself, but it was not enabled in the recipe. Well - now it is ;-)
/ If you want to know how to include funkload in buildout project - check my previous blog /
Starting a recorder is quite easy:
$ ./bin/funkload record -p 8080 MyTest
for full usage call:
$ ./bin/funkload record --help
This will start proxy on 8080 port and save all your browser requests to MyTest funkload scenario. Now open your browser, change proxy configuration to localhost:8080 and click-through test case. When you finish - stop the proxy with Ctrl-C. Funkload will generate a test_MyTest.py file and notify you where you can find it. It should be now collective.funkload compatible - you can lunch:
$ ./bin/funkload test /path/to/test_MyTest.py
To test it.
Another small improvement is a PloneFLTestCase. It extends default funkload test case, implementing two additional methods helping with Plone content creation. Right now instead of using this approach:
folder_portal_factory = self._browse(server_url + "/coreloadtests/Members/" + self.user_id +"/createObject?type_name=Folder",
method='get',
follow_redirect=False,
description = 'Get folder portal factory')
folder_edit_url = folder_portal_factory.headers.get('Location')
folder_id = folder_edit_url.split('/')[-2]
folder_created = self.post(folder_edit_url, params=[
['id', folder_id],
['title', 'folder'],
['description', ''],
['description_text_format', 'text/plain'],
['subject_existing_keywords:default:list', ''],
['last_referer', 'http://localhost:8080/coreloadtests/Members/' + self.user_id + '/view'],
['form_submit', 'Save']],
description="Post /coreloadtests/Members/user...280843853/atct_edit")
new_folder_id = folder_created.url.split('/')[-2]
you can just do:
new_folder_id = self.addContent(
server_url,
portal_type='Folder',
params=[['id', 'id'],
['title', 'testing title'],
['description', 'testing description'],
['description_text_format', 'text/plain'],
['form.submitted', '1'],
['last_referer', ''],
['form_submit', 'Save']],
description='Create folder')
It doesn't do much, but for sure it helps you keep you test case readable.
Mar 04, 2010
Wikitude: Realtà aumentata
Utilizza il tuo telefono per ottenere informazioni su dove ti trovi
Ogni tanto ti ritrovi con qualcuno che ti racconta le ultime meraviglie della realtà aumentata [wikipedia].
Fondamentalmente (e semplificando moltissimo la cosa..) si tratta di sovrapporre livelli informativi alla realtà che stiamo vivendo.
Lo possono fare sfruttando in vari modi oggettini che sono già presenti: dal famoso caschetto da realtà virtuale all'ormai famigerato iPhone.
Sicuramente l'uso di device mobili è l'opzione più attraente e più consumer.
I signori di wikitude si sono inventati:
- una community dove ognuno può aggiungere i suoi punti di interesse (POI): wikitude.me
- un browser che gira su Android, iPhone, e Symbian (Nokia N97 e N97 mini). iPhone 3GS. Il mio ovviamente non va :(
- volevamo farci mancare delle API? ovviamente no! Certo che in Java...
l'effetto finale è notevole:
Nov 12, 2009
Plone nuovamente premiato agli Open Source CMS Awards
Dopo il secondo posto del 2007 e il primo posto nel 2008, Plone si conferma la miglior scelta nella categoria "other open souirce CMS"
Packt Publishing, uno dei leader nell'editoria relativa al software libero, organizza ogni anno il premio "Best open source CMS".
A partire dallo scorso Giugno, dopo che un panel di esperti ha selezionato i "top five" della categoria "Other open source CMS", i voti del pubblico sono affluiti fino alla fine di Ottobre, decretando il successo di Plone, come già nel 2008.
Per noi che conosciamo Plone e ci lavoriamo quotidianamente, questo risultato non è certo una sorpresa: per chi non lo conosce ancora, può essere un importante elemento di valutazione.
C'è da dire che, di anno in anno, gli organismi di terza parte che valutano i CMS con griglie molto severe, come il CMS watch, collocano regolarmente Plone ai livelli più alti come prestazioni complessive. E' importante diffondere il concetto che Plone è davvero un sistema completo e di classe enterprise, e interessa a tutti (a noi come ai Clienti) che riconoscimenti come questi stiano a dimostrarlo.
Nov 07, 2009
RuPy conference
Short summary about RuPy - strongly dynamic conference. The philosophy of RuPy is to put togheter Python & Ruby experts with young programmers and to support a good communication channel for East-West exchange of prospective ideas.
I have been delegated as a RedTurtle member to join RuPy conference that has been held in Poznan, my hometown city.
The idea behind the conference is to try to animate central- and east-european Python and Ruby communities. By inviting experts we want to broaden our knowledge and undersanding of presented concepts. The conference is meant to serve the exchange of ideas on the scientific ground, that is use of mentioned languages for certain scientific problems like, for example, text parsing, and on the buisness ground, like use of Django or Rails for creating web applications.
The state of Plone
short talk presented by Maciej Dziergwa about current Plone situation - based on Matt Hamilton's PloneConf2009 talk. After the talk we had a short discussion about current situation of Polish Plone Community. Plone is still not popular in Poland as it is in Italy...
Compiled Websites with Plone, Django and SSI
very interesting talk by Łukasz Langa and Wojciech Lichota about Plone, Django and SSI deployment. Using stxnext.staticdeployment you can deploy Plone site to static files. You can add dynamic stuff (like commenting) using Django. Finally you can glue everything together using Apache SSI mod_include. If you need search engine you can use and integrate, everything what I've mentioned before, with Xapian (or Solr).
You can find slides here.
Caching techniques in Python
some interesting caching techniques explained by Michał Domański and Michał Chruszcz. In Plone world we already know plone.memoize - a decorator for caching the values of functions and methods. You can use it of course outside Zope/Plone environment. If you need something more - check out i.e. pylibmc. At the end they've covered also reverse proxy with Varnish.

