Skip to content. | Skip to navigation

Personal tools

>>> ''.join(word[:3].lower() for word in 'David Isaac Glick'.split())

‘davisagli’

Navigation

You are here: Home

David Glick – Plone developer

by admin posted Apr 05, 2010 11:48 PM

Review of "Plone 3 Products Development Cookbook"

by David Glick posted Jun 06, 2010 06:24 PM

Packt Publishing recently released their new title, "Plone 3 Products Development Cookbook"

Last month Packt Publishing released a new title to add their growing line of books on Plone development — Plone 3 Products Development Cookbook by Juan Pablo Giménez and Marcos F. Romero, reviewed by Martin Aspeli, Alec Mitchell, and Emanuel Sartor. The book aims to be a useful recipe-oriented resource for beginner- to intermediate-level developers of Plone add-on products. Having read the review copy Packt was kind enough to send me, I can recommend it as an up-to-date and more example-oriented complement to Packt's still-great established title on Plone 3 development, Martin Aspeli's Professional Plone Development.

I am a bit skeptical of the traditional cookbook format, in which a series of disjointed "recipes" are presented for dealing with various scenarios.  In practice these are most useful when your needs match the problem expressed in the recipe exactly, which is seldom. So I was glad to see that the authors of this cookbook have departed from that pattern somewhat. The book does contain a series of recipes, but they are all related to an overall project, to create a digital newspaper website, which runs throughout the book. This helps provide continuity and give clarity on which pieces of the included recipes are needed for the particular project as opposed to being general.

The "recipe" concept is still evident in the book's format, though. Each chapter is divided into several tasks, each of which has 2 main parts: a "How to do it" section which lists the steps needed to complete the task, followed by a "How it works" section which describes the theory behind the task as well as the finer points of any of the steps which were non-obvious. It may seem a little weird that the explanation is separate from the instructions, but I think it could be a useful approach for a reader who learns well by example, and wants to try to figure out the meaning of the steps as they go before the answers are given. This format is one of the main things that sets this book apart from Professional Plone Development, which otherwise covers some similar topics.  I would recommend the latter to someone who learns best by reading first or who wants a reference, and this book to someone who learns best by doing first.

In addition, this book is somewhat more up-to-date with current tools and techniques (though I anticipate that will be fully rectified in the upcoming Plone 4 edition of PPD later this year).  Though the Products Development Cookbook goes into less depth in terms of explanation, the authors have been quite good about including links to up-to-date online resources such as the Plone Developer Manual where they don't have space to cover a subject in depth. The title, Plone 3 Products Development Cookbook, is a bit of a misnomer, by the way.  As far as I know, almost all the techniques described should work just as well in Plone 4.  (Unfortunately this repeats a mistake in naming from Erik Rose's Plone 3 for Education and Alex Clark's Plone 3 Site Administration, which also both aim to be relevant for Plone 4...it is a shame Packt didn't realize it is possible to write a book that targets both Plone 3 and Plone 4.)

I particularly enjoyed the chapters discussing content type creation. The book has examples of building an Archetype using ArgoUML and ArchGenXML, of building an Archetype using the 'archetype' ZopeSkel template, of creating a basic type using plone.app.content, and of creating a type using Dexterity...so this makes for an interesting quick comparison of the steps required in each case. (It is not an in-depth discussion of any of these approaches, though.  I would use the online manuals for Archetypes and Dexterity to learn the finer points of either system.)

There are also several chapters that did a good job of recording some of the lore about Plone development tools and processes that has mostly been passed along in blogs and sprints so far.  For example, it covers the use of IPython and ipdb, plone.reload, in-browser testing with selenium, load testing with funkload, and a full production buildout including ZEO, varnish, pound, supervisor, and assorted utilities.  As a seasoned Plone developer myself, I even learned a few things from these sections. In addition to the topics mentioned above, the book also covers installing Plone, testing, internationalization, workflow and permissions, KSS, portlets, use of the Zope Component Architecture, and integrating with an external system (OpenX) via XML-RPC.

For more information, orders, and errata, visit Packt Publishing's page for Plone 3 Products Development Cookbook.  As usual for Packt, the book is available both in print and as an ebook.

Introducing the Plone resource customizer

by David Glick posted Jun 01, 2010 10:50 PM

Thanks to the sprint at Plone Symposium East, the Plone resource customizer is almost ready for a beta release.

Going into the ZMI to edit templates and stylesheets and replace images sucks. Especially once we made it so there are two places you might need to go in Plone 3 (portal_skins and portal_view_customizations).  I've been working on a better way, the (drumroll please) Plone resource customizer*.

Thanks to the great work of my fellow sprinters at Plone Symposium East, I'm now ready to give a preview of the tool, which hopefully will see a first beta release real soon now™. Here's the screencast...

I forgot to mention in the screencast that Eric Steele has also started work on integrating this tool with Gloworm, so that it will be possible to find a resource to customize just by pointing and clicking (a la Firebug).

Currently the customizer displays items from CMF skin layers, browser view templates, viewlets, and portlets. Support for other things like browser resources or ZMI pages could probably be added, at least in a read-only fashion. The infrastructure is flexible enough to support new ways of registering resources that haven't been invented yet.

For now, if you're adventurous and want to try out the customizer, get a copy of the Plone 4 coredev buildout, and run it using -c experimental/skineditor.cfg

We are tracking bugs and ideas for improvement in the Plone bug tracker, with the component set to "Skin Editor."

This is only the beginning...David Bain is working on the customizer as part of the Google Summer of Code, and we've got lots of ideas about how to make it even more useful.

*better names hereby solicited :)

7 comments

Be vigilant: Know your Buildout Threat Level

by David Glick posted May 09, 2010 09:09 PM

The Buildout Threat Level indicator reports the percentage of buildouts that have succeeded in the past 4 hours.

For those who missed my announcement last week on Twitter –

As a result of a mostly tongue-in-cheek conversation on IRC with Elizabeth Leddy, Alex Clark, and Matthew Wilkes, I decided to set up the global zc.buildout threat level indicator.

The indicator collects reports of success and failure from actual buildout runs, and displays the current threat level based on the percentage of buildouts that have succeeded in the past 4 hours.

I'm happy to report that the current threat level is LOW.

Buildout Threat Level: Low

Creating the indicator was mostly an excuse to try writing a Google App Engine app, but it's already proved its utility.  Last Thursday the threat level reached ELEVATED after a new distribute release started causing buildouts to fail under Python 2.4. Thanks to Tarek Ziadé for the quick response with a new distribute release to fix that.

You can help make the indicator more accurate!  Just add the buildout.threatlevel extension to your buildout:

[buildout]
extensions = buildout.threatlevel

This will display the current threat level as one of the initial steps when you run buildout (so that you have an opportunity to abort if it has reached SEVERE), and will ping my app engine app when the buildout is done to report success or failure. (No data is collected in this ping aside from a boolean indicating success, time, and IP address.)

Code for the GAE app and buildout extension is in the collective.

4 comments
David Glick

David Glick

I am a problem solver trying to make websites easier to build.

Currently I do this in my spare time as a member of the Plone core team, and during the day as an independent web developer specializing in Plone and custom Python web applications.