Thursday, March 28, 2013

A working Plone 2.5.5 buildout

On a recent project I needed to get Plone 2.5.5 up and running. This is a note to self so I can get it done more quickly next time. It also reminds me how far we've come from the Plone 2.5.5 and early buildout days.

As a starting point I needed a "known good Plone 2.5.5 buildout" I borrowed most of ideas from this Venezuelan repository: http://plataforma.cenditel.gob.ve/browser/proyectosInstitucionales/eGov/ppm/buildout/plone/2.5/buildout.cfg?rev=137. After reading around I mixed and matched and came up with this template: https://gist.github.com/pigeonflight/5268138 (I consider it good enough for a developer to get started)

Use collective buildout.python for building a suitable  Python 2.4

I did the following as the root user (Takes about 40 minutes to compile on an Amazon EC2 micro instance)

cd /usr/local
cd python
python bootstrap.py


Edit 'buildout.cfg' so that parts and eggs only reference python 2.4

extends =
   src/base.cfg
   src/readline.cfg
   src/libjpeg.cfg
   src/python24.cfg
   src/links.cfg


parts =
   ${buildout:base-parts}
   ${buildout:readline-parts}
   ${buildout:libjpeg-parts}
   ${buildout:python24-parts}
   ${buildout:links-parts}
Then run buildout

bin/buildout 
bin/install-links

As the Plone user download the custom buildout.cfg run the following commands

Get the custom buildout.
          wget https://gist.github.com/pigeonflight/5268138/raw/27f2f61e4a51d6822816a9c451d6ae35583184bf/buildout.cfg


/usr/local/python/bin/virtualenv-2.4 .bin/easy_install zc.buildout==1.4.4
         # this line below does a little dance (to take advantage of buildout init)
mv buildout.cfgzz && bin/buildout init && mv buildout.cfgzz buildout.cfg
bin/buildout



The result should be a working Plone 2.5.5.

I plan to customize this for production (yes, they are still using Plone 2.5.5).

Tuesday, March 19, 2013

Progress on the Plone Theming Guide

TL;DR; I'm working on a document that helps designers get started with Plone theming. It fits into the idea of making Plone more approachable. At the bottom of this post is a checklist of things needed to fuel Plone adoption.

Warning! this post will use terms like dogfooding, flexslider and Plone. Don't panic, it is mostly harmless and, apart from the current sentence, is written in a manner accessible enough for the general public.

Plone's Diazo system is, to date, the most elegant approach to theming among content management systems. In an effort to spread the Plone and Diazo love I started writing a document on Plone theming.

This really wasn't supposed to happen. It all started because I wanted to "rub together" a few quick pointers to help to get a designer up to speed with Plone theming. I assumed that there was enough Diazo theming documentation on the web that I could simply point at the correct details and they'd be on their way. Out of that exercise, this happened.

It's actually a side project, being done in my nearly non-existent spare time. After spending about two and a half weeks, the "few quick pointers" now span more than 40 pages. The document fills many of the gaps that I discovered. I'm not finished, but it's definitely taking shape and at least it provides a more structured approach to getting started.

Sliders: The Best Part

The theming document is at the stage where a motivated reader should be able to create a theme for Plone. I'm especially pleased with the section that covers rules for custom sliders and Plone carousels.
It guides the reader through the rules needed to transform the output of the common Plone add-ons collective.carousel and Products.Carousel into markup compatible with Flexslider. The principles are applicable to other sliders.

More to do

Some gaps still exist, for example there are not yet specific details on how to package a finished theme. Also I'd like to explore in more detail the best practices for bringing in Plone's dynamic functionality (JS and CSS) without "clobbering" the theme's JS and CSS.

The Vision

Plone is an extremely user friendly content management system yet it can be very overwhelming to the uninitiated. The big picture is about making Plone more approachable to the self learner. This ties in nicely with ideas from Mikko Ohtamaa, who captures his thoughts on how to stimulate Plone adoption in the diagram below.


As I tweeted recently:
... I see a core doc plus a http://patterntap.com type facility (built with Plone if we're dogfooding*) and low barrier to contribution
* Look up dogfooding (I was once shot down in class for suggesting that "dogging" was a verb :) I hope some of my former English and Communication teachers are reading this).

When this core document is completed I'd like to see a facility that makes it easy for persons to contribute snippets/recipes. Good examples are useful when you're just starting out.

My other recent side project focuses on getting started with Plone really quickly and is inline with this vision of making Plone approachable.

The Checklist

If the Plone community can be excellent in these areas, Plone adoption will take off.
  • Improved theming documentation and ready made themes
  • Make getting started with development easier (I'd like to hear more about Plone IDE)
  • Product Bundles (distributions of Plone that address different markets, ftw.inflator is looking good for this.)
  • An easy way to deploy finished code into production 

Thursday, March 14, 2013

Draw.io on a Chromebook a real webapp

If you want to peek into the future then have a look at Draw.io running on a Chromebook. I think this is what Google has in mind for ChromeOS.


In the context of ChromeOS, Draw.io is a true 'app', in contrast to some of the "apps" in the Chrome Store that are basically bookmarks for websites. What you're seeing in this screenshot is my screen running the HTML5 based Draw.io app (BTW to the right of it I have the 60 minutes app). This is a web app running as a first-class citizen on a web OS.

Stay tuned, I suspect there's more where this came from.

Wednesday, March 13, 2013

How to install Plone Social Suite

Here's my quick recipe to get started with Plone Social Suite. Plan to spend about 15 minutes. As usual this does not assume any Plone knowledge, just the ability to follow a few instructions and the assumption that you have a Dotcloud and Cloud9 IDE account.

I've used Dotcloud and Cloud9 ide in the past to get Plone installed. This short recipe demonstrates how to customize your Plone setup at install/deployment time with the Plone Social Suite add-on.

Step 1 - clone: https://github.com/pigeonflight/stack-python-plone

This step is performed from your Cloud9 IDE dashboard.


Step 2 - configure Dotcloud

The following commands at the terminal in cloud9 IDE will get you started:
easy_install dotcloud
dotcloud setup
dotcloud create plonesocial

Step 3 - Edit "add-ons.cfg" to include plonesocial.suite then push



Open add-ons.cfg and add 'plonesocial.suite' to the eggs section. Then push to dotcloud:

dotcloud push

After a few minutes you will  see your admin password and the URL of your new Plone site. Make a note of you admin password and log into your site.

If you ever need to retrieve your admin password again, use the following commands on the terminal:
source aliases
ploneadminpassword

Step 4 - Install in your Plone Site

Go to "Site-Setup" > "Add-ons" , select Plone Social Suite and click "Activate"




Saturday, March 2, 2013

Barbados Talent

I'm convinced that the powers that be in Barbados aren't aware of the pool of talent that exists there. Today, in one room, I met up with +Troy Weekes, +Jason Als  , +Jason Hynds  (see previous blog entry for more background), +Shannon Clarke+Dario Thornhill and +Samora Reid.

note: I wrote this post a few weeks ago, but put off proof reading and publishing until now, it was "today" at that time :).

Troy has worked on many interesting projects including a dashboard used in the aviation industry. He's interested in creating improved user interactions and is a national development scholar of Barbados. Most recently he launched a platform for education called Easy Learner and is building out curricula for Primary School students. He shared one of his experiences related to building autopilot code that he had to test in a real plane (in the air!!).

Jason Als started programming during secondary school and enjoyed it so much that he just kept doing it. One of his earlier projects involved converting the paper based business processes of an organization to a paperless system. He has been to 3 Barbados hackathons and won 2 of them. He's a big Javascript advocate (AngularJS and NodeJS).

Troy suggested that there should be a lobby to encourage the development of spaces where developers can meetup, work on projects and exchange knowledge. The investment is important an small in proportion compared to the contribute and economic development of the industry that might accrue. Clarke brought up the need for consensus first so that there could be a unified lobby on government.

I shared my experience from the Technology Innovation Centre and the pros and cons of being at an incubator.

Shannon brought up the idea of self-funding, he said that he would personally put money into a co-working space.

Troy wants to see a space specific to technology ventures, he says that the money is not going to the right places (apparently funding is coming into the island for ICT development). Shannon confirmed that the government is getting significant figures.

Dario argued that the first thing needed would be a space. Shannon disagreed and suggested that a physical space comes second, the world runs on code and the skills are in the region. What would it take? Wifi, coffee and power. Thomas Clarke asked the question why? "Everybody's crazy till the idea starts to work".  In 1991 Thomas Clarke started a software development firm that failed, he implied that they may have been too early to the "game", these were pre-internet days in Barbados for startup. These days, having run a failed tech company is "street cred", and it's likely that he's learnt from some of his mistakes, his latest venture focuses on IT problem solving under the name cyberseas.biz.

Some of the resources that came up in our discussions.
prgmr, cloud9 ide (c9.io), google app engine, github, bitbucket, stackoverflow

Jason Als demonstrated node.js and angular.js and his work on justlooking246.com, an online shopping app. He used phonegap to port the app to  android.



Samora Reid demoed RedDonor. He calls it the kickstarter for blood donations. He says it started off as a social initiative and is 25% of what he wants the full product to be.


Shannon shared his Clevergrocer.com site.





Sign up for my upcoming Plone 5 Book & Video tutorials

plone 5 for newbies book and videos