From 07e9b9cefc5e3a53e133efe6b1e5df1d6954580b Mon Sep 17 00:00:00 2001 From: Alex Clark Date: Sat, 22 Sep 2012 21:08:14 -0400 Subject: [PATCH] Clean up --- .../technorati-post-claim-please-ignore.html | 152 ------ 2007/10/17/first-post.html | 186 ------- ...p-improve-plone039s-api-documentation.html | 186 ------- .../17/i-love-the-039slrn039-news-reader.html | 192 -------- 2007/10/17/is-this-thing-on.html | 174 ------- 2007/10/18/my-plone-days-october-2007.html | 159 ------ 2007/10/28/repoze-quotmeetupsquot.html | 170 ------- 2007/11/20/usergroup-a-palooza.html | 193 -------- ...xagonitrecipedownload-ftw-for-the-win.html | 190 -------- ...fix-for-spacesapp-in-mac-os-x-leopard.html | 199 -------- 2008/03/06/spaces-fixed.html | 172 ------- 2008/03/06/unix-tips-for-the-elderly.html | 194 -------- 2008/03/17/take-back-the-tap.html | 185 ------- ...new-science-web-site-powered-by-plone.html | 157 ------ 2008/04/12/nasa-story-slashdotted.html | 158 ------ 2008/04/18/help-me-upgrade-ploneorg.html | 188 -------- 2008/05/01/ploneorg-upgrade-update.html | 200 -------- 2008/05/15/supervisor-rocks.html | 230 --------- .../05/22/ploneorg-upgrade-remote-sprint.html | 167 ------- 2008/06/02/placeful-theming.html | 199 -------- ...ter-for-an-early-bird-admission-today.html | 195 -------- ...-collectiverecipesupervisor-thank-you.html | 255 ---------- 2008/09/02/repozebfg-tonight-ftw.html | 174 ------- ...ptember-2008-is-the-month-of-ploneorg.html | 159 ------ 2008/11/13/productstodo-01.html | 199 -------- 2008/11/19/naked-plone-theme.html | 166 ------- 2008/12/02/zpugdc-meeting-tonight.html | 159 ------ .../getting-excited-about-plone-as-eggs.html | 171 ------- 2009/01/23/help-esteele-go-to-baarn.html | 178 ------- 2009/02/07/nirvana-old-age-interrupted.html | 156 ------ ...g-ploneorg039s-new-pypi-functionality.html | 174 ------- ...dout-for-wordpress-and-other-php-apps.html | 331 ------------- ...a-sane-buildout-for-repozezope2-plone.html | 322 ------------- ...w-of-veda-williams039-plone-3-theming.html | 350 -------------- 2009/12/31/new-years-python-meme.html | 204 -------- .../be-there-or-be-square-first-cutmov.html | 155 ------ ...toronto-plone-add-ons-sprint-1-report.html | 188 -------- 2010/01/06/you-know-me-first-cutmov.html | 154 ------ ...this-blog-is-now-powered-by-wordpress.html | 174 ------- ...an-just-use-buildout-to-install-plone.html | 251 ---------- 2010/01/12/just-friends-first-cutmov.html | 154 ------ ...o-deploy-a-plone-21-site-to-the-cloud.html | 235 --------- 2010/03/22/i-need-something-to-do.html | 309 ------------ ...lood-sweat-tears-and-a-new-plone-book.html | 311 ------------ 2010/07/12/the-apache-modules-for-xdv.html | 426 ---------------- 2010/10/15/i-reinstalled-recently.html | 216 --------- 2010/11/04/a-report-on-plonetheme.html | 376 --------------- 2011/01/19/new-website-for-2011.html | 315 ------------ 2011/01/21/help-alex-clark-help-plone.html | 219 --------- ...otplone-3-for-educationquot-right-now.html | 282 ----------- 2011/01/26/hostout-rules.html | 289 ----------- 2011/01/31/in-defense-of-pypi.html | 228 --------- 2011/02/16/cioppino-sprint-report.html | 381 --------------- .../29/introducing-charm-death-to-charm.html | 265 ---------- ...ollectivetransmogrifier-without-plone.html | 234 --------- .../03/plone-conference-2008-is-a-wrap.html | 189 -------- ...-site-adminquot-book-is-still-for-you.html | 278 ----------- ...quotnewquot-plone-theming-has-arrived.html | 205 -------- ...ate-for-part-time-business-consulting.html | 255 ---------- ...ou039re-so-vain-so-why-not-use-vanity.html | 210 -------- ...s-episode-1-site-actions-contact-link.html | 326 ------------- ...-episode-2-collective-python-buildout.html | 330 ------------- ...e-3-collective-recaptcha-installation.html | 456 ------------------ 2011/08/20/hello-plone.html | 323 ------------- 2011/08/28/hello-mod_wsgi.html | 234 --------- 2011/09/22/mozilla-and-pypi.html | 290 ----------- .../03/vagrant-puppet-and-mozilla-oh-my.html | 285 ----------- 2011/10/14/pillow-one-year-later.html | 190 -------- .../24/plone-first-class-python-citizen.html | 221 --------- ...ne-secrets-episode-4-varnish-in-front.html | 256 ---------- 2011/11/29/introducing-pythonpackagescom.html | 231 --------- 2011/11/29/ploneorg-maintenance.html | 180 ------- 2011/12/21/new-year039s-python-meme-2012.html | 192 -------- 2012/01/25/hello-plone-theming.html | 167 ------- 2012/01/30/new-vanity-release.html | 312 ------------ 2012/04/04/test-plone-tmp.html | 223 --------- 2012/05/11/adam-yauch-has-passed.html | 224 --------- .../23/a-simple-printer-of-nested-lists.html | 190 -------- 2012/06/12/zope2-bootstrap.html | 178 ------- 2012/07/04/pythonpackagescom-beta-launch.html | 237 --------- 2012/07/12/the-plones-templer.html | 221 --------- ...-moved-to-python-imaging-organization.html | 199 -------- ...lding-windows-installers-in-the-cloud.html | 246 ---------- ...pport-to-register-and-upload-packages.html | 224 --------- ...-python-packages-are-belong-to-github.html | 169 ------- ...om-new-github-service-push-to-release.html | 172 ------- .../bootstrapping-a-buildout-16-release.html | 172 ------- .../index.html | 185 ------- .../13/pythonpackagescom-pyformance-02.html | 173 ------- 2012/09/21/gittip-is-the-future.html | 192 -------- ...s-this-blog-is-now-powered-by-pelican.html | 227 --------- 91 files changed, 20368 deletions(-) delete mode 100644 2007/10/10/technorati-post-claim-please-ignore.html delete mode 100644 2007/10/17/first-post.html delete mode 100644 2007/10/17/help-improve-plone039s-api-documentation.html delete mode 100644 2007/10/17/i-love-the-039slrn039-news-reader.html delete mode 100644 2007/10/17/is-this-thing-on.html delete mode 100644 2007/10/18/my-plone-days-october-2007.html delete mode 100644 2007/10/28/repoze-quotmeetupsquot.html delete mode 100644 2007/11/20/usergroup-a-palooza.html delete mode 100644 2007/11/28/zcbuildout-recipe-tip-hexagonitrecipedownload-ftw-for-the-win.html delete mode 100644 2008/01/01/spaces-spaces-spaces-fix-for-spacesapp-in-mac-os-x-leopard.html delete mode 100644 2008/03/06/spaces-fixed.html delete mode 100644 2008/03/06/unix-tips-for-the-elderly.html delete mode 100644 2008/03/17/take-back-the-tap.html delete mode 100644 2008/04/10/nasa-starts-new-science-web-site-powered-by-plone.html delete mode 100644 2008/04/12/nasa-story-slashdotted.html delete mode 100644 2008/04/18/help-me-upgrade-ploneorg.html delete mode 100644 2008/05/01/ploneorg-upgrade-update.html delete mode 100644 2008/05/15/supervisor-rocks.html delete mode 100644 2008/05/22/ploneorg-upgrade-remote-sprint.html delete mode 100644 2008/06/02/placeful-theming.html delete mode 100644 2008/07/01/plone-conference-2008-please-register-for-an-early-bird-admission-today.html delete mode 100644 2008/08/10/re-collectiverecipesupervisor-thank-you.html delete mode 100644 2008/09/02/repozebfg-tonight-ftw.html delete mode 100644 2008/09/02/september-2008-is-the-month-of-ploneorg.html delete mode 100644 2008/11/13/productstodo-01.html delete mode 100644 2008/11/19/naked-plone-theme.html delete mode 100644 2008/12/02/zpugdc-meeting-tonight.html delete mode 100644 2008/12/15/getting-excited-about-plone-as-eggs.html delete mode 100644 2009/01/23/help-esteele-go-to-baarn.html delete mode 100644 2009/02/07/nirvana-old-age-interrupted.html delete mode 100644 2009/03/13/is-anyone-using-ploneorg039s-new-pypi-functionality.html delete mode 100644 2009/04/21/a-lamp-buildout-for-wordpress-and-other-php-apps.html delete mode 100644 2009/06/18/a-sane-buildout-for-repozezope2-plone.html delete mode 100644 2009/09/22/review-of-veda-williams039-plone-3-theming.html delete mode 100644 2009/12/31/new-years-python-meme.html delete mode 100644 2010/01/01/be-there-or-be-square-first-cutmov.html delete mode 100644 2010/01/01/toronto-plone-add-ons-sprint-1-report.html delete mode 100644 2010/01/06/you-know-me-first-cutmov.html delete mode 100644 2010/01/06/yup-this-blog-is-now-powered-by-wordpress.html delete mode 100644 2010/01/07/no-really-you-can-just-use-buildout-to-install-plone.html delete mode 100644 2010/01/12/just-friends-first-cutmov.html delete mode 100644 2010/03/15/using-buildout-to-deploy-a-plone-21-site-to-the-cloud.html delete mode 100644 2010/03/22/i-need-something-to-do.html delete mode 100644 2010/03/30/blood-sweat-tears-and-a-new-plone-book.html delete mode 100644 2010/07/12/the-apache-modules-for-xdv.html delete mode 100644 2010/10/15/i-reinstalled-recently.html delete mode 100644 2010/11/04/a-report-on-plonetheme.html delete mode 100644 2011/01/19/new-website-for-2011.html delete mode 100644 2011/01/21/help-alex-clark-help-plone.html delete mode 100644 2011/01/25/you-should-buy-quotplone-3-for-educationquot-right-now.html delete mode 100644 2011/01/26/hostout-rules.html delete mode 100644 2011/01/31/in-defense-of-pypi.html delete mode 100644 2011/02/16/cioppino-sprint-report.html delete mode 100644 2011/03/29/introducing-charm-death-to-charm.html delete mode 100644 2011/04/15/collectivetransmogrifier-without-plone.html delete mode 100644 2011/05/03/plone-conference-2008-is-a-wrap.html delete mode 100644 2011/05/10/top-10-reasons-quotplone-33-site-adminquot-book-is-still-for-you.html delete mode 100644 2011/05/27/quotnewquot-plone-theming-has-arrived.html delete mode 100644 2011/06/14/aclarknet-seeks-unique-candidate-for-part-time-business-consulting.html delete mode 100644 2011/06/16/you039re-so-vain-so-why-not-use-vanity.html delete mode 100644 2011/06/20/plone-secrets-episode-1-site-actions-contact-link.html delete mode 100644 2011/07/06/plone-secrets-episode-2-collective-python-buildout.html delete mode 100644 2011/08/09/plone-secrets-episode-3-collective-recaptcha-installation.html delete mode 100644 2011/08/20/hello-plone.html delete mode 100644 2011/08/28/hello-mod_wsgi.html delete mode 100644 2011/09/22/mozilla-and-pypi.html delete mode 100644 2011/10/03/vagrant-puppet-and-mozilla-oh-my.html delete mode 100644 2011/10/14/pillow-one-year-later.html delete mode 100644 2011/10/24/plone-first-class-python-citizen.html delete mode 100644 2011/11/09/plone-secrets-episode-4-varnish-in-front.html delete mode 100644 2011/11/29/introducing-pythonpackagescom.html delete mode 100644 2011/11/29/ploneorg-maintenance.html delete mode 100644 2011/12/21/new-year039s-python-meme-2012.html delete mode 100644 2012/01/25/hello-plone-theming.html delete mode 100644 2012/01/30/new-vanity-release.html delete mode 100644 2012/04/04/test-plone-tmp.html delete mode 100644 2012/05/11/adam-yauch-has-passed.html delete mode 100644 2012/05/23/a-simple-printer-of-nested-lists.html delete mode 100644 2012/06/12/zope2-bootstrap.html delete mode 100644 2012/07/04/pythonpackagescom-beta-launch.html delete mode 100644 2012/07/12/the-plones-templer.html delete mode 100644 2012/07/25/pillow-moved-to-python-imaging-organization.html delete mode 100644 2012/08/01/building-windows-installers-in-the-cloud.html delete mode 100644 2012/08/07/pythonpackagescom-using-pypi039s-oauth1-support-to-register-and-upload-packages.html delete mode 100644 2012/08/10/all-my-python-packages-are-belong-to-github.html delete mode 100644 2012/08/10/pythonpackagescom-new-github-service-push-to-release.html delete mode 100644 2012/08/13/bootstrapping-a-buildout-16-release.html delete mode 100644 2012/08/13/bootstrapping-a-buildout-16-release/index.html delete mode 100644 2012/08/13/pythonpackagescom-pyformance-02.html delete mode 100644 2012/09/21/gittip-is-the-future.html delete mode 100644 2012/09/21/yes-this-blog-is-now-powered-by-pelican.html diff --git a/2007/10/10/technorati-post-claim-please-ignore.html b/2007/10/10/technorati-post-claim-please-ignore.html deleted file mode 100644 index 37c2ddf..0000000 --- a/2007/10/10/technorati-post-claim-please-ignore.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - Technorati Post Claim, Please Ignore. - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Technorati Post Claim, Please Ignore.

- -
- -
- -

Technorati Profile

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/10/17/first-post.html b/2007/10/17/first-post.html deleted file mode 100644 index ddfa30f..0000000 --- a/2007/10/17/first-post.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - First Post - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- First Post

- -
- -
- -

`|image0|`_Why? Because I can (read: Plone allows me to do so) but -also:

-
    -
  • I have been reading a lot of Plone blogs lately and they have -inspired me to write my own.
  • -
  • I want to interact with other Plonistas.
  • -
  • I want to get my web 2.0 ON. ;-)
  • -
-

To that end, this post is about my build tools and how I love them.

-

Note: there are much better ways to accomplish what I'm doing here. -I'm reminding myself this as much as the reader. So why do I continue -to use them? Good question! I'll save the answer for another post, but -for now you should be aware of these (better) alternatives:

- -

I used buildout for the first time at the Baarn UI Sprint 2007 and -really enjoyed it. I have also used and enjoyed Chris McDonough's -buildit. That may be where I end up (and there are several more to -choose from) but for now I still enjoy typing:

-
-newzope test-site ProductA ProductB ProductC
-
-

and having a working instance a few seconds later (with Product[A,B,C] -installed)! Of course this requires I have a working Zope already... and -that I edit Zope's skel/etc/zope.conf... but hey nothing is perfect and -old habits die hard.

-

-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/first-post.rst, line 14); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/10/17/help-improve-plone039s-api-documentation.html b/2007/10/17/help-improve-plone039s-api-documentation.html deleted file mode 100644 index a9f16a9..0000000 --- a/2007/10/17/help-improve-plone039s-api-documentation.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - Help improve Plone's API documentation - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Help improve Plone's API documentation

- -
- -
- -

`|image0|`_I'm travelling from Washington, DC, USA to Mountain View, -CA, USA June 26 - 29 to participate in the 2007 Plone Doccomm Sprint. -My main focus will be updating Plone's online API documentation -(available at http://api.plone.org). If you are interested in seeing -this done and would like to help, please consider making a donation to -help offset the cost of my airfare. In return, I will create and upload -API documentation for:

-
    -
  • Plone-2.5.3
  • -
  • Archetypes-1.4.4
  • -
  • CMF-1.6.4
  • -
-

and:

-
    -
  • Plone-3.0
  • -
  • Archetypes-1.5.0
  • -
  • CMF-2.1.0
  • -
-

I plan to use either epydoc or pudge. Suggestions welcome! For -more information please see:

-

http://plone.org/development/teams/documentation/documentation-tracker/37

-

and:

-

http://www.nabble.com/Turn-off-api.plone.org--tf3602743.html#a10064645

-

(I originally suggested we turn off api.plone.org but that was met with -a resounding "no!")

-

And without further ado, please consider making a donation! Any amount -is welcome; the goal is $600 USD. I will make an announcement once I've -reached it (so people don't give too much).

-

Thank You!!!

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/help-improve-plones-api-documentation.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/10/17/i-love-the-039slrn039-news-reader.html b/2007/10/17/i-love-the-039slrn039-news-reader.html deleted file mode 100644 index e32f3bf..0000000 --- a/2007/10/17/i-love-the-039slrn039-news-reader.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - I love the 'slrn' news reader. - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- I love the 'slrn' news reader.

- -
- -
- -

`|image0|`_I've been meaning to write this blog entry about *slrn* -ever since I started using it some time last year. Finally, here it is. -But this is not the blog entry I had originally intended to write. There -were some grandiose ideas about where I first heard of it; the blog -entry that inspired me to try it; how I was frustrated with the -alternatives; none of these are present here in any detail. That is -because I'm frustrated with the length of time it takes to write a -"quality" blog entry, when all I want to do is get the information out. -(But that is a separate blog entry :-))

-

To that end, here are a few things I'd like you to know about -*slrn*:

-
    -
  1. It rocks, for those that enjoy terminal applications as I do (e.g. -mutt, w3m, etc.) And by "rocks" I mean, it allows you to do in a -terminal what most people do in a graphical application. Further, it -allows you to do it the way you want (for the most part) and by that -I mean, it allows you to bind keys to actions.
  2. -
  3. It's a bit confusing to get started, that is what I'd like to help -with here. There is a default config file that you'll want to copy -to ~/.slrnrc, and
  4. -
  5. there are some additional configuration parameters I use that were -hard to track down. Those are:
  6. -
-
-set confirm_actions 14visible_headers "From:,Subject:,Newsgroups:,Followup-To:,Reply-To:,Date:"set query_read_group_cutoff 0set uncollapse_threads 1set netiquette_warnings 0
-
-

Most of these are self-explanatory, but if you are looking at "set -confirm_actions 14" and thinking "wtf?" you are not alone :-) I'll -leave it as an exercise to the reader to explore. -See:http://slrn.sourceforge.net/manual/slrn-manual.html for more -information. I hope this post helps someone get started -using*slrn!*

-

Next, in Part II, I will cover **slrnpull*; the program I use -(distributed with slrn) to download news. I never "read it live" and I -will explain why ;-)*

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/i-love-the-slrn-news-reader.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/10/17/is-this-thing-on.html b/2007/10/17/is-this-thing-on.html deleted file mode 100644 index baa8014..0000000 --- a/2007/10/17/is-this-thing-on.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - Is this thing on? - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Is this thing on?

- -
- -
- -

`|image0|`_... because it is showing up on planet! Sorry about the -duplicates. I have recreated my blog using Just Plone ™ (and I didn't -realize syndication was turned on already ;-)) In any event, here it is!

-

And while I have your attention, I've decided that I am joining -Tomster and others in pledging allegiance to the Plone by joining the -10% Manifesto as proposed by Geir Bækholt at Jarn.

-

I will schedule my Plone days at the beginning of each month starting -this month (October 2007) and announce them here.

-

First announcment coming soon.

-

``_

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/is-this-thing-on.rst, line 21); backlink

-Inline literal start-string without end-string.
- -
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/is-this-thing-on.rst, line 28)

-malformed hyperlink target.
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/is-this-thing-on.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/10/18/my-plone-days-october-2007.html b/2007/10/18/my-plone-days-october-2007.html deleted file mode 100644 index 0d72569..0000000 --- a/2007/10/18/my-plone-days-october-2007.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - My Plone Days (October 2007) - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- My Plone Days (October 2007)

- -
- -
- -

My focus will be PloneSoftwareCenter (PSC). That's right! You heard -it here first. After a little prodding on IRC from Martin Aspeli, Steve -McMahon, and Geir Bækholt I am declaring myself the "owner" of PSC -(read: responsible for releases). I'll spend my first two days (16 hours -next Tuesday and Thursday, 9-5 EDT) working on PSC and getting it -ready to ship (with Plone 3 compatibility).

-

For more information about the TPPM (10% Plone Manifesto) please see: -http://www.jarn.com/blog/the-10-plone-manifesto/

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/10/28/repoze-quotmeetupsquot.html b/2007/10/28/repoze-quotmeetupsquot.html deleted file mode 100644 index 702dd46..0000000 --- a/2007/10/28/repoze-quotmeetupsquot.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - Repoze "meetups" - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Repoze "meetups"

- -
- -
- -

`|image0|`_As Paul Everitt recently mentioned, the dudes are -back! Three (self-described,ex-Zope Corp) graybeards doing what they -love to do best! Using Zope. But this is not your father's Zope -(assuming your dad used Zope in the early 2000s) this is Repoze, which -integrates Zope technologies with WSGI and reusable Python middleware. -One of the dudes will be delivering the first of a two part -presentation on Repoze tonight in Washington, DC, USA. Next month, -he'll be joined by the other dude and possibly Paul Everitt himself. -Please help spread the word about this event by pointing people -towardshttp://zpugdc.org/meetings/mtg57. Or, if you prefer "Web -2.0":

-

Click here to check out The Washington DC Python Meetup Group!

-

Lastly, we welcome anyone in the Washington, DC, USA area to join us.

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/repoze-meetups.rst, line 10); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/11/20/usergroup-a-palooza.html b/2007/11/20/usergroup-a-palooza.html deleted file mode 100644 index d422f38..0000000 --- a/2007/11/20/usergroup-a-palooza.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - Usergroup-a-palooza - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Usergroup-a-palooza

- -
- -
- -

`|image0|`_Today at the behest of Tres Seaver and ZUG-SIG , I -updated http://www.zope.org/Resources/UserGroups. Most of the -information came fromChris Calloway, I just converted it to -structured text. Now it's better than the old one and should be -easier for "humans" to maintain. As Chris would say, "Yay us." What I -continue to find amazing is:

- -

I don't really have a point, other than to say that -http://www.zope.org/Resources/UserGroups looks a lot like -http://wiki.python.org/moin/LocalUserGroups and -http://plone.org/support/local-user-groups, and to me that is A Good -Thing ™. It suggests that:

-
    -
  • We are all fighting the same battle, i.e. we all like using Python to -solve the world's problems.
  • -
  • We really have entered into the fourth age of Zope, i.e. Zope is -becoming part of the Python vernacular again, and not in a bad way.
  • -
  • There is still more work to be done, e.g. Chris Calloway once told me -he didn't believe in using a "Super Robot Chicken" (Web 2.0 -euphemism?) to unite all of the user groups under one umbrella, but I -am still holding my breath!
  • -
-

See you at the next Python/Zope/Plone/Grok/Repoze meeting! ;-)

-

-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/usergroup-a-palooza.rst, line 46); backlink

-Duplicate explicit target name: "come and gone".
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/usergroup-a-palooza.rst, line 6); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/usergroup-a-palooza.rst, line 13); backlink

-Duplicate target name, cannot be used as a unique reference: "come and gone".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/usergroup-a-palooza.rst, line 14); backlink

-Duplicate target name, cannot be used as a unique reference: "come and gone".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2007/11/28/zcbuildout-recipe-tip-hexagonitrecipedownload-ftw-for-the-win.html b/2007/11/28/zcbuildout-recipe-tip-hexagonitrecipedownload-ftw-for-the-win.html deleted file mode 100644 index 49a6df4..0000000 --- a/2007/11/28/zcbuildout-recipe-tip-hexagonitrecipedownload-ftw-for-the-win.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - zc.buildout recipe tip: hexagonit.recipe.download FTW! (For the win) - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- zc.buildout recipe tip: hexagonit.recipe.download FTW! (For the win)

- -
- -
- -

Sometimes an "old style" product is distributed as foo.tar.gz and -extracts to foo/, but the product is actually called Bar! This can be a -problem when using the plone.recipe.productdistros recipe because -when 'Bar' is extracted to parts/productdistros/foo, it will not work.

-

Fortunately, there is hexagonit.recipe.download, which allows you to -specify a destination. For example, ZNagios (an add-on product that -integrates Zope with Nagios) is available as a tarball here:

- -

If we use productdistros, we end up with ZNagios installed in -parts/productdistros/trunk. No good. But if we use -hexagonit.recipe.download we can control the destination. e.g.

-
-[buildout]
-parts =
-    ...
-    znagios[znagios]
-recipe = hexagonit.recipe.download
-url = http://svn.gocept.com/viewcvs/ZNagios/trunk.tar.gz?view=tar
-destination = products/ZNagios
-strip-top-level-dir = True
-
-

After running buildout, you should have the following in your buildout -products/ directory:

-
-/products/ZNagios
-/products/ZNagios/COPYRIGHT.txt
-/products/ZNagios/LICENSE.txt
-/products/ZNagios/README.txt
-/products/ZNagios/__init__.py
-/products/ZNagios/check_zope.py
-/products/ZNagios/munin_client.py
-/products/ZNagios/version.txt
-/products/ZNagios/zeo_munin.py
-/products/ZNagios/zope.cfg
-
-

As always, there are better ways to do this but getting it done is -nice too. Comments welcome! :-)

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/01/01/spaces-spaces-spaces-fix-for-spacesapp-in-mac-os-x-leopard.html b/2008/01/01/spaces-spaces-spaces-fix-for-spacesapp-in-mac-os-x-leopard.html deleted file mode 100644 index 380fda9..0000000 --- a/2008/01/01/spaces-spaces-spaces-fix-for-spacesapp-in-mac-os-x-leopard.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - Spaces.. Spaces.. Spaces.. fix for Spaces.app in Mac OS X Leopard - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Spaces.. Spaces.. Spaces.. fix for Spaces.app in Mac OS X Leopard

- -
- -
- -

`|image0|`_Like many Plone developers, I primarily develop on Mac -OS X. Also, like many Plone developers I salivate over, and immediately -install any updates to Mac OS X that are released, including Leopard. -Overall, I have been very happy with Leopard, but there is one thing -that drives me (and plenty of other people) nuts: the automatic window -switching functionality in Spaces. For the unfamiliar, a common feature -of UNIX desktops is the ability to easily switch between many different -desktops containing many different windows. This feature is commonly -referred to as a "desktop pager" or "virtual desktop", but Apple calls -it Spaces.

-

Spaces is a great application, they nearly got it right on the first -try. I suspect many of the questionable features were included for the -sake of soliciting new would-be power users, and/or to maintain -user-friendliness, but some features conflict directly with the ability -to "power use". For example, if I'm running a Terminal in Space 1, and I -switch to (an empty) Space 2 to open another Terminal, opening the new -Terminal (e.g. via Quicksilver, or Spotlight) automatically returns me -to Space 1. I now have two terminals in Space 1, which is not what I -want. I then have to drag this Terminal to Space 2 which is easy, but -annoying. A much better approach would be to allow users to force-open a -new application window in the current Space.

-

Spaces.. Spaces.. Spaces.. *almost* makes this happen (via some -Dock + code-injection magic). With Spaces.. Spaces.. Spaces.., I can now -switch to a new Space and open a new Terminal window, without being -automatically taken to another Space running another Terminal. The only -catch is the Terminal application has to be "in focus", else the old -"wrong" behavior still applies. In other words, switch to a new window, -then click on the Terminal icon in the Dock, then open a new Terminal -window. Not a bad work-around for my purposes, this allows me to easily -open as many Terminals on as many Spaces as I see fit without being -"redirected" (read: interrupted).

-

There are a few downsides: 1. You have to run Spaces.. Spaces.. Spaces.. -as root, not convenient for starting on boot (unless applications can be -run as services somehow? Or something? :-) 2. I'd like the ability to -force-launch a new window for any currently running application in the -current Space without having to bring that application into focus. -Spaces.. Spaces.. Spaces.. does not currently provide this -functionality. 3. It is for Intel-based Macs only.

-

I *really* hope Apple addresses this issue in a future release, but in -the meantime many thanks to the Spaces.. Spaces.. Spaces.. developer!!! -If you are similarly bothered by this behavior in Spaces, I recommend -you give Spaces.. Spaces.. Spaces.. a try.

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/spaces-spaces-spaces-fix-for-spaces-app-in-mac-os-x-leopard.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/03/06/spaces-fixed.html b/2008/03/06/spaces-fixed.html deleted file mode 100644 index c159f99..0000000 --- a/2008/03/06/spaces-fixed.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - Spaces fixed! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Spaces fixed!

- -
- -
- -

For those of you using Spaces in Mac OS X, I'd like to follow up my -previous post with some exciting news regarding Spaces in Mac OS X -10.5.2. It's "fixed"! Thousands of former FVWM users can now rejoice as -they enjoy sane desktop pager functionality. As you know, I've been -tracking the development of the "Spaces... Spaces... Spaces..." hack -(read: waiting for it to support 10.5.2) and I just noticed that the -issue has actually been resolved by Apple, yay! See this post on -macosxhints.com for more information: -http://www.macosxhints.com/article.php?story=2008021122525348

-

The short of it is, to alter the annoying spaces-follows-application -behavior, do this:

-
-% defaults write com.apple.dock workspaces-auto-swoosh -bool NO
-
-
-% sudo killall Dock
-
-

Now Plonistas everywhere (including Tomster) can give Spaces another -try!

-

And now, with my sincerest thanks to Apple, I leave you to go work in -another Space...

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/03/06/unix-tips-for-the-elderly.html b/2008/03/06/unix-tips-for-the-elderly.html deleted file mode 100644 index 30a4415..0000000 --- a/2008/03/06/unix-tips-for-the-elderly.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - UNIX Tips for the Elderly - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- UNIX Tips for the Elderly

- -
- -
- -

`|image0|`_With apologies to the Plone community for the off-topic -post, I'd like to mention this so I won't forget it again (and, in case -I do some nice Plonista somewhere wil remind me ;-).

-

I often want to do *something* to a bunch of files on the -filesystem, e.g.

-
-find Music/ | xargs -J % echo 'Do something to ' %
-
-

The problem is that sometimes the filenames have spaces in them which -will cause:

-
-$ find Music/ | xargs -J % 'Do something to ' %
-xargs: unterminated quote
-
-

Useless. The best fix I've managed to come up with (which I couldn't -recall, hence the blog post)  is to replace the beginning and end of the -line with quotes to make the shell happy, e.g.

-
-$ find Music/ | sed -e 's/^/"/' -e 's/$/"/'
-"Music//iTunes/iTunes Music/Yael Naïm/Yael Naïm/03 New Soul.m4a"
-
-

So I can do things like:

-
-$ find Music/ | sed 's/^/"/' | sed 's/$/"/' | xargs -J % ls -d %
-Music//iTunes/iTunes Music/Yael Naïm/Yael Naïm/03 New Soul.m4a
-
-

or

-
-$ find Music/ | sed 's/^/"/' | sed 's/$/"/' | xargs -J % file %
-Music//iTunes/iTunes Music/Yael Naïm/Yael Naïm/03 New Soul.m4a:
-  ISO Media, MPEG v4 system, iTunes AAC-LC
-
-

... and afterwards go back to whatever I was supposed to be working on -in the first place. There, I feel better now! Thanks for listening,

-

:-)

-

P.S. If anyone knows a better way to do this, please add it in the -comments.

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/unix-tips-for-the-elderly.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/03/17/take-back-the-tap.html b/2008/03/17/take-back-the-tap.html deleted file mode 100644 index 3ccd600..0000000 --- a/2008/03/17/take-back-the-tap.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - Take Back The Tap! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Take Back The Tap!

- -
- -
- -

`|image0|`_ACLARK.NET, LLC is proud to announce: -http://www.takebackthetap.org!

-

This site is noteworthy because:

-

Thanks to:

-
    -
  • The Plone Community (Limi, Alan, joelburton, optilude, wiggy, SteveM, -everyone!)
  • -
  • Jazkarta (Nate, Matt Ludwig, Rocky, malthe, regebro, et al)
  • -
  • Food and Water Watch (Jen, Katie, Brendan, Jon, et al)
  • -
  • Amy Clark (amy@aclark.net)
  • -
  • Matt Bowen (MattBowen)
  • -
  • Danny Greenfeld (pyDanny)
  • -
  • Veda Williams (vedawms)
  • -
  • Everyone else (I may have missed)!
  • -
-

Feedback welcome!

-

-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/take-back-the-tap.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/04/10/nasa-starts-new-science-web-site-powered-by-plone.html b/2008/04/10/nasa-starts-new-science-web-site-powered-by-plone.html deleted file mode 100644 index fbcce4b..0000000 --- a/2008/04/10/nasa-starts-new-science-web-site-powered-by-plone.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - NASA starts new science Web site, powered by Plone - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- NASA starts new science Web site, powered by Plone

- -
- -
- -

For those who haven't heard about it yet: last night's (5:30PM EDT) -launch of http://nasascience.nasa.gov marks the launch of yet -another high-profile Plone site! Congratulations to NASA, InDyne, and -the developers: Reed O'Brien, Daniel Greenfeld, and Chris Shenton! You -guys rock! You can read more about it here: -http://www.upi.com/NewsTrack/Science/2008/04/10/nasa_starts_new_science_web_site/1059/.

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/04/12/nasa-story-slashdotted.html b/2008/04/12/nasa-story-slashdotted.html deleted file mode 100644 index 7c50cca..0000000 --- a/2008/04/12/nasa-story-slashdotted.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - NASA story slashdotted! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- NASA story slashdotted!

- -
- -
- -

Hi all,

-

I just noticed that my submission to slashdot was posted (sorry, NASA -;-). Please use your mod points and/or add comments (or do whatever -slashdot people do) to promote Plone. I've sent an email asking that the -link to plone.org be restored (it was removed by the editor, probably -because I made it too big :-).

-

http://science.slashdot.org/science/08/04/12/0010230.shtml

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/04/18/help-me-upgrade-ploneorg.html b/2008/04/18/help-me-upgrade-ploneorg.html deleted file mode 100644 index 002ab33..0000000 --- a/2008/04/18/help-me-upgrade-ploneorg.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - Help me upgrade plone.org - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Help me upgrade plone.org

- -
- -
- -

You may be wondering why plone.org is not running the latest version of -Plone. Well wonder no more! By the end of this month, it will be. I have -been working onthe various bits and pieces needed to upgrade for -months, including:

-
    -
  • Testing the "live" Data.fs against the latest release of Plone.
  • -
  • Converting old-style Zope 2 Products to eggs.
  • -
  • Rallying the troops to contribute as needed.
  • -
  • Becoming a plone.org admin so I can drive the process myself.
  • -
  • and much, much more!
  • -
-

And I can promise you that tremendous progress will be made at the Paris -sprint next week, including:

-
    -
  • Finalization of the dist-utils enabled PloneSoftwareCenter that will -be used.
  • -
  • Adding blob support to PloneSoftwareCenter (Witsch, can you help? -:-))
  • -
  • Migrating all PSCFile objects from ExternalStorage to blob.
  • -
-

So please, if you would like to see an upgraded plone.org as much as I -would, please consider making a generous donation to my travel fund. I'd -like to raise around $1000 to get reimbursed for my airfare only; I will -be sleeping on a donated couch. The suggested donation amount is -$50-100, but any amount is welcome. Thank you all very much!!! And -thanks to everyone that has helped with the upgrade so far including but -not limited to: Limi, Wiggy, SteveM, Tarek, Maurits, Newbery, Jens, -Witsch, MattBowen!

-

Lastly, I promise to:

-
    -
  • Cut the fundraiser off as soon as I reach my goal, and
  • -
  • Report back with results by the end of the month.
  • -
-

Now without further ado, please donate-away! :-)

-

- -
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/05/01/ploneorg-upgrade-update.html b/2008/05/01/ploneorg-upgrade-update.html deleted file mode 100644 index 44385b5..0000000 --- a/2008/05/01/ploneorg-upgrade-update.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - Plone.org upgrade update! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone.org upgrade update!

- -
- -
- -

Thanks again to everyone who contributed to my travel fund. I really -appreciate it and being able to work closely with Tarek Ziadé and -Matthew Wilkes on PloneSoftwareCenter and PloneOrg was amazing, -productive, and fun. Of course being in the company of all the sprinters -was a pleasure, and thank you Christophe for the hospitality! The sprint -was "successful" in that we got a lot done. See:

- -

for the details.  In short,

-
    -
  • Matthew and Tarek worked on getting PloneSoftwareCenter ready to host -eggs.
  • -
  • I worked on creating and configuring the new site instance.
  • -
  • Steve McMahon and I egg-i-fied the remaining product dependencies.
  • -
-

Unfortunately, there is still a lot more to do:

-
    -
  • We need help with ExternalStorage. The problem is too many objects -in the ZODB with too many different filesystem paths. In the worst -case scenario I can script a fix to set a new filesystem path for the -existing objects, but I'm hoping to avoid this. Ideally we'll support -a pluggable storage feature that will allow end users to choose -between blob, ExternalStorage, and FileSystemStorage, etc.
  • -
  • We need to finish the new PloneSoftwareCenter implementation. See -http://dev.plone.org/collective/log/collective.psc.mirroring for -more information.
  • -
  • We need to test the new PloneSoftwareCenter implementation. Lots of -people with lots of buildouts will hopefully not mean lots of -problems for the server.
  • -
  • I need to finish the nginx and varnish setup (package as .debs).
  • -
-

In the meantime, I've made the **LARGELY NOT FUNCTIONAL** new -instance available at http://new.plone.org for anyone that is -interested. Please be aware of the following:

-
    -
  • Be kind. This is *just* Zope. No apache, varnish, nginx. etc. Just -Zope.
  • -
  • You cannot login. LDAP has not been hooked up yet.
  • -
  • This is not the *real* content. We will cut off plone.org and drop -in the latest Data.fs (and go through all the TTW migration steps -again) when we are ready to launch.
  • -
-

I'm targeting the end of May to launch the *real* new site. Sorry for -the delay (I promised end of April!) Needless to say, I will be actively -working on finishing everything between now and then.

-

We will be remote sprinting in #psc on irc.freenode.net this Sunday @ -2:00PM EDT if you would like to join us!

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/05/15/supervisor-rocks.html b/2008/05/15/supervisor-rocks.html deleted file mode 100644 index c63e694..0000000 --- a/2008/05/15/supervisor-rocks.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - Supervisor rocks! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Supervisor rocks!

- -
- -
- -

`|image0|`_(This is essentially a reiteration of Carlos' previous -blog entry. :-))

-

It just occurred to me that we should probably be using Supervisor -all over the place in our buildouts. Here's why:

-
    -
  • Starting and stopping Zope and ZEO separately is no fun.
  • -
  • Using Supervisor is easy and fun.
  • -
-

Here's how to do it:

-
    -
  • Add a part to your buildout.cfg file (this is the fun part):
  • -
-
-parts =...supervisor...[supervisor]recipe = zc.recipe.eggegg = supervisor
-
-
    -
  • Create a configuration file (this is not as fun; we need a recipe for -this!) in your buildout called etc/supervisord.conf and add the -following (cargo-cult style):
  • -
-
-[inet_http_server]port=127.0.0.1:9999#username=admin#password=admin[supervisord]logfile=%(here)s/../var/log/supervisord.loglogfile_maxbytes=50MBlogfile_backups=10loglevel=infopidfile=%(here)s/../var/supervisord.pidnodaemon=false[rpcinterface:supervisor]supervisor.rpcinterface_factory =     supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]serverurl=http://127.0.0.1:9999[program:zeo]command = %(here)s/../parts/zeo/bin/runzeopriority = 10[program:zope]command = %(here)s/../parts/instance/bin/runzopepriority = 20redirect_stderr = true
-
-

(Uncomment the admin lines if you want to password protect your -supervisor.)

-

That's it! Now you can run buildout as normal:

-
-bin/buildout
-
-

and then start  supervisor:

-
-bin/supervisord
-
-

and then use supervisorctl to start and stop your Zope and ZEO at the -same time (for fun and profit):

-
-bin/supervisorctl start allbin/supervisorctl stop all
-
-

You even get a nice web interface for free:

-

`|Supervisor rocks!|`_

-

How cool is that? Incidentally, one thing I have always found confusing -is how to stop supervisord:

-
-bin/supervisorctl shutdown
-
-

So as you can see I'm happy about this, but what would make me even -happier is:

-
    -
  • A buildout recipe that generates a supervisord.conf file 'on the fly' -(i.e. when buildout runs).
  • -
  • A paster template that includes Supervisor and ZEO (perhaps a cross -between plone_hosting and plone3_buildout?).
  • -
  • A Unified Installer that includes Supervisor.
  • -
  • A port of Supervisor to Windows (/me ducks).
  • -
-

Thoughts?

-

Thanks Chris McDonough of Agendaless Consulting and Mike Naberezny of -Maintainable Software, plus contributors for creating/maintaining -Supervisor and making my job easier :-)

-

(And thanks Chris and Carlos for the example configuration files `here`_ -and `here`_.)

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/supervisor-rocks.rst, line 111); backlink

-Duplicate explicit target name: "here".
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/supervisor-rocks.rst, line 6); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/supervisor-rocks.rst, line 67); backlink

-Unknown target name: "|supervisor rocks!|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/supervisor-rocks.rst, line 100); backlink

-Duplicate target name, cannot be used as a unique reference: "here".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/supervisor-rocks.rst, line 100); backlink

-Duplicate target name, cannot be used as a unique reference: "here".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/05/22/ploneorg-upgrade-remote-sprint.html b/2008/05/22/ploneorg-upgrade-remote-sprint.html deleted file mode 100644 index 83ac893..0000000 --- a/2008/05/22/ploneorg-upgrade-remote-sprint.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - Plone.org upgrade remote sprint! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone.org upgrade remote sprint!

- -
- -
- -

Join us this Saturday in irc://irc.freenode.net#PxC (channel reserved -for discussion of PloneHelpCenter/PloneSoftwareCenter) at 4:00AM EDT to -work on Plone.org upgrade issues, including:

-
    -
  • Deploying the latest PloneSoftwareCenter code to new.plone.org and -testing collective.dist against new.plone.org/products.
  • -
  • Develop and test collective.psc.mirroring. This is the -PloneSoftwareCenter module responsible for copying uploads to -dist.plone.org.
  • -
  • Develop and test collective.psc.blobstorage and -collective.psc.externalstorage and collective.psc.filestorage -(which does not exist yet). These are the modules responsible for -implementing pluggable storage in PloneSoftwareCenter.
  • -
-

Hope to "see" you there. We have lots of jobs for lots of people if you -are interested in helping.

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/06/02/placeful-theming.html b/2008/06/02/placeful-theming.html deleted file mode 100644 index a3fa09f..0000000 --- a/2008/06/02/placeful-theming.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - Placeful Theming - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Placeful Theming

- -
- -
- -

I had to do a bit of placeful theming lately and I thought I would share -the techniques I used (thanks davisagli, jonbaldievieso, vedawms). Let's -say you have a Plone 3 site, and for some location /foo/bar/baz, you -want 'baz' and everything below it to look different. I made this change -through the web because I was in a hurry, but the same can be done in -filesystem code.

-

The steps are:

-
-

1. Override getSectionFromURL (navigate to portal_skins/plone_scripts/getSectionFromURL and customize)

-

Normally, this bit of code returns the section id for whatever section -you are in. So if your site has three top level folders A, B, C, -getSectionURL returns section-A when you are inside of A, section-B when -you are inside of B, and so on. However, when you are inside of a -sub-section, e.g. /A/news-items-folder, it *still* returns the section -id, in this case section-A. The override makes getSectionURL return the -sub-section, e.g. /A/news-items-folder, or /foo/bar/baz.

-
-# Courtesy of jonb at onenw.org# getSectionFromURLcontentPath = context.portal_url.getRelativeContentPath(context)if not contentPath:    return Noneelse:    s = ''    sectionId = ''    for pathItem in contentPath:        sectionId += pathItem + '-'        s += 'section-' + sectionId[:-1] + ' '    return s[:-1]
-
-
-
-

2. Override plone.logo (navigate to /portal_view_customizations/zope.interface.interface-plone.logo and customize)

-

For some reason (good or not, I don't know) Plone includes an image tag -in the html code it uses to generate the Plone logo. This means that it -will always output something like:

-
-img src="logo.jpg"
-
-

which is a problem if you want to placefully replace the logo because -there is no easy way to do it (perhaps you could use some trick to -return a different image file with the same file name).

-

Plone ships with:

-
-<a metal:define-macro="portal_logo"   id="portal-logo"   accesskey="1"   tal:attributes="href view/navigation_root_url"   i18n:domain="plone">    <img src="logo.jpg" alt=""         tal:replace="structure view/logo_tag" /></a>
-
-

Replace that with:

-
-<div metal:define-macro="portal_logo" id="portal-logo">    <a accesskey="1"       tal:attributes="href view/navigation_root_url"       i18n:domain="plone"></a></div>
-
-
-
-

3. Add CSS (Navigate to /portal_skins/plone_styles/ploneCustom.css and customize)

-

Next, add in some CSS to make use of the previous two changes:

-
-body.section-foo-bar-baz {    background-image: url(gradient.png);}.section-foo-bar-baz #portal-globalnav li a {    border: 0px;    background: #0066CC;    color: white;    font-size: 110%;    font-face: bold;}.section-foo-bar-baz #portal-globalnav {    background: #0066CC;    padding: 0.25em;}.section-foo-bar-baz #portal-breadcrumbs,.section-foo-bar-baz #portal-personaltools {    background: white;}.section-foo-bar-baz #portal-top {     background: white;}.section-foo-bar-baz #portal-logo {     margin: 1em;    background-image: url(ama_logo.gif);    background-repeat: no-repeat;}.section-foo-bar-baz #visual-portal-wrapper {     background: white;    margin: auto;    width: 883px;    position: relative;}.section-foo-bar-baz body {     background-image: url(gradient.png);    background-repeat: repeat;}#portal-logo {     margin: 1em;    background-image: url(logo.jpg);    background-repeat: no-repeat;}#portal-logo a {     display: block;    width: 650px;    height: 80px;}
-
-

I hope this helps someone get started with placeful theming.

-

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/07/01/plone-conference-2008-please-register-for-an-early-bird-admission-today.html b/2008/07/01/plone-conference-2008-please-register-for-an-early-bird-admission-today.html deleted file mode 100644 index ca5d567..0000000 --- a/2008/07/01/plone-conference-2008-please-register-for-an-early-bird-admission-today.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - Plone Conference 2008: Please register for an early bird admission today. - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone Conference 2008: Please register for an early bird admission today.

- -
- -
- -

http://ploneconf2008.eventbrite.com/

-

`|image0|`_Organizing a Plone Conference is a lot like planning to -invite 300-400 of your closest friends over for a 7-day long party, or, -at least, it feels that way to me. I'm really looking forward to seeing -everyone in DC in just a few short months, and I'm very excited about -all the possibilities. From the pre-conference training, to the post -conference sprint, to all the good food/drink/people/places to enjoy in -between. This promises to be one of the biggest and best Plone -Conferences ever.

-

To that end, I'd like to invite everyone to participate in the early -bird registration now open at: `http://ploneconf2008.eventbrite.com`_ -and I encourage everyone to register right now. We need the support of -everyone in the Plone community to make this conference a success.

-

From spreading the word, to purchasing tickets, to sponsoring the -conference itself, if you are reading this, you can help. Securing early -bird registrations is a key part of the planning process; it allows us -to move forward to the next phase.

-

And finally, a huge thanks to everyone for your support. I continue to -be amazed by the spirit of the community, and I really appreciate the -opportunity to work on things like Plone Conference 2008 and -upgrading plone.org (which I will have more information about soon, but -until then, please poke around on: http://new.plone.org/ or check out -Tarek's most recent blog entry or Jens' most recent mail to the -website list: -http://www.nabble.com/plone.org-buildout-refactored-to18266816s6747.html. -We have scheduled July 19th as the tentative "go live" date.)

-

So without further ado, please head over to -`http://ploneconf2008.eventbrite.com`_ to secure your place at the -conference, and help the planning team move forward. See you all in DC!

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/plone-conference-2008-please-register-for-an-early-bird-admission-today.rst, line 53); backlink

-Duplicate explicit target name: "http://ploneconf2008.eventbrite.com".
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-conference-2008-please-register-for-an-early-bird-admission-today.rst, line 8); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-conference-2008-please-register-for-an-early-bird-admission-today.rst, line 21); backlink

-Duplicate target name, cannot be used as a unique reference: "http://ploneconf2008.eventbrite.com".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-conference-2008-please-register-for-an-early-bird-admission-today.rst, line 41); backlink

-Duplicate target name, cannot be used as a unique reference: "http://ploneconf2008.eventbrite.com".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/08/10/re-collectiverecipesupervisor-thank-you.html b/2008/08/10/re-collectiverecipesupervisor-thank-you.html deleted file mode 100644 index 61035f2..0000000 --- a/2008/08/10/re-collectiverecipesupervisor-thank-you.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - RE: collective.recipe.supervisor: Thank you! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- RE: collective.recipe.supervisor: Thank you!

- -
- -
- -

Since I last wrote about supervisor it's become even more easy and -more fun to add it to your buildout with -collective.recipe.supervisor. I really appreciate what this -recipe allows me to do (because it makes my job/life so much easier) and -I want to publicly thank Mustapha Benali, Author & Hanno Schlichting, -Contributor.

-

Now, it is as simple as editing your buildout.cfg like so:

-

    -
  1. Add a part for supervisor:
  2. -
-
-[buildout]
-    parts =
-        ...
-        supervisor
-
-
    -
  1. Create the part:
  2. -
-
-[supervisor]
-recipe = collective.recipe.supervisor
-programs =
-    10 zeo ${zeo:location}/bin/runzeo ${zeo:location}
-    20 instance ${instance:location}/bin/runzope ${instance:location} true
-
-
    -
  1. Run buildout:
  2. -
-
-...
-Installing supervisor.
-Getting distribution for 'supervisor'.
-Got supervisor 3.0a6.
-Getting distribution for 'elementtree>=1.2.6,<1.2.7'.
-zip_safe flag not set; analyzing archive contents...
-Got elementtree 1.2.6-20050316.
-Getting distribution for 'meld3>=0.6.4'.
-zip_safe flag not set; analyzing archive contents...
-Got meld3 0.6.5.
-Getting distribution for 'medusa>=0.5.4'.
-zip_safe flag not set; analyzing archive contents...
-Got medusa 0.5.4.
-Generated script '/Users/aclark/Developer/supervisor-recipe-test/bin/supervisord'.
-Generated script '/Users/aclark/Developer/supervisor-recipe-test/bin/memmon'.
-Generated script '/Users/aclark/Developer/supervisor-recipe-test/bin/supervisorctl'.
-
-
    -
  1. Start supervisor in the foreground:
  2. -
-
-$ bin/supervisord -e debug -n
-2008-08-27 06:40:34,805 INFO Increased RLIMIT_NOFILE limit to 1024
-2008-08-27 06:40:35,036 INFO RPC interface 'supervisor' initialized
-2008-08-27 06:40:35,036 WARN cElementTree not installed,
-    using slower XML parser for XML-RPC
-2008-08-27 06:40:35,036 CRIT Server 'inet_http_server' running without
-    any HTTP authentication checking
-2008-08-27 06:40:35,037 INFO supervisord started with pid 99684
-2008-08-27 06:40:36,041 INFO spawned: 'zeo' with pid 99686
-2008-08-27 06:40:36,049 INFO spawned: 'instance' with pid 99687
-2008-08-27 06:40:37,051 INFO success: zeo entered RUNNING state,
-    process has stayed up for > than 1 seconds (startsecs)
-2008-08-27 06:40:37,051 INFO success: instance entered RUNNING state,
-    process has stayed up for > than 1 seconds (startsecs)
-2008-08-27 06:40:41,574 DEBG 'instance' stdout output:
-2008-08-27 06:40:41 INFO ZServer HTTP server started at Wed Aug 27 06:40:41 2008
-    Hostname: localhost
-    Port: 8080...2008-08-27 06:41:28,396 DEBG 'instance' stdout output:
-2008-08-27 06:41:28 INFO Application New disk product detected,
-    determining if we need to fix up any ZClasses.2008-08-27 06:41:28,452 DEBG 'instance' stdout output:
-2008-08-27 06:41:28 INFO Zope Ready to handle requests
-
-
    -
  1. When everything looks ok, start supervisor 'for real':
  2. -
-
-bin/supervisord
-
-
    -
  1. Once running, you can:
  2. -
-
    -
  • Check status:
  • -
-
-$ supervisorctl status
-instance                         RUNNING    pid 99889, uptime 0:00:04
-zeo                              RUNNING    pid 99888, uptime 0:00:04
-
-
    -
  • Start/stop Zope/ZEO in various ways:
  • -
-
-$ bin/supervisorctl stop instance
-instance: stopped$ bin/supervisorctl stop zeo
-zeo: stopped$ bin/supervisorctl start zeo
-zeo: started$ bin/supervisorctl start instance
-instance: started$ bin/supervisorctl stop all
-zeo: stopped
-instance: stopped$ bin/supervisorctl start  all
-zeo: startedinstance: started
-
-

and generally go about your business, unfettered.

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/09/02/repozebfg-tonight-ftw.html b/2008/09/02/repozebfg-tonight-ftw.html deleted file mode 100644 index aebfe0b..0000000 --- a/2008/09/02/repozebfg-tonight-ftw.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - repoze.bfg tonight FTW! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- repoze.bfg tonight FTW!

- -
- -
- -

Tonight ex-Zope Corporation luminary Chris McDonough unveils his -BFG (Big ****ing Gun) which:

-

(excerpt from http://static.repoze.org/bfgdocs/index.html)

-
    -
  • is aPython web application framework.
  • -
  • is inspired by Zope’s publisher, though it is less ambitious in -scope.
  • -
  • relies heavily on Zope libraries and WSGI.
  • -
-

Woo Hoo! My favorite thing about repoze.bfg is:

-

(excerpt from -http://static.repoze.org/bfgdocs/narr/introduction.html#why)

-
    -
  • Familiarity: As web developers, we’ve become accustomed to -working in very particular ways (primarily using Zope 2) over the -years.  This framework is a canonization of practices that “fit our -brains”.
  • -
-

We are also celebrating only (a little over) one month left until Plone -Conference 2008 at the Ronald Reagan Building in DC (and sprint at -Arlington Career Center in VA).

-

See you tonight!

-

http://zpugdc.org/meetings/mtg67

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/09/02/september-2008-is-the-month-of-ploneorg.html b/2008/09/02/september-2008-is-the-month-of-ploneorg.html deleted file mode 100644 index 463afd5..0000000 --- a/2008/09/02/september-2008-is-the-month-of-ploneorg.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - September 2008 is the month of Plone.org - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- September 2008 is the month of Plone.org

- -
- -
- -

Plone Conference 2008 is fast approaching and in order to avoid -embarrassment, disappointment, and a huge public outcry, I'd like to -kick off "September 2008: The Month Of Plone.org" (cue: daunting -music) so that we can finish upgrading plone.org to Plone 3 before the -conference begins. I have created an OpenPlans project to help -coordinate efforts: -http://www.openplans.org/projects/ploneorg-upgrade/project-home.

-

If you are interested in helping, please join the project.

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/11/13/productstodo-01.html b/2008/11/13/productstodo-01.html deleted file mode 100644 index 35a035e..0000000 --- a/2008/11/13/productstodo-01.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - Products.todo 0.1 - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Products.todo 0.1

- -
- -
- -

`|image0|`_I needed a project to jump start my return to Plone after -spending months organizing Plone Conference 2008, and I had the idea -that I wanted to, very quickly, see a product's development cycle -through from start to finish, including:

-
    -
  1. Generating boilerplate buildout and product code with paster.
  2. -
  3. Develop some simple functionality for Plone.
  4. -
  5. Releasing to pypi.
  6. -
-

Repeat steps 2 and 3 as needed or desired. That product is Products.todo -(http://pypi.python.org/pypi/Products.todo/)

-

I also wanted to:

-
    -
  • Include the buildout in the product so I could easily add buildbot (a -la Tarek).
  • -
  • Write some tests for this code so I could practice TDD.
  • -
  • Release this product to new.plone.org, so we can finish the plone.org -upgrade.
  • -
-

I'm off to a good start I think as, while it took me a couple days (more -than I expected), the product is now on pypi. (Thanks to -irc://irc.freenode.net#plone and the product-developers list for the -help!)

-

Next steps:

-
    -
  • Get some feedback on the code. While this is a simple product, it was -not as simple as I would have hoped to implement, and there are more -features I would like to add.
  • -
  • Edit my .pypirc and add new.plone.org and test a release.
  • -
  • Add buildbot.
  • -
  • Write some tests. I need some help here. How do you test a simple -product like this? I understand that if you test the ability to add -an item to a folder you are testing the framework not the product. So -maybe I need to focus on testing just the features I add...
  • -
  • Enjoy doing this in the future when plone.org supports pypi ;-)
  • -
-

Update (11/15/2008):

-
    -
  • New screenshot
  • -
  • 0.2 version on PyPI
  • -
  • Thanks for the comments everyone!
  • -
-

-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/products-todo-0-1.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/11/19/naked-plone-theme.html b/2008/11/19/naked-plone-theme.html deleted file mode 100644 index 0b29556..0000000 --- a/2008/11/19/naked-plone-theme.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - Naked Plone Theme - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Naked Plone Theme

- -
- -
- -

`|image0|`_I've needed this for quite some time, but I'm just getting -around to shipping it. In addition to making it easy to 'turn off' a lot -of default Plone css, js, etc., this product (discreetly) adds one of my -all time favorite tweaks, the 'Advanced Setup' site action. (Limi, -Martin, and Joel Burton will remember this one from 'back in the day' -;-) The action is disabled by default, but you can enable it by clicking -'visible' in portal_actions -> site actions. It simply adds a -'placeful' (string:manage_main) link to the ZMI, so you can access it -easily, wherever you happen to be on the site. (See screenshot.)

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/naked-plone-theme.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/12/02/zpugdc-meeting-tonight.html b/2008/12/02/zpugdc-meeting-tonight.html deleted file mode 100644 index 15d7bd2..0000000 --- a/2008/12/02/zpugdc-meeting-tonight.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - ZPUGDC Meeting Tonight - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- ZPUGDC Meeting Tonight

- -
- -
- -

`|image0|`_Reblog:

-

http://python-groups.blogspot.com/2008/12/zpugdc-dc-python-meetup-december.html

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/zpugdc-meeting-tonight.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2008/12/15/getting-excited-about-plone-as-eggs.html b/2008/12/15/getting-excited-about-plone-as-eggs.html deleted file mode 100644 index cadc58a..0000000 --- a/2008/12/15/getting-excited-about-plone-as-eggs.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - Getting excited about Plone as eggs - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Getting excited about Plone as eggs

- -
- -
- -

Updated for 4.x

-

I'm really excited about this, as it greatly simplifies the development -and deployment story for Plone. For example, you can now create a -Plone buildout.cfg file as follows:

-
-[buildout]
-extends =
-    http://dist.plone.org/release/4.0a1/versions.cfgversions = versions
-find-links = http://dist.plone.org/thirdparty/PILwoTk-1.1.6.4.tar.gz
-parts =
-    instance[instance]
-recipe = plone.recipe.zope2instance
-user = admin:admin
-eggs =
-    PILwoTk
-    Plone
-
-

For full instructions, see: -http://svn.aclark.net/svn/public/buildout/plone/trunk/README.txt

-

Thanks framework team and core developers for this impressive release!

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/01/23/help-esteele-go-to-baarn.html b/2009/01/23/help-esteele-go-to-baarn.html deleted file mode 100644 index 72ce99a..0000000 --- a/2009/01/23/help-esteele-go-to-baarn.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - Help esteele go to Baarn! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Help esteele go to Baarn!

- -
- -
- -

A few years back, I was invited to the Baarn UI Sprint 2007. This was -a huge turning point for me and Plone. Having just attended the annual -conference in Seattle, I was raring to contribute. And in getting -invited, I felt like a Catholic getting invited to the Vatican to hang -out with the Pope (well 1/2 the Pope at least, aka Limi ;-)). You -cannot beat the awesomeness of the Plone community and the fact that if -you give something to it, you will get it back ten-fold in:

-
    -
  • Knowledge and skills (You can acquire a ton of technical skill by -learning the Plone).
  • -
  • Kindness from strangers (People will help you do things, like attend -a development sprint in another country, amazing).
  • -
  • Employment for life (There is more Plone work than there are Plone -developers, and I don't see this changing anytime soon).
  • -
-

Which brings me to the subject at hand. One of our own, Eric Steele -(author of the amazing development tool Gloworm, and member of the -extremely Plone friendly web group called WebLion) needs your help! -Last I spoke with Eric he had reached 60% of his desired goal, so let's -help him get to the finish line (by Wednesday).

-

You can (and probably should, if you can afford it ;-) donate a little -something here: -http://www.theartofbeingstill.com/help-me-get-to-baarn

-

I can imagine only good things to come for Plone as a result of Eric -attending this event (in fact, Weblion is funding the trip, donations -are for food and incidentals if I recall correctly).

-

So please help! :-D

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/02/07/nirvana-old-age-interrupted.html b/2009/02/07/nirvana-old-age-interrupted.html deleted file mode 100644 index 5021ce0..0000000 --- a/2009/02/07/nirvana-old-age-interrupted.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - Nirvana Old Age Interrupted - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Nirvana Old Age Interrupted

- -
- -
- -

[youtube http://www.youtube.com/watch?v=ec200NlbTA4&w=420&h=315] This is -a cover of Nirvana's "Old Age" and is absolutely hilarious. Not because -of my performance (although that is funny too) but because, while I -thought I had permission from my wife to make noise, you will see at the -end I most certainly did not!

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/03/13/is-anyone-using-ploneorg039s-new-pypi-functionality.html b/2009/03/13/is-anyone-using-ploneorg039s-new-pypi-functionality.html deleted file mode 100644 index 019649d..0000000 --- a/2009/03/13/is-anyone-using-ploneorg039s-new-pypi-functionality.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - Is anyone using Plone.org's new PyPI functionality? - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Is anyone using Plone.org&#039;s new PyPI functionality?

- -
- -
- -

Lots of exciting things are happening with Plone.org!

-
    -
  1. Calvin Hendryx-Parker and Six Feet Up are working on moving -*.plone.org to one of their powerful new servers (with some -exceptions, most notably {svn,dev}.plone.org will remain in place, as -I understand it)!
  2. -
  3. Alex Limi and company are working on deploying a new look and -feel using a new-fangled technology called xdv (a variant of -Deliverance).
  4. -
  5. I am removing kinks that have been lingering after the recent -upgrade (in theory ;-).
  6. -
-

This blog entry is both a "call to arms" to everyone involved in -helping, and a message to everyone waiting patiently that we haven't -forgotten about you! :-D

-

In particular, I'd like to hear from any early adopters of the new -http://plone.org/productssection. You can read about how to use the -new PyPI functionality here, if you haven't already: -http://pypi.python.org/pypi/collective.dist/0.2.2. In my little -"test" product, I found it quite useful: -http://plone.org/products/Products.todo/.

-

So if you are using it, I'd definitely like to hear your experiences. Or -if not, please give it a try!

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/04/21/a-lamp-buildout-for-wordpress-and-other-php-apps.html b/2009/04/21/a-lamp-buildout-for-wordpress-and-other-php-apps.html deleted file mode 100644 index a7ad334..0000000 --- a/2009/04/21/a-lamp-buildout-for-wordpress-and-other-php-apps.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - A LAMP buildout for Wordpress and other PHP apps - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- A LAMP buildout for Wordpress and other PHP apps

- -
- -
- -
-

A Buildout for PHP?

-

Having been a Plone Consultant for many years now, I find it very -painful to deal with non-Python-based technologies and I often will go -to great lengths to avoid it. I recently had to deploy a new PHP -application on an older Linux server (RHEL3) and could not bring myself -to compile the packages, search for RPMs, or do any of the mundane, -boring tasks required; so I began to look for an alternative. Enter: the -LAMP buildout. I created and used this to deploy my client's PHP -application. I hope others find it useful, both as an alternative way to -deploy PHP apps, and as an example of the wide variety of things -buildout can be used to do.

-
-
-

It's just that simple?

-

Unfortunately, this was not the blissful experience I had hoped for. -There were some non-obvious configuration parameters that had to be -dealt with. This was tedious and sometimes painful, but achieving the -end result was a uniquely rewarding experience I can assure you! In -fact, most of the problems had to do with the individual software -components and not buildout itself, which was a pleasure to work with -and one of the main reasons I am writing this blog entry. In a Plone -buildout for example, in most cases, the tedious parts are handled for -you and you just need to add the Plone egg, run buildout, and start -your site.

-
-
-

Break it down

-

Now, on to the buildout! It was developed and tested on Mac OS X 10.5 -then deployed to RHEL3. I had a small problem on RHEL3 with the GD -imaging library so I removed it (and installed it by hand in -/usr/local). Other than that, things went smoothly and I deployed -several PHP apps with it just for kicks, including:

-
    -
  • Phorum
  • -
  • SugarCRM
  • -
  • WordPress
  • -
  • phpMyAdmin
  • -
-

It builds Apache, PHP, MySQL, GD, and Supervisor. Let's take a look.

-

First, we define the parts. For each of these, we'll do something useful -to contribute to the end result.

-
-[buildout]
-parts =
-# Aspeli-style line-spacing to emphasize the functionality of each part or group of parts ;-)
-    env
-    grp    mysql
-    apache
-    gd
-    php    ports
-    mycnf
-    mysql-bin
-    mysql-admin
-    mysql_install_db
-    apache-conf
-    php-conf# Uncomment only one of these at a time
-#    phpmyadmin
-#    sugarcrm
-#    phorum
-    wordpress    supervisor
-
-

Now that the parts are listed, the rest of the buildout must define -those parts.

-

First, we add some utilities required by this buildout.

-
-[env]
-recipe = gocept.recipe.env[grp]
-recipe = collective.recipe.grp
-
-

Next, we build the core components.

-
-[mysql]
-recipe = hexagonit.recipe.cmmi
-url = http://mysql.mirrors.hoobly.com/Downloads/MySQL-5.1/mysql-5.1.33.tar.gz
-keep-compile-dir = true[apache]
-recipe = hexagonit.recipe.cmmi
-url = http://www.trieuvan.com/apache/httpd/httpd-2.2.11.tar.gz
-configure-options = --enable-so
-keep-compile-dir = true[gd]
-recipe = hexagonit.recipe.cmmi
-url = http://www.libgd.org/releases/gd-2.0.35.tar.gz
-keep-compile-dir = true[php]
-recipe = zc.recipe.cmmi
-environment =
-    PATH=${mysql:location}/bin:${env:PATH}
-url = http://us2.php.net/get/php-5.2.9.tar.gz/from/this/mirror
-# Beware, the new line below (i.e. '') may need to be undone.
-extra_options =
-  --prefix=${buildout:directory}/parts/apache/php
-  --with-config-file-path=${buildout:directory}/etc/php.ini
-  --with-gd=${buildout:directory}/parts/gd
-  --with-apxs2=${buildout:directory}/parts/apache/bin/apxs
-  --with-mysql=${mysql:location}
-  --enable-mbstring
-
-

After that, some configuration. Read the comments below for more -information.

-
-# Make it easy to change the various port settings[ports]
-recipe = plone.recipe.command
-command =
-    echo These ports are used to configure this LAMP:
-    echo Supervisor: ${ports:supervisor}
-    echo Apache: ${ports:apache}
-    echo MySQL: ${ports:mysql}
-supervisor = 9001
-apache = 8080
-mysql = 3306# All the mysql compile options[mycnf]
-recipe = plone.recipe.command
-command =
-    echo
-    echo These options are passed to mysqld_safe: ${mycnf:opt}
-    echo
-basedir=${mysql:location}
-datadir=${buildout:directory}/var
-pid=${mycnf:datadir}/mysql.pid
-err = ${mycnf:datadir}/log/mysql.err
-sock = ${mycnf:datadir}/mysql.sock
-# Beware, the new line below (i.e. '') may need to be undone.
-opt = --port=${ports:mysql} --pid-file=${mycnf:pid} --log-error=${mycnf:err}
---basedir=${mycnf:basedir} --datadir=${mycnf:datadir} --socket=${mycnf:sock}# Setup the mysql databases.[mysql_install_db]
-recipe = plone.recipe.command
-command =
-    ${mysql:location}/bin/mysql_install_db --datadir=${mycnf:datadir}
-    echo
-    echo After starting supervisord, you may want to run:
-    echo ${buildout:directory}/parts/mysql/bin/mysqladmin -u root password 'new-password'
-    echo
-update-command = ${mysql_install_db:command}# Generate Config files for Apache and PHP[apache-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/httpd.conf.in
-output = ${buildout:directory}/etc/httpd.conf[php-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/php.ini.in
-output = ${buildout:directory}/etc/php.ini# Make it easy to run mysql and mysqladmin[mysql-bin]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/mysql.in
-output = ${buildout:directory}/bin/mysql[mysql-admin]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/mysqladmin.in
-output = ${buildout:directory}/bin/mysqladmin
-
-

Now, the parts that download the various PHP apps.

-
-[wordpress]
-recipe = hexagonit.recipe.download
-url = http://wordpress.org/latest.tar.gz
-destination = ${buildout:directory}/htdocs
-strip-top-level-dir = true[phpmyadmin]
-recipe = hexagonit.recipe.download
-url = http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.1.3.2-english.tar.bz2
-destination = ${buildout:directory}/htdocs
-strip-top-level-dir = true[sugarcrm]
-recipe = hexagonit.recipe.download
-url = http://www.sugarforge.org/frs/download.php/5252/SugarCE-5.2.0c.zip
-destination = ${buildout:directory}/htdocs
-strip-top-level-dir = true[phorum]
-recipe = hexagonit.recipe.download
-url = http://www.phorum.org/downloads/phorum-5.2.10.tar.gz
-destination = ${buildout:directory}/htdocs
-strip-top-level-dir = true
-
-

And the supervisor that will control everything.

-
-[supervisor]
-recipe = collective.recipe.supervisor
-port = ${ports:supervisor}
-serverurl = http://127.0.0.1:${ports:supervisor}
-pp = ${buildout:directory}/eggs/supervisor-3.0a6-py2.4.egg/supervisor/pidproxy.py
-# Beware, the new line below (i.e. '') may need to be undone.
-programs =
-    10 mysql ${supervisor:pp} [ ${mycnf:pid} ${mysql:location}/bin/mysqld_safe ${mycnf:opt} ]
-    20 apache ${apache:location}/bin/httpd [ -c "ErrorLog /dev/stdout" -DFOREGROUND
-                                             -f ${buildout:directory}/etc/httpd.conf ]
-
-

If you are interested in trying this yourself, please see:

-

http://svn.aclark.net/svn/public/buildout/lamp/trunk/

-

and let me know how it goes!

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/06/18/a-sane-buildout-for-repozezope2-plone.html b/2009/06/18/a-sane-buildout-for-repozezope2-plone.html deleted file mode 100644 index 960dfda..0000000 --- a/2009/06/18/a-sane-buildout-for-repozezope2-plone.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - A sane buildout for repoze.zope2 + Plone? - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- A sane buildout for repoze.zope2 + Plone?

- -
- -
- -

(This is also a follow-up of sorts to Martin Aspeli's excellent -introduction to repoze and Plone from last year.)

-
-

A Tale of Two Buildouts

-

There are two stories going on here, both of which Martin Aspeli -recently described in great detail and Chris McDonough tackled last -year. For the purposes of this blog entry, I'll refer to the issue as -the "index vs. find-links" conundrum in buildout  (find-links in -buildout are equivalent to distribution_links in setuptools).

-

For those that want strict repeatability, using the index parameter is -the clear winner. It simply forces buildout to do the right thing now -and forever, by limiting what packages it can select from. For those -that want functionality and don't mind the occasional egg-out-of-whack -(i.e. unexpected upgrade), then using the find-links parameter can -provide a "sexy" way to get decent results quickly (but may, and -probably will, shoot you in the foot later).

-
-
-

Sexy, but Dangerous

-

Let's start with the sexy, but with less repeat-ability method first. -Using this method we are not specifying our own index. Therefore you are -free to add any package from PyPI or plone.org as you see fit. -This is essentially why people like this method (the counter argument is -that it is simple to add any additional egg you may want to your index, -but we'll get to that later).

-

So a simple buildout using this method might look like this:

-
-
    -
  1. virtualenv plone; cd plone
  2. -
-

    -
  1. bin/easy_install zc.buildout
  2. -
  3. bin/buildout init
  4. -
-

    -
  1. Edit buildout.cfg:
  2. -
-
-
-[buildout]
-extends =
-# Using Martin Aspeli's good-py, thanks!
-    http://good-py.appspot.com/release/repoze.zope2/1.0
-    http://dist.plone.org/release/3.3rc3/versions.cfg
-versions = versions
-find-links =
-    http://dist.repoze.org/zope2/latest
-    http://dist.repoze.org/zope2/dev/
-    http://dist.plone.org/release/3.3rc3
-parts = instance[instance]
-recipe = zc.recipe.egg
-dependent-scripts = true
-eggs =
-    repoze.zope2
-    Plone
-    PIL
-
-4. bin/buildout
-
-

A few more steps are required, which we could certainly automate in -buildout, but for now I'll just list them here:

-
-
    -
  1. bin/mkzopeinstance
  2. -
-

    -
  1. bin/addzope2user admin admin
  2. -
-
-

Now, the moment we've all been waiting for… the fun part!

-
-
    -
  1. bin/paster serve etc/zope2.ini
  2. -
-
-

You should see something like:

-
-[aclark@alex-clarks-macbook-pro]~/Developer/plone% bin/paster serve etc/zope2.ini
-2009-06-18 22:52:24 INFO Marshall libxml2-python not available. Unable to register libxml2 based marshallers.
-2009-06-18 22:52:27 WARNING ZODB.FileStorage Ignoring index for /Users/aclark/Developer/p3-repoze-2/var/Data.fsDeprecationWarning: zope.app.annotation has moved to zope.annotation. Import of zope.app.annotation will become
-unsupported in Zope 3.5
-/Users/aclark/Developer/plone/eggs/zopelib-2.10.7.0-py2.4-macosx-10.5-i386.egg/zope/configuration/xmlconfig.py:323:
-  __import__(arguments[0])
-------
-2009-06-18T22:52:24 INFO Marshall libxml2-python not available. Unable to register libxml2 based marshallers.
-------
-2009-06-18T22:52:27 WARNING ZODB.FileStorage Ignoring index for /Users/aclark/Developer/plone/var/Data.fs
-Starting server in PID 26900.
-zserver on port 8080
-
-

At this point, you should be able to login to -http://localhost:8080/manage and create a Plone site.

-

Of course, we did a sloppy job here, creating the Zope2 instance in the -root of the buildout, etc. It is possible that -plone.recipe.zope2install may help us in the future by supporting -repoze.zope2 instances (or maybe it does already, I didn't try).

-

Next up?

-
-
-

Boring, but Repeatable

-

I kid, but this is actually a very serious concern for many people, and -rightfully so. The notion that your buildout will work the same today as -it does in one year from now may be a strict requirement for your -project. If it is, we can accommodate you (I hope) with the "index" -buildout that follows. The downside is that *you* can't control what I -put in the index. However, you can certainly create your own index using -this technique.

-

An arguably even simpler buildout using this technique might look like -this:

-
-
    -
  1. virtualenv plone; cd plone
  2. -
-

    -
  1. bin/easy_install zc.buildout
  2. -
  3. bin/buildout init
  4. -
-

    -
  1. Edit buildout.cfg:
  2. -
-
-
-[buildout]
-index = http://dist.plone.org/experimental/release/3.3rc3/simple/
-parts = instance[instance]
-recipe = zc.recipe.egg
-dependent-scripts = true
-eggs =
-    repoze.zope2
-    Plone
-    PIL
-
-4. bin/buildout
-
-5. bin/mkzopeinstance
-
-.. raw:: html
-
-   </p>
-
-.. raw:: html
-
-   <p>
-
-6. bin/addzope2user admin admin
-
-7. bin/paster serve etc/zope2.ini
-
-
-
-

In Conclusion

-

Depending on what my needs are, I might choose either of these -techniques. We can also hold out for multi-index support in -setuptools. That would seemingly make everyone happy. In the meantime, -I can tell you I'd definitely reach for a buildout sans custom index -first, then ask questions later (i.e. wait for bleeding toes) but that -is just me. If people find the "index" technique generally useful, I'd -be willing to support package sheperding and index generating with -basketweaver. Just let me know. If it really catches on, we could -rename http://dist.plone.org/experimental/release/3.3rc3/ to -http://dist.plone.org/repoze/release/3.3rc3/. Of course, if anyone -objects to this or finds it confusing, I can just as easily remove it -(from dist.plone.org).

-

Special thanks to Chris McDonough and Martin Aspeli for helping me -scratch my itch!

-

Finally, please don't rely on any of this "in production" yet unless you -know what you are doing. I tested these techniques up to the point of -starting Zope (via paste) and adding a Plone site, nothing more! :-)

-

I, however, am getting a new server next week and will be hosting this -site on repoze.zope2 very shortly ;-)

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/09/22/review-of-veda-williams039-plone-3-theming.html b/2009/09/22/review-of-veda-williams039-plone-3-theming.html deleted file mode 100644 index fa8f792..0000000 --- a/2009/09/22/review-of-veda-williams039-plone-3-theming.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - Review of Veda Williams' Plone 3 Theming - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Review of Veda Williams&#039; Plone 3 Theming

- -
- -
- -

`|image0|`_First things first, I can't overstate enough how much I -personally appreciate Veda's efforts to bring the -(currently-and-unfortunately, but-not-for-long) complex world of Plone -theming to the masses. It's an acquired taste, but once you get the hang -of it you can use your powerful skills to create some very impressive -sites – and make the world a better place like Veda and the crew at -Groundwire are doing (formerly ONE/Northwest).

-

Furthermore, If you are interested in Plone and how Plone theming works, -this book is almost certainly for you. It gives you an over abundance of -present day theming knowledge, and also covers aspects of the Zope 3 -component architecture, where Plone has been, and where it is going to -be in the not-so-distant-future.

-

Since PACKT are well known for giving back to the communities that -produce the software that is the subject of their books, purchasing a -copy of this book will directly benefit Plone, so I encourage you to do -so.

-

With all that out of the way, I'd like to focus on a chapter by chapter -review (like everyone else does) of Plone 3 Theming. Like I -said, I really liked this book so please don't take any of my (hopefully -constructive) criticism negatively. I hope my comments will help the -readers of this book, as well as Veda, if she dares to attempt a 2nd -edition one day!

-

STANDARD DISCLAIMERS APPLY: I'm a "paid" reviewer (in that I -received a free copy of the book) and also, I know Veda personally.

-
-

Chapter 1

-

This chapter gives an overview of Plone, which as a total-Plone-fanboy, -I very much appreciated. I particularly enjoyed the "community lore". -"what is Plone", and "books about Plone" sections. The author also -includes a "Plone vs. Drupal" comparison and an "evolution" section that -covers Plone theming-framework changes version by version, which I -didn't care for as much [1].

-
-
-

Chapter 2

-

This chapter lists many tools for graphic design, web browsing, web -development (with browser add-ons), and text editing. All useful -information. I particularly enjoyed the recommendation for the browser -add-on YSlow which I'd heard of, but don't use regularly. -Recommendations for the traditional UNIX® text editors vi and emacs were -missing, but folks that use these editor already know which one they -prefer (*wink* – vi), and those that don't aren't likely to start -using them now.

-
-
-

Chapter 3

-

Here we get into the now-venerable zc.buildout and how it is used by -Plone. I think many folks will appreciate the terminology section, -featuring definitions of Zope, Python, and various Python package -terminology. I would have liked to have seen the `PyPI features of -plone.org mentioned`_, but I'll settle for a shameless plug of it here. -Similarly, no mention of git or mercurial in a section about version -control (Subversion only), but I suppose (again) those familiar with -these technologies already know which one they prefer.

-

Lastly, I liked the variety of approaches described in the "download -Plone" section, from using platform installers to using the unified -installer to satisfying all the Plone dependencies by hand. All good -information.

-
-
-

Chapter 4

-

Using ZopeSkel to create a theme package, then adding that package to -your buildout as a "develop egg" are the main topics covered here. (A -side note: I'm very much looking forward to the upcoming release of -ZopeSkel 2.14! -http://www.coactivate.org/projects/zopeskel-bbq-sprint/blog/2009/10/13/zopeskel-bbq-sprint-days-two-three-and-four/

-

)

-
-
-

Chapter 5

-

I like this chapter because it covers a variety of the TTW (through the -web) changes that we are consistently reminded we are not supposed to -make, but we all know that everyone makes them. The truth is, there is -absolutely nothing wrong with TTW changes if you take them for what they -are worth. It's fine to turn a knob or two TTW, just be aware that at -some point you may be turning that knob again TTW, if you don't turn a -similar knob on the file system ;-)

-
-
-

Chapter 6-7

-

Here we get into various Zope 3 concepts: ZCML, browser layers, -resources, viewlets and more! If there is such a thing, this would be -the "unfortunate" part of the modern Plone theming story. Plone themers, -for better or worse, must be familiar these concepts in order to be -successful. One pet peave I have, that I will mention here because it -seems appropriate, is the bundling of GenericSetup in a discussion about -Zope 3 concepts. While GenericSetup may use Zope 3 technology under the -hood (I assume it does, like most modern Zope 2 code) as a concept it -has absolutely nothing to do with Zope 3 (in other words it is not part -of the "component architecture") It just happened to be introduced to -Plone around the same time various other Zope 3 technology was -introduced (via Five), hence people tend to include it in the "things -they hate about Zope 3 in Plone" category. Perhaps GenericSetup should -have been added either before or after the Zope 3 stuff to make it more -palatable, but that train has sailed and now we must deal with the -consequences.

-
-
-

Chapter 8

-

This chapter about TAL (template attribute language) is great stuff. TAL -is one of those beautiful technologies that pays for itself once you -learn it (unlike various web form frameworks, for example ;-). If like -me you can't get enough of TAL from Veda's book, check out the section -on it in the Zope 2 book: -http://docs.zope.org/zope2/zope2book/ZPT.html

-
-
-

Chapter 9-11

-

Here we get to watch Veda design, build, and deploy a theme. This is the -focal point of the book, and is worth the price of admission alone. I -almost wish the entire book was about this theme, with the other -relevant bits sprinkled in as needed. But in any event, these three -chapters are what most readers will be most interested in.

-
-
-

Chapter 12

-

This is a great little chapter about various add-ons that themers may -find interesting. My favorite add-on mentioned in this chapter is -Products.FSDump. Very, very useful tool for getting various bits out of -your ZODB and on to your file system (e.g. the contents of the -portal_skins/custom folder). I'm really hoping that a 1.0 release will -see the light of day one of these days. I notice Veda didn't mention it, -but there is now an egg-based version of this popular add-on: -http://pypi.python.org/pypi/Products.FSDump/FSDump-0.9.4 Just add -Products.FSDump to your instance section's eggs= parameter and off you -go.

-
-
-

Chapter 13

-

Here, a gratuitous chapter on multimedia wherein various useful -multi-media add-ons are mentioned. I say gratuitous because I think -there is a misperception that you need these add-ons to accomplish what -you want. Plone should do a much better job convincing people that while -it is a complex application, a Plone site is also just a website. So if -you know how to do it elsewhere (e.g. on a "regular" website) it should -be easy to do it in Plone (we are not quite there yet). Anyway, some -great add-ons are mentioned here of course, but one noticeable absence: -http://plone.org/products/collective-fancyzoomview (which is used by -PloneSoftwareCenter on plone.org).

-
-
-

Chapter 14

-

An 'Amen!' for this chapter that covers deploying and contributing -themes, especially on the contributing part. As I mentioned earlier, I -would have liked to have seen the `PyPI features of plone.org -mentioned`_ in this book, and in this chapter in particular. While it is -arguably still hard to create Plone themes, it is encouragingly not hard -to share them! Also, an incredibly useful tool for releasing themes (and -any package) to both plone.org/products and pypi.python.org at the same -time (i.e in a single command) is -http://pypi.python.org/pypi/jarn.mkrelease/2.0.2.

-
-
-

Chapter 15

-

This chapter (by Alexander Limi) introduces people to "new style" -theming with xdv. While I enjoy this subject tremendously, I think it's -going to take a while before it is fully digested by integrators. -Hopefully, Alex's chapter will help. I'm also told that Laurence Rowe -has been making some improvements to collective.xdv recently, and I see -there is a new version here: -http://pypi.python.org/pypi/collective.xdv (I think this version -handles 404s).

-

Bottom line: this is great stuff but potentially confusing in that you -have an add-on, collective.xdv, that applies an XSLT transform "on the -fly" (in memory) to your Plone site, but the recommended deployment -strategy is to use NGINX or Apache with Laurence's patches applied. I've -spent some time doing this (I expect to re-launch this site with xdv -soon, and of course plone.org uses it) and it is non-trivial to say the -least. What we have now is a situation where folks are starting to use -collective.xdv and thinking that *it* is the new way to theme, when in -fact it is only part of the story.

-

One last pet peeve I will mention is that both "theming" and "skinning" -were used to describe the subject of the book.  I would have preferred -just "theming" (since that is what we are calling it now ;-).

-

In conclusion, great job Veda! Thank you very much for your efforts. I -look forward to reviewing a second edition. To every one else, I invite -you to purchase your copy of this book and get your Plone 3 theming ON: -http://www.packtpub.com/plone-3-theming-create-flexible-powerful-professional-templates

-

[1] Quite frankly, I think Plone is in a category all its own (as the -most successful Python-based CMS of all time), and while there are -certainly comparisons to be made, and lessons to be learned from the -competition, I think we should let the readers decide for themselves how -Plone stacks up to the competition.

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/review-of-veda-williams-plone-3-theming.rst, line 244); backlink

-Duplicate explicit target name: "pypi features of plone.org mentioned".
-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/review-of-veda-williams-plone-3-theming.rst, line 6); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/review-of-veda-williams-plone-3-theming.rst, line 60); backlink

-Duplicate target name, cannot be used as a unique reference: "pypi features of plone.org mentioned".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/review-of-veda-williams-plone-3-theming.rst, line 174); backlink

-Duplicate target name, cannot be used as a unique reference: "pypi features of plone.org mentioned".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2009/12/31/new-years-python-meme.html b/2009/12/31/new-years-python-meme.html deleted file mode 100644 index da9c8ee..0000000 --- a/2009/12/31/new-years-python-meme.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - New year’s Python meme - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- New year’s Python meme

- -
- -
- -
-

`|image0|`_What’s the coolest Python application, framework or library you have discovered in 2009?

-

That would be Zenoss. I'm very impressed with the application as well -as the community, which is awesome. They remind me a lot of the Plone -community; I think the two can learn a lot from each other.

-
-
-

What new programming technique did you learn in 2009?

-

Generally speaking, I'm happy with my progress as a Plone integrator, -plowing through the tremendous Plone code stack, on my way to complete -mastery. I may never get there, but I'm having fun trying. In other -words, I know a lot more about how far the Zope2/CMF/Five rabbit hole -goes. If I had to pick, I'd choose Grok in Plone, mostly as it relates -to Dexterity: -http://plone.org/products/dexterity/documentation/manual/five.grok. I -created http://plone.org/products/collective-project as a result, or -rather, I converted the package to use Dexterity types so I could learn -Dexterity, in part ;-). At first I was angry at being "forced" to use -Grok techniques in Plone, but then it grew on me.

-
-
-

What’s the name of the open source project you contributed the most in 2009? What did you do?

-

Plone.

- -
-
-

What was the Python blog or website you read the most in 2009?

-

Planet Plone.

-
-
-

What are the three top things you want to learn in 2010?

- -

Happy (Python) New Year everyone!

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/new-years-python-meme.rst, line 7); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/01/01/be-there-or-be-square-first-cutmov.html b/2010/01/01/be-there-or-be-square-first-cutmov.html deleted file mode 100644 index 11033a1..0000000 --- a/2010/01/01/be-there-or-be-square-first-cutmov.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - be there or be square (first cut).mov - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- be there or be square (first cut).mov

- -
- -
- -

[youtube http://www.youtube.com/watch?v=YAv9N0mri_w&w=420&h=315] be -there or be square ===================== © Alex Clark 2010 D i just want -to be there D you don't want to be square D either way don't matter D -that's from what i gather

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/01/01/toronto-plone-add-ons-sprint-1-report.html b/2010/01/01/toronto-plone-add-ons-sprint-1-report.html deleted file mode 100644 index 001bcd3..0000000 --- a/2010/01/01/toronto-plone-add-ons-sprint-1-report.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - Toronto Plone Add-ons Sprint #1 Report - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Toronto Plone Add-ons Sprint #1 Report

- -
- -
- -

Last month, members of the Toronto Plone user's group helped with -Plone.org maintenance. Here is the sprint "report out" from Jordan -Baker:

-
-

Toronto Plone Addons Sprint Report #1:

-
    -
  • Attending: Robert Jackiewicz, Jordan Baker, John Southern, aclark
  • -
  • aclark helped out by answering some questions and provided a dump of -PSC data from plone.org
  • -
  • Rob was working on getting his buildout working with nginx and -documenting the process
  • -
  • John worked on gettting a task listing setup on coactivate: -http://www.coactivate.org/projects/ploneorg-upgrade/tasks/tasklist/show/993
  • -
  • Jordan commited changes to allow for filtering by version, autosubmit -on selection change and searching using the PSC view instead of the -Plone search view.  aclark is working on cutting a release... -hopefully we can get a preview soon..
  • -
-
-

Outstanding questions:

-
    -
  • need some help with c.xdv or nginx so we can preview changes in the -theme
  • -
  • Where should we put our issues in the future.  There was talk of -eating dog food using a Poi instance on plone.org -- can someone -help me set that up (add hexsprite and gogojohn as admins)
  • -
  • Please help us by prioritizing the tasks in the task list on -coactivate
  • -
-
-
-

Next Sprint:

-

Shooting for January 22.  Hopefully that will work for most people. -Please help us spread the word to interested parties... more details to -come.

-

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/01/06/you-know-me-first-cutmov.html b/2010/01/06/you-know-me-first-cutmov.html deleted file mode 100644 index 6ac9493..0000000 --- a/2010/01/06/you-know-me-first-cutmov.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - you know me (first cut).mov - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- you know me (first cut).mov

- -
- -
- -

[youtube http://www.youtube.com/watch?v=CVlBiQ00KDg] You Know Me -=========== © 2010 Alex Clark You know me I'm ready to go I'm ready to -go I'm ready to go

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/01/06/yup-this-blog-is-now-powered-by-wordpress.html b/2010/01/06/yup-this-blog-is-now-powered-by-wordpress.html deleted file mode 100644 index 1d1c4db..0000000 --- a/2010/01/06/yup-this-blog-is-now-powered-by-wordpress.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - Yup, this blog is now powered by WordPress. - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Yup, this blog is now powered by WordPress.

- -
- -
- -

(Or, "How I learned to stop worrying and use the right tool for the -job.") My first blog entry was well over two years ago. I've -learned enough Plone since then to know that I hardly know anything! -Toward the end of 2009, I begin to realize that I was doing way too -much, and not getting anything done as a result. So I began offloading -services wherever I could to free or low cost service providers; I can't -tell you how much happier I have been since then. Interestingly, after -waffling over the use of these services for years, when push came to -shove I had no problem choosing the right tool for the job. It didn't -matter so much what selection I made. The fact that I offloaded the -responsibility was the most important thing. Which brings me back to the -subject at hand. I love Plone. I think it is great software. I want -to make it better. In order to do that I need to broaden my horizons and -use the right tool for the job, and hopefully bring those experiences -back to Plone! Hence, introducing my new Wordpress-powered blog -about Plone. I'm still using Plone for aclark.net (of course). I -just don't want to "manage" the blog software anymore. I want it done -for me so I can focus on other things. Since WordPress is so obviously -the leading "best" weblog software, it was an easy decision to make. (Of -course, this blog was shipped using Python software.) Lastly, I'll -say this. I want to be more prolific in 2010, and I'm hoping that using -the right tool for the job will help me achieve that. It has worked -wonders so far.

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/01/07/no-really-you-can-just-use-buildout-to-install-plone.html b/2010/01/07/no-really-you-can-just-use-buildout-to-install-plone.html deleted file mode 100644 index bcb5e49..0000000 --- a/2010/01/07/no-really-you-can-just-use-buildout-to-install-plone.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - No, really, you can (just) use Buildout to install Plone. - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- No, really, you can (just) use Buildout to install Plone.

- -
- -
- -

This is a follow up to my Getting Excited about Plone as Eggs post, -because I can't keep updating that one forever.

-

Generally speaking, the recommended (and supported) way to install Plone -is via the installers, e.g. the Unified Installer. Obviously, if you -want things to Just Work™ you should be using the latest stable release, -which is why I linked to the 3.3.3 unified installer (although there is -no Windows installer for 3.3.3 yet, which is why it's not released on -plone.org).

-

That said, since both Plone and Zope 2 have been packaged as eggs -(Plone became an egg in version 3.2 and Zope 2 became an egg as of Zope -2.12 which is the version of Zope 2 that Plone 4 will use) it has become -"mostly trivial" to write a buildout.cfg to install Plone with. That -means that you don't even need paster to do it. You can just fire up an -editor and type:

-
-[buildout]parts =
-  instance[instance]
-recipe = plone.recipe.zope2instance
-user = admin:admin
-eggs =
-  Plone
-
-

Amazing!

-

Of course there is the nasty bit about PIL, which I get around -now-a-days by adding a very specific find-link, e.g.:

-
-[buildout]parts =
-  instancefind-links = http://dist.plone.org/thirdparty/PILwoTk-1.1.6.4.tar.gz[instance]
-recipe = plone.recipe.zope2instance
-user = admin:admin
-eggs =
-  PILwoTk
-  Plone
-
-

What you should have at this point is a working Plone, but not -necessarily a repeatable buildout. The reason being we have not pinned -any egg versions yet, so we are effectively asking for whatever the -latest version of Plone is on PyPI. Fun for playing, not fun for -production. Fortunately the nice Plone people have created a bunch of -version pins for us, so we just need to use them:

-
-[buildout]extends =
-    http://dist.plone.org/release/4.0a3/versions.cfgversions = versionsparts =
-  instancefind-links = http://dist.plone.org/thirdparty/PILwoTk-1.1.6.4.tar.gz[instance]
-recipe = plone.recipe.zope2instance
-user = admin:admin
-eggs =
-  PILwoTk
-  Plone
-
-

If you are completely new to buildout and you are thinking to yourself -right now "what in the world is this guy talking about?" then you will -likely want to install buildout first so you can join in the fun. -Fortunately, the nice Python people have made that easy with a package -called Distribute.

-

Following their instructions, you can do this:

-
-$ curl -O http://python-distribute.org/distribute_setup.py
-$ python distribute_setup.py
-
-

Then:

-
-$ easy_install zc.buildout
-$ mkdir plone
-$ cd plone
-$ buildout init
-
-

After which you will have a buildout.cfg file, and you can follow along -with the above steps. Happy?

-

The best part about all of this is that (on a fast internet connection) -it should only be a matter of minutes before you are able to do this:

-
-$ bin/instance fg
-
-

and be staring at:

-

`|image0|`_

-

Of course, if you are running in the foreground (recommended for -debugging) you should see something like this:

-
-aclark@Alex-Clarks-MacBook-Pro:~/Developer/public-plone/ > bin/instance fg
-/Users/aclark/Developer/public-plone/parts/instance/bin/runzope -X debug-mode=on
-2010-01-07 12:07:56 INFO ZServer HTTP server started at Thu Jan  7 12:07:56 2010
- Hostname: 0.0.0.0
- Port: 8080
-2010-01-07 12:08:14 INFO Zope Ready to handle requests
-
-

If you'd like to get a little less noisy and skip debug mode but still -run in the foreground, you can use April 2008's famous addition to -plone.recipe.zope2instance:

-

-aclark@Alex-Clarks-MacBook-Pro:~/Developer/public-plone/ > bin/instance console
-
-

Sweet, blissful, silent running Plone.

-

Happy Plone 4'ing all!

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/no-really-you-can-just-use-buildout-to-install-plone.rst, line 127); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/01/12/just-friends-first-cutmov.html b/2010/01/12/just-friends-first-cutmov.html deleted file mode 100644 index feaf027..0000000 --- a/2010/01/12/just-friends-first-cutmov.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - just friends (first cut).mov - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- just friends (first cut).mov

- -
- -
- -

[youtube http://www.youtube.com/watch?v=_dK-l41uRio&w=420&h=315] Just -Friends ============ Copyright © Alex Clark 2010 (Capo 5) A (form) I -just want to be friends with you A (form) I don't want to have to do

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/03/15/using-buildout-to-deploy-a-plone-21-site-to-the-cloud.html b/2010/03/15/using-buildout-to-deploy-a-plone-21-site-to-the-cloud.html deleted file mode 100644 index ee26909..0000000 --- a/2010/03/15/using-buildout-to-deploy-a-plone-21-site-to-the-cloud.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - Using Buildout to deploy a Plone 2.1 site to the cloud - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Using Buildout to deploy a Plone 2.1 site to the cloud

- -
- -
- -

Believe it or not, there are still Plone 2.1 sites in production. (And -1.0 sites too, for that matter. Just look for the tell-tale '/help' -sign, e.g. http://www.zope.org/help, if you suspect Plone 1).

-

I know, because I just deployed one (a cool artist's site if you have -a couple hours to kill…). But I didn't do it the "old way" with Zope 2 -instances created by hand on clunky physical servers, I used Buildout -and the Cloud.

-
-

Aside #1

-

As an aside: it was really bothering me lately that you couldn't -(easily) find older Plone releases at SourceForge. This is by design -to avoid confusion, but still confusing. So when I needed the most -recent 2.1.x tarball I decided to scratch my itch and fix the "problem". -I started gathering the hard to find releases and putting them -here. OK… so I only gathered one release (2.1.4), but I swear I had -good intentions. If you'd like to see any additional releases "moved" to -dist.plone.org, please let me know in the comments.

-
-
-

Aside #2

-

Another aside: I should mention here the advent of a tool that promises -to simplify deployment of Python-based web applications to the cloud (or -supported service, which technically does not have to be "cloud-based") -via the use of APIs (in particular, the Rackspace Cloud API, which is -the only one supported so far): Silver Lining! The idea of using this -tool got me so excited, I spent some time experimenting with setting up -a new host with it (and purchasing their service). But when I realized -it was not quite ready for production (i.e. "if you want to use Silver -Lining, Silver Lining is not for you" :-)), I ended up using the -Rackspace Cloud web interface.

-

I was so impressed with it:

-

`|image0|`_

-

I literally moved all of my (granted, relatively small number of client -sites) to their service within a matter of 1-2 months. Now, I know what -you are thinking, and I do intend to explore other services (in fact, I -have tried Slicehost and it was OK), but this service made my life so -much easier I wanted to mention some of its key features:

-

    -
  • "On the fly" requisitioning. You can add/remove hosts anytime and you -only pay for the time they are up.
  • -
  • "On the fly" resizing of hosts. In my testing and real world -experience, the resizing (e.g. move from a host with 256MB RAM and -10GB disk to 500MB RAM and 20GB disk) was painless (literally only -cost a few minutes of downtime).
  • -
  • The potential for all of this to be done remotely via a command line -tool like Silver Lining.
  • -
-
-
-

Aside #3

-

A third and final aside: the status quo of WSGI support for Plone. Since -Zope 2 is not supported by Silver Lining, the key to deploying Plone -sites with it is currently to use repoze.zope2. Nate Aune has -recently made some progress with this, and more work is scheduled -forPlone Symposium East. My latest swipe at WSGI-Plone is here: -http://svn.aclark.net/svn/public/buildout/plone/branches/3.x-wsgi/

-
-
-

The actual point

-

And finally, to the point of this blog entry! I have created a generic -Plone 2.1 buildout for anyone interested. You can find it -here:http://svn.aclark.net/svn/public/buildout/plone/branches/2.1.x/. -Using it is simple, as described in the README.txt:

-
-$ svn export http://svn.aclark.net/svn/public/buildout/plone/branches/2.1.x/ plone
-$ cd plone
-$ python2.4 bootstrap.py
-$ bin/buildout
-$ bin/instance fg
-
-

Since Plone 2.1 community support has expired for this release, and -since Plone 2.1 shipped with Python 2.3 (if I recall correctly), this is -definitely "unsupported use of Plone". But when you need it, you need -it. I have yet to experience any issues related to the Python version, -for whatever that is worth (possibly due to the fact that Plone 2.1 -originally shipped with Python 2.3 and Zope 2.7, then Zope 2.8 came -along which worked with Python 2.4. Just a guess).

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/using-buildout-to-deploy-a-plone-2-1-site-to-the-cloud.rst, line 47); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/03/22/i-need-something-to-do.html b/2010/03/22/i-need-something-to-do.html deleted file mode 100644 index f40bf96..0000000 --- a/2010/03/22/i-need-something-to-do.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - I need something to do - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- I need something to do

- -
- -
- -

I would like to think I have done my share for Plone over the past -few years. In return, I know that Plone has done its share for me. I -have learned a lot, made a good living, and met a lot of amazing folks -who have really inspired me to be the best I can be.

-

But it is time for a change.

-

[caption id="attachment_287" align="alignright" width="492" -caption="Image credit: -http://screenmusings.org/ForrestGump/pages/fg_0885.htm"]`|Image -credit: -http://screenmusings.org/ForrestGump/pages/fg\_0885.htm|`_[/caption]

-

If my life were the movie Forrest Gump, this would be the part where -Forrest stops running, stands in the highway for a minute… then turns -around and goes home to Greenbow Alabama (which as it turns out is a -fictional town, who knew?)

-

*(Apparently this person had the same epiphany!)*

-

Not a drastic change mind you, just a re-focus.

-

To that end, I would like to reach out to the community I know and love -(Plone!) and see if anyone has anything for me to do. Please contact -me if you are interested, and please tell all your friends too! You -never know who knows who and who is looking for what.

-

Let me tell you a little bit about what I have done professionally and -what I would like to do now, followed by some requirements I hope can be -met.

-

What I have done:

-
    -
  • I received a Computer Science degree in May 1998 after about 10 -years of undergrad education (transferred, changed majors, etc.)
  • -
  • I've done a lot of system administration and network engineering, -mostly for ISPs including AOLnet (back in the day).
  • -
  • I have done a lot of Plone.
      -
    • I started doing Plone at my last full-time system administrator -job, and became so obsessed with it that I had to quit to -pursueitfull time, mostly thanks to the support of my -wife Amy, and Paul Boos and Nate Aune who handed me my first -contracts!
    • -
    • I have organized monthly meetingsfor ZPUGDC for the last 4 -years or so, taking over for Joel Burton when he moved to -California. We are now in the process of becoming a 501c3 so we -can expand our focus and serve the community in bigger and better -ways. ZPUGDC is not a full time job, but it as a passion (to be a -resource for all things Python in DC).
    • -
    • I have owned and operatedACLARK.NET, LLCfor the past six -years. All in all this has been an amazing experience and I have -no plans to stop. We are now at the point where we can compete -with all the "big firms" and we intend to do so. But I need time -to answer some RFQs…
    • -
    • I organized Plone Conference 2008 and wrote a book.
    • -
    • I upgraded plone.org to Plone 3, and now lead the plone.org -infrastructure team member, taking over for Wichert Akkerman -(more or less) when he left. This is something I particularly -enjoy. No wait, I hate it. Just kidding. It is something I like, -and plan to focus on it more in the future to make sure it gets -done right. It is very frustrating to want to do something but not -have  time to do it. I'm sure all you Plone consultants know what -I mean.
    • -
    -
  • -
  • I have done some Python programming and evangelism:
      -
    • I have paid particular attention to making ZPUGDC more -Python-centric, by welcoming all Python programmers in the area -not just Plonistas. This has worked out very well and our monthly -attendance has gone from 5-6 to 15-20. Each month, we go around -the room and talk about "what we are doing with Python". It is -always interesting.
    • -
    • I write code. I am particularly proud that working for myself -has afforded me my first paid programming job (programming for -system administration doesn't really count IMO). There is a ton to -learn: Networking frameworks like Twisted, Web application -frameworks like Zope, Django, Turbo Gears, Pylons, BFG, etc. -Continuous integration with Hudson (OK, that is Java but you can -use it on your Python code ;-)), Documentation with Sphinx. And so -on.
    • -
    -
  • -
-

What I would like to do:

-
    -
  • Open Source Software: I really like open source software. It -started in the mid 1990s when I realized that there was this thing -called the Internet and that people had been writing code for years -and making it available for general use to anyone interested. That -just floored me. I can still remember the thrill of borrowing a UNIX -text book from my professor the summer before I started CS classes. -At the time, it seemed like UNIX and open source walked hand in hand -and I became obsessed with both. I realize now there is much more to -that story, but that is how the seeds were planted. Anyway, open -source is for me and I am for open source. I am not sure what that -means in terms of job opportunities, but maybe I could be an -evangelist like Mark Hinkle, and evangelize Your Software like he -evangelizes Zenoss. Just a thought.
  • -
  • Plone, Python, Zope, Zenoss: I really like these open source -projects, in particular. Any paid position that involves almost any -aspect of these projects would make me happy. I have pimped myself -out to Zenoss and I eventually expect to hang out my Zenoss shingle -and start doing add-ons, customizations, etc. for Zenoss users. But I -am not quite there yet. I know Plone, and can handle most development -and deployment tasks. I am particularly interested in large-scale -deployments (e.g. City of Austin type clients, only with a better -outcome ;-)).
  • -
  • Busy work. It sounds silly, but repetitive tasks fit my brain. -Automating large scale deployments. Configuration management. System -updates. These things I can do, and help you with too.
  • -
  • Learn: If there is one thing I've learned after learning so much -over the years, it is that I hardly know anything. I hope to be a -part of team that offers a significant growth opportunity. It's time -to raise the bar.
  • -
-

What I require to work for you:

-
    -
  • Six month contract or longer. Whatever I sign on to do, it has to -last six months or more (preferably until the end of 2010). This is -the time frame I am particularly concerned about (for a variety of -personal reasons). I can start April 1 or after. Repeat: it is -definitely OK if it lasts longer than six months.
  • -
  • Travel. I can travel almost anywhere in the world, as long as you -pay for it ;-). But seriously, working from home is a requirement, -but meetings (monthly? bi-monthly?) in your city should not be a -problem.
  • -
  • Fun and flexibility. I do Plone for a living because Plone is -fun. I work very hard to make sure your needs are met, and I ask for -a lot of flexibility in return. Deadlines are not a problem, but the -ability to act independently to meet the deadline is.
  • -
  • Paid Plone work. Ideally someone will hire me to do all the -things I already love to do like maintaining plone.org, sprinting on -various tasks, perhaps joining the Plone 4.1 Framework Team. Anything -and everything I can do to make the Plone project better and -stronger. This of course does not have to be the main focus of the -work, but it would be nice if some time could be allocated officially -towards these tasks.
  • -
  • Part time. Ideally I'd like to put in about 20 hours per week on -some project, and spend the other 20 hours on ACLARK.NET, ZPUGDC, -INC.
  • -
-

Above all, I am flexible. This post is about me, but I am certainly -willing to listen to what you, prospective employer, has to offer. If -there is a good fit, I am confident we can make it work.

-

I look forward to hearing from you!

-

Oh, I almost forgot, my updated resume is here: -http://aclark.net/team/aclark/resume. Or if you prefer PDF: -http://aclark.net/team/aclark/resume-pdf.

- -
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/i-need-something-to-do.rst, line 171)

-malformed substitution definition.
-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/i-need-something-to-do.rst, line 172)

-Explicit markup ends without a blank line; unexpected unindent.
-

http://screenmusings.org/ForrestGump/pages/fg_0885.htm| image:: http://blog.aclark.net/wp-content/uploads/2010/03/fg_0885.jpg -.. |image1| image:: http://blog.aclark.net/wp-content/uploads/2010/03/fg_0885.jpg

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/i-need-something-to-do.rst, line 172); backlink

-Undefined substitution referenced: "image1".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/i-need-something-to-do.rst, line 13); backlink

-Unknown target name: "|image credit: http://screenmusings.org/forrestgump/pages/fg_0885.htm|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/03/30/blood-sweat-tears-and-a-new-plone-book.html b/2010/03/30/blood-sweat-tears-and-a-new-plone-book.html deleted file mode 100644 index c038ee0..0000000 --- a/2010/03/30/blood-sweat-tears-and-a-new-plone-book.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - Blood, sweat, tears… and a new Plone book! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Blood, sweat, tears… and a new Plone book!

- -
- -
- -

Well, no blood yet. But certainly sweat and tears! If Plone Conference -2006 was my inspiration for Plone Conference 2008, then -Professional Plone Development was my inspiration for this book: -Plone 3.3 Site Administration.

-

`|image0|`_For the past 14 months or so, I have been writing a book -aimed at end users of Plone; folks that have little knowledge of how to -do much more than add content. It is intended to make them feel more -comfortable performing various site administrator tasks. Topics like -theming, maintenance, and optimization are covered.

-

But wait, there's more!

-
-

#1

-

This book aims to "lower the Plone bar for users of Python". What do I -mean by that? Basically this: I love Python almost as much as I love -Plone. It lets me translate my thoughts directly into code. I fantasize -that with little more than a Python interpreter, one can forge a working -Plone site within minutes. But it is not just a fantasy, it is (more or -less) the status quo. (Maybe even MacGyver used Python?)

-

So, this book begins at the beginning: by making sure folks are -comfortable installing and using Python on there operating system of -choice (or using the pre-installed Python). If you read Professional -Plone Development, you may recall Martin Aspeli saying at the beginning -of Chapter 3:

-
-We will assume that Python 2.4 gets invoked when you run python on -the command line.
-

This book does not make that assumption and tries to cover everything -you may need to know after installing your operating system up to that -point.

-

In Chapter 1, we cover installing and running Python on three -popular operating systems: Mac OS X 10.6 (my main squeeze), Windows 7, -and Ubuntu 9.10 (Debian is my main production server squeeze). Other -operating systems are welcome; your mileage may vary.

-
-
-

#2

-

This book is largely a response to the whole "Oh no! I have to use -Buildout to install Plone and its add-ons!" sentiment that has been -prevalent since Buildout was first introduced to Plone several years -ago. I don't know if Buildout was the "right" way to go, but I do know -that I love using it and I would like to help others feel the same way.

-

The bottom line is this: Plone made a conscious decision to "become more -Pythonic" by using eggs. With that choice came more complexity from -potential conflicts between eggs. Buildout is one solution to that -problem. Unfortunately, it introduces other problems like cryptic error -messages and a certain too-many-moving-parts-ness.

-
-
-

An aside…

-

Let me correct myself: I am fairly certain Buildout was the right way to -go at the time. What I am not sure about is where to go from here. It -would be nice to get back to a place where folks could just drop -packages in to a directory (I don't literally mean going back to -old-style products, but perhaps we could provide that type of -functionality again somehow). But I don't have an answer for that. In -the meantime, let's make everyone more comfortable with using Buildout.

-
-
-

About the rest of the book…

-

The book teaches you to find your way around Buildout and Plone. Whether -you choose to follow along and build your site from scratch using only -Buildout (and a paper clip) or if you use one of the Buildout-based -installers (like the Unified Installer), this book aims to make you more -competent and comfortable performing a variety of Buildout-related -tasks.

-

In Chapters 2-7, we present various buildout configuration files -that correspond to specific tasks that are related to various subjects, -e.g. theming, maintenance, and optimization. The reader is expected to -"know how to write a buildout.cfg file" by the end. No one that reads -the book is allowed in the #plone IRC channel afterward to ask about -buildout (you can answer buildout questions though). Kidding… I kid…

-

In the final Chapter 8, we cover new technologies like XDV and -repoze.zope2 which may become more mainstream once you decide to start -using them (although the latter seems more like a toy to keep us busy -until the real fix arrives: full WSGI support in Zope 2).

-
-
-

When will it arrive?

-

PACKT originally announced the book will arrive in March and I have been -working non-stop since mid-March to make sure it gets out the door as -quickly as possible; I expect it to be available Real Soon Now™. I -apologize to those of you who have pre-ordered and are now waiting for -it!

-

So get ready! I plan to have over 200 pages of draft material submitted -by the end of this month. I will continue to work with PACKT to address -any concerns that arise during editing. They have promised to try to -ship the book by May, so we will see how it goes. I encourage you to -pre-order now as that will go a long way to inspire them to work just -that much harder to get it done and out to you, ASAP!

-
-
-

Can I write a book?

-

Probably. For those curious about the process (as I very much was), here -is a bit about how it went for me:

-
    -
  1. A few years ago, Martin Aspeli had the idea for Practical Plone 3 and -put out a call to writers that I responded to; I ended up -contributing 2 chapters. This taught me that it was indeed a lot of -work, and I got exposed to the editing process.
  2. -
  3. A couple years ago, PACKT approached me (and several others) about -the idea for Plone Site Administration and I thought I had a good -story to tell based on my experiences, so I wrote a detailed outline -and they accepted it.
  4. -
  5. Though I had written for Practical Plone 3, I struggled to find my -voice. At the same time I had a tremendous amount of consulting work -to do to make a living. I sneaked in time to write drafts and -eventually found my voice. To be honest, the most productive work has -been done in the last 3 months.
  6. -
-

Perhaps the biggest lesson I learned was this: stop thinking and start -writing. I tend to over analyze things and spent a lot of time thinking -about "how it would go" rather than just writing it. Writing is the key. -Think less, write more (at which point your thoughts tends to flow more -naturally anyway).

-
-
-

Should I write a book?

-

Possibly. I am sensitive to the phenomenon of "Plone book diarrhea" and -I do think that there can be such a thing as too many Plone books. But I -don't think we are there yet. To me, the more books published about -Plone (by PACKT or any publisher) the better. I like to see what each -individual author brings to the story, even if the stories they are -telling tend to overlap sometimes. So for me the answer to that question -both before and after writing my book is yes. I know I am a better -writer having written it, and I certainly know more about Python, Zope, -and Plone and many other technologies.

-
-
-

In either case, you should definitely take my class.

-

If you are interested in learning more about Python and tools like -Distribute, Pip, Buildout, etc. and you want to feel more comfortable -managing your Plone site, you will not want to miss the one day class I -am teaching at Plone Symposium East 2010!

-

The book will hopefully be out by then, but the class will go on either -way.

-

Hope to see you there, and I hope you enjoy the book.

-
-
-

P.S. Looking for Plone experts? Hire ACLARK.NET, LLC.

-

Thank you, everyone, for the responses to my previous blog entry. I -have had some great conversations with some very interesting folks and I -appreciate everyone's interest. However, I wanted to encourage everyone -once more to get in touch. And also, to feel free to reach whenever -you come across this blog entry and are in need of Plone help. We are -always looking for a challenge.

-

``_

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/blood-sweat-tears-and-a-new-plone-book.rst, line 205); backlink

-Inline literal start-string without end-string.
- -
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/blood-sweat-tears-and-a-new-plone-book.rst, line 218)

-malformed hyperlink target.
-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/blood-sweat-tears-and-a-new-plone-book.rst, line 11); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/07/12/the-apache-modules-for-xdv.html b/2010/07/12/the-apache-modules-for-xdv.html deleted file mode 100644 index aefd422..0000000 --- a/2010/07/12/the-apache-modules-for-xdv.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - The Apache modules for XDV - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- The Apache modules for XDV

- -
- -
- -

`|http://beakersblog.files.wordpress.com/2010/02/consolidation.jpg|`_

-

I was recently tasked with consolidating our various business -services (website, software repository, mailing lists, ldap, etc.) on -to a single virtual machine (ostensibly to save money, although it -didn't quite work out that way). The Apache modules for XDV presented -themselves as an attractive technique to use, in helping me achieve my -goals.

-
-

Background

-

Previously, I had been blissfully running http://aclark.net with NGINX, -Plone 4 trunk, and XDV on a small virtual machine and absolutely loving -it.

-

Additionally, I had separate virtual machines for my Wordpress blog -(blog.aclark.net) and Subversion software repository (svn.aclark.net). -The isolation of these services made them easy to manage and still -relatively cheap to run them all.

-

And in fact, I have come to rely heavily on the ability to (1.) rapidly -create a virtual machine, (2.) install a bunch of vendor packages that -Just Work™, and (3.) build out whatever was left i.e. whatever could not -be easily installed via OS vendor packages. This usually translates -loosely into "I use Buildout for my Plone sites, and an OS vendor -package installer for everything else".

-

That said, even though I already knew the hazards of trying to cram too -many services on to a single "shared" host, and didn't really want to do -that dance again, it seemed reasonable at the time to at least try and -consolidate them on to a single virtual machine (it sounds crazy in -hindsight).

-
-

First choice: NGINX

-

Like I said earlier, the forked version of NGINX available on the -HTML-XSLT website is an absolute pleasure to use. But when I pondered -consolidating services I knew it would not be easy, and maybe even -impossible to run Wordpress behind NGINX.

-
-
-

Second choice: Apache

-

So I thought to myself, "I know, I'll just switch to the Apache modules -for XDV" and that will solve my PHP/Plone "integration" problems for the -time being. (Another way to solve them would be to use the XDV -middleware along with Zope 2.13's WSGI support; I will be trying -that next.)

-

But not so fast.

-
-
-
-

Problems

-

Of course, things don't always go as planned.

-
-

First problem

-

The Apache modules for XDV do not work exactly "as advertised" on any of -the "modern" OS platforms I tried (Debian, various Ubuntus, and Arch -Linux). They compile fine against the operating system's Apache, but do -not run properly. See this thread on the Deliverance mailing list -(and I challenge anyone reading this to correct me! :-D)

-

"Fine," I thought, I'll just create a buildout to deploy everything. I -wrote a book about deploying Plone websites with Buildout. This -should be easy, right?

-

Wrong.

-
-
-

Second problem

-

It's hard to create such a buildout for a variety of reasons, but most -noticeably in my mind is the "library soup" you may encounter on any -modern system. For example, I started off by trying to include all the -dependencies in the buildout. But I ended up leaving things out, like -libxml2 and libxslt relying instead on the operating system vendor -packages. Because even though I tried desperately to tell every other -dependency about the included libxml2 and libxslt2, I still ended up -with an annoying "missing symbols" error at the end (meaning I likely -missed a compiler flag along the way).

-

These errors can be very frustrating, and even worse: sporadic. -Sometimes you may inadvertently add or remove a system dependency during -the build process. So you could be relying on a system package and not -even know it until later when it is too late (i.e. when you are enjoying -some unplanned and unexpected down time).

-

So there I went again. It took several days I didn't really have, and -the results were not what I expected, but I'm still somewhat happy with -them. Now, I want to share this buildout particularly with folks -considering using the Apache modules for XDV -(http://code.google.com/p/html-xslt/). Because while it would be much -easier if the Apache modules Just Worked™ with OS vendor packages, in -the event that they don't (which is what I experienced) folks may find -this buildout helpful. (That, and Jon Stahl requested it on Facebook -:-D).

-
-
-
-

Conclusion

-

Anyway, I'm quite happy with the buildout and I am sharing it in hopes -that it will move the Apache/XDV story forward.

-

In addition to compiling Apache with mod_depends and mod_transform, it -includes Subversion, Trac, mod_wsgi, PHP and Wordpress. As I mentioned -earlier, it is not really my preference to cram all this stuff in to one -buildout, but as long as it is reliable and consistent, I don't mind it -too much. It also handles the theme compilation for a variety of -services, which is accomplished via a command recipe that executes calls -to bin/xdvcompiler.

-

Incidentally, I have no particular allegiance to, or dislike of Apache: -more like a love/hate relationship; it can be very useful in a variety -of situations, while at the same time confounding. But regardless, I -would like to see the Apache XDV modules be able to deliver the same -rock solid performance as the NGINX fork.

-

Kudos to Laurence Rowe (et al.) for the Apache modules! I hope this blog -entry will facilitate a push to get people using them with their -operating system vendor's Apache packages, which may inspire Laurence -to continue developing them, and most importantly to fix bugs ;-).

-

Normally, I like to factor out the reusable bits first, but this -buildout is presented in it's entirety as I am using it (minus some -customer bits), for whatever that is worth. Here is a look at the "main" -buildout.cfg file, most of which should be self-explanatory. Click -around this site to see the results:

-
-[buildout]
-#extends = http://svn.aclark.net/svn/public/buildout/apache/trunk/buildout.cfg
-extends = apache.cfg
-parts =
- bootstrap
- xdv
- apache
- apreq2
- apache-config
- apache-config-aclark
- apache-config-admin
- apache-config-svn
- apache-config-trac
- apache-config-ssl
- apache-config-mailman
- php
- php-conf
- mod-depends
- mod-transform
- python
- distribute
- trac
- theme-aclark
- theme-public
- theme-support
- theme-blog
- mod-wsgi
- subversion
- subversion-python
- supervisor[apache]
-configure-options +=
- --with-included-apr
- --with-ldap
- --enable-authnz-ldap
- --enable-ldap
- --enable-ssl
- --enable-dav
- --enable-dav-fs
- --enable-dav-lock[mod-depends]
-recipe = hexagonit.recipe.cmmi
-url = http://html-xslt.googlecode.com/files/mod-depends-html-xslt.tgz
-configure-options = --with-apxs=${apache:location}/bin/apxs[mod-transform]
-recipe = hexagonit.recipe.cmmi
-url = http://html-xslt.googlecode.com/files/mod-transform-html-xslt.tgz
-configure-options =
- --with-apxs=${apache:location}/bin/apxs
- --with-apr=${apache:location}/bin/apr-1-config
- --with-apr-util=${apache:location}/bin/apu-1-config
-environment-section = environment[environment]
-PATH = %(PATH)s:${apreq2:location}/bin
-LIBS = -lxml2 -lxslt[apreq2]
-recipe = hexagonit.recipe.cmmi
-url = http://www.bizdirusa.com/mirrors/apache/httpd/libapreq/libapreq2-2.12.tar.gz
-configure-options = --with-apache2-apxs=${apache:location}/bin/apxs[libxml2]
-recipe = hexagonit.recipe.cmmi
-url = ftp://xmlsoft.org/libxml2/libxml2-2.7.7.tar.gz
-configure-options =
- --with-python=no[libxslt]
-recipe = hexagonit.recipe.cmmi
-url = ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
-configure-options =
- --with-python=no[php]
-recipe = hexagonit.recipe.cmmi
-url = http://us2.php.net/get/php-5.3.2.tar.gz/from/this/mirror
-configure-options = --prefix=${buildout:directory}/parts/apache/php
---with-apxs2=${buildout:directory}/parts/apache/bin/apxs
---with-config-file-path=${buildout:directory}/etc/php.ini
---enable-mbstring --with-mysql=/usr/bin[php-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/php.ini.in
-output = ${buildout:directory}/etc/php.ini[apache-config-aclark]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/aclark.in
-output = ${buildout:directory}/etc/aclark[apache-config-admin]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/admin.in
-output = ${buildout:directory}/etc/admin[apache-config-svn]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/svn.in
-output = ${buildout:directory}/etc/svn[apache-config-trac]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/trac.in
-output = ${buildout:directory}/etc/trac[apache-config-ssl]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/ssl.in
-output = ${buildout:directory}/etc/ssl[apache-config-mailman]
-recipe = collective.recipe.template
-input = ${buildout:directory}/templates/mailman.in
-output = ${buildout:directory}/etc/mailman[ports]
-production = 80[subversion]
-recipe = hexagonit.recipe.cmmi
-url = http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz
-configure-options = --with-apxs=${apache:location}/bin/apxs
-make-targets =
- install
- swig-py
- install-swig-py[mod-wsgi]
-recipe = hexagonit.recipe.cmmi
-url = http://modwsgi.googlecode.com/files/mod_wsgi-3.2.tar.gz
-configure-options =
- --with-apxs=${apache:location}/bin/apxs
- --with-python=${buildout:directory}/parts/python/bin/python[subversion-python]
-recipe = plone.recipe.command
-libdir = ${python:location}/lib/python2.6/site-packages
-command =
- rm -rf ${subversion-python:libdir}/svn
- rm -rf ${subversion-python:libdir}/libsvn
- cp -prv ${subversion:location}/lib/svn-python/libsvn ${subversion-python:libdir}
- cp -prv ${subversion:location}/lib/svn-python/svn ${subversion-python:libdir}
-update-command = ${subversion-python:command}[python]
-recipe = hexagonit.recipe.cmmi
-url = http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz
-configure-options = --enable-shared[python-exe]
-executable = ${buildout:directory}/parts/python/bin/python[distribute]
-recipe = plone.recipe.command
-command =
- wget http://python-distribute.org/distribute_setup.py
- ${python-exe:executable} distribute_setup.py[xdv]
-recipe = zc.recipe.egg[trac]
-recipe = plone.recipe.command
-command =
- ${buildout:directory}/parts/python/bin/easy_install Trac
- ${buildout:directory}/parts/python/bin/easy_install TracSubversionLocation[theme-public]
-recipe = plone.recipe.command
-command =
- ${buildout:bin-directory}/xdvcompiler
- /srv/trac/public/theme/rules.xml
- /srv/trac/public/theme/index.html
- --output=${buildout:directory}/etc/trac-public.xsl
-update-command = ${:command}[theme-support]
-recipe = plone.recipe.command
-command =
- ${buildout:bin-directory}/xdvcompiler
- /srv/trac/support/theme/rules.xml
- /srv/trac/support/theme/index.html
- --output=${buildout:directory}/etc/trac-support.xsl
-update-command = ${:command}[theme-aclark]
-recipe = plone.recipe.command
-command =
- ${buildout:bin-directory}/xdvcompiler
- /srv/aclark/theme/rules.xml
- /srv/aclark/theme/index.html
- --output=${buildout:directory}/etc/theme-aclark.xsl
-update-command = ${:command}[theme-blog]
-recipe = plone.recipe.command
-command =
- ${buildout:bin-directory}/xdvcompiler
- /srv/blog/theme/rules.xml
- /srv/blog/theme/index.html
- --output=${buildout:directory}/etc/theme-blog.xsl
-update-command = ${:command}
-
-

You can check out the rest of the buildout here (themed with XDV -:-)). And if you enjoy this post, please feel free to pick up a copy of -Plone 3.3 Site Administration from PACKT Publishing, due out any day -now (I am expecting to review pre-finals this week some time).

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/the-apache-modules-for-xdv.rst, line 6); backlink

-Unknown target name: "|http://beakersblog.files.wordpress.com/2010/02/consolidation.jpg|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/10/15/i-reinstalled-recently.html b/2010/10/15/i-reinstalled-recently.html deleted file mode 100644 index c28796d..0000000 --- a/2010/10/15/i-reinstalled-recently.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - I reinstalled recently - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- I reinstalled recently

- -
- -
- -

And for whatever it is worth to anyone, here are the notes I took (for -the first time ever, when doing a reinstall):

-
-o System Preferences -> Organize alphabeticallyo Sync bluetooth mouseo Software update * 2
- - Reboot * 2o Install XCodeo Customize Dock
- - Add Terminal
- - Remove Mail, Photo Booth, Address Booko Restore apps (from Time Capsule)
- - Skype
- - Firefox
-   - Set home page
-   - View -> Toolbars -> Customize -> Use small Icons
-   - Preferences -> Privacy -> History -> Use custom settings for
-     history -> Uncheck all but 'remember my browsing history' and
-     'Accept cookies from sites'
-   - Preferences -> Security -> Passwords -> Uncheck remember
-     passwords for sites
-   - Set persona (I'd probably like these to rotate)
-   - Preferences -> General -> Downloads -> Show the Downloads
-     window when download a file -> Close it when all downloads are
-     finished
-   - Preferences -> General -> Downloads -> Save files to -> Desktop
- - Cisco VPN client
- - Real VNC
- - VLC
- - Textmate (sometimes handy even though i use vi)
- - Parallels
- - Ubuntu & Windows 7 VMs
- - Handbrake
- - MacTheRipper
- - Cord
- - MS Office 2004
- - iWorko svn co https://my-dot-fileso Switch shell to zsh (biggest win? Shared history between open
-  terminals)o System Preferences -> Accounts -> Show fast user switching menu as
-  Icono Install python buildout
-  (http://svn.plone.org/svn/collective/buildout/python)
- - pip-2.6 install psycopg2 and PIL 1.1.7 (the "real" PIL) for work.o Get tab completion in Python working again
- - Seems to work OK with the right stuff in .pythonrc.py and the
-   Python buildout
- - Does not seem to work with OS X' s Python 2.6.1o Configure Terminal
- - Settings -> Shell -> When the shell exits -> Close the windowo Install homebrew
- - brew install postgres
- - brew install wget
- - brew install gito System preferences -> Exposé and Spaces -> To activate spaces ->
-  Middle mouse buttono Install firebugo System preferences -> Desktop & Screen Saver -> Use random screen
-  savero Turn on the locate db (sudo launchctl load -w
-  /System/Library/LaunchDaemons/com.apple.locate.plist)o Desktop -> Finder -> View -> Show view options -> Arrange by nameo Users -> aclark -> Finder -> View -> Show view options -> Arrange
-  by name -> Set as defaulto Sign in to
- - Google
- - Twitter
- - Meetup (Why would I want to "Log in using Facebook"?)
- - Facebook  (Oh, the irony…)
- - Rackspace cloud
- - Github
- - Coactivate
- - Hulu
- - blog.aclark.net
- - netflix
-
-

After a couple weeks, I stopped taking notes (but there were inevitably -a few more steps).

-

Other items of interest: I gave up a while back on *literally* -reinstalling everything (from the internet). I just drag back -applications from my Time Capsule (also note, I purposefully do not -allow Time Machine to restore my home directory, because that feels -"dirty" to me).

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2010/11/04/a-report-on-plonetheme.html b/2010/11/04/a-report-on-plonetheme.html deleted file mode 100644 index 8d3793c..0000000 --- a/2010/11/04/a-report-on-plonetheme.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - A report on plonetheme.* - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- A report on plonetheme.*

- -
- -
- -

[caption id="attachment_486" align="alignright" width="398" -caption="Photo credit: -http://www.flickr.com/photos/adactio/2917093994/"]`|Photo credit: -http://www.flickr.com/photos/adactio/2917093994/|`_[/caption]

-

By now, most of us are familiar with XDV and how awesome it is for -theming Plone (or any website). You should also be aware that XDV has -been renamed to Diazo, and collective.xdv is now called -plone.app.theming.

-

But let us not forget the humble "old style" theme just yet! Sometimes -they come in very handy, and may even be preferable in some cases -depending on what you are trying to accomplish.

-

I just gave plonetheme.* a quick spin and thought I'd share the -process and results with anyone that might find it useful.

-
-

Step 1

-

Get a list of all the plonetheme packages on PyPI:

-
-$ pip search plonetheme
-
-
-
-

Step 2

-

Create a buildout:

-
-$ virtualenv plone-theme-test
-$ bin/easy_install zc.buildout
-$ bin/buildout init
-
-
-
-

Step 3

-

Edit your buildout.cfg to include the following:

-
-[buildout]
-extends = http://dist.aclark.net/buildout/plone/4.0.x/buildout.cfg
-parts =
- plone[plone]
-eggs +=
- ${theme:eggs}zcml +=
- ${theme:eggs}[theme]
-eggs =# Deps that the themes should have added
- collective.contentleadimage
- collective.flowplayer
- z3c.jbot#    Products.categorynavigator
-#
-# XXX Products.categorynavigator is a dep of plonetheme.mvob but it
-# has a NameError
-# ZopeXMLConfigurationError: File "/Users/aclark/Developer/packages…
-# NameError: name 'ImportException' is not defined# themes
- plonetheme.notredame
- plonetheme.fui
- plonetheme.sunburst
- plonetheme.colorcontext
- plonetheme.twinapex
-#    plonetheme.mvob
- plonetheme.peerstheme
- plonetheme.nautica05
- plonetheme.stylized
- plonetheme.labs
- plonetheme.sait2009
- plonetheme.cultureCab
- plonetheme.xtheme
- plonetheme.mimbo
- plonetheme.python
- plonetheme.terrafirma
- plonetheme.solemnity
- plonetheme.level2
- plonetheme.tidyblog
- plonetheme.andreas01
- plonetheme.blueblog
- plonetheme.delicious2
-#    plonetheme.hamnavoe
- plonetheme.greencommunity
- plonetheme.subordinate
- plonetheme.bluegray
- plonetheme.p2
- plonetheme.aclark_twitter
- plonetheme.relic
- plonetheme.classic
-#    plonetheme.simplicity
- plonetheme.netsightintranet
- plonetheme.keepitsimple
- plonetheme.andreas02
- plonetheme.essay
- plonetheme.ReOrg
-#    plonetheme.Bangalore
- plonetheme.nonzero
- plonetheme.cleantheme
- plonetheme.minimalist
- plonetheme.inbusiness
-#    plonetheme.corporatemale
- plonetheme.portaltwodotoh
- plonetheme.rcom
- plonetheme.equipoteih
- plonetheme.pyar
- plonetheme.basic# XXX plonetheme.GreenEarthTheme3_0 has zope.configuration.config…
-# error
-#    plonetheme.GreenEarthTheme3_0
-#zope.configuration.config.ConfigurationExecutionError: <type …
-#  in:
-#  File "/Users/aclark/Developer/packages/plonetheme.GreenEarthTheme…
-#     <cmf:registerDirectory
-#         name="GreenEarthTheme3_0_templates"/> plonetheme.criticas
- plonetheme.gemstone
-#    plonetheme.bronzecube
- plonetheme.lithium
- plonetheme.overlappedtabs
-
-
-
-

Step 4

-

Run buildout; start Plone; play around!

-
-
-

Conclusion

-

The whole effort (including writing the blog post) took only an hour or -two, for whatever that is worth (not including the actual theme review, -unfortunately!). I find the results interesting and I thought you might -too.

-
-

Process

-
-

Dependencies

-

You'll notice in the [theme] section, comments about various -packages that were not included with all of the various themes.

-

As far as I can tell, it is in the best interest of "old style" theme -developers to specify these packages in their setup.py files with the -install_requires parameter!

-

OK, it's actually in my best interest because then I have to do less -work, but you get the idea.

-
-
-

Broken or missing packages

-

The plonetheme.* packages that are just commented out (without an -XXX note) did not make it past the bin/buildout step (for whatever -reason, usually a broken package).

-
-
-
-

Themes

-

My favorite theme (right after plonetheme.aclark_twitter, that is) is… -nevermind! I wanted to report on that but I still have to go through all -the themes! (By installing each one at a time, testing, then -uninstalling before moving to the next one.)

-
-
-

Packaging

-

Just my opinion, but if you are adding functionality to Plone, it's -probably not (just) a theme. So I would separate that functionality from -your plonetheme.* code.

-
-
-

Problems

-
-

jbot modifies default Plone theme?

-

I've noticed this before in both Plone Classic and now Sunburst when -jbot is installed. No idea what the actual cause is:

-

[caption id="attachment_492" align="aligncenter" width="537" -caption="Why jbot why!?"]`|Why jbot why!?|`_[/caption]

-
-
-
-

Disclaimer

-
-

Designed for Plone 4?

-

Before you say it (I know you are thinking it), I know not all of these -themes are designed to work with Plone 4. I dont' have a good answer -about how to approach that problem (I just know that when looking for -themes, I don't really care. I just "want it to work".)

-
-
-

Bug report please?

-

I know, I know. I should open a ticket for the jbot thing.

-

And now off to play!

-

[caption id="attachment_501" align="aligncenter" width="192" -caption="Installable themes in Plone 4"]`|Installable themes in Plone -4|`_[/caption]

-

P.S. I will report on the install process in the comments.

-

So far, Andreas installed, worked, and looked nice while Bluegray -Theme 1.0.0b2 required a ZMI undo ;-)

- -
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 235)

-malformed substitution definition.
-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 236)

-Explicit markup ends without a blank line; unexpected unindent.
-

http://www.flickr.com/photos/adactio/2917093994/| image:: http://blog.aclark.net/wp-content/uploads/2010/11/2917093994_ffe4d2ff52_o.jpg -.. |Why jbot -why!?| image:: http://blog.aclark.net/wp-content/uploads/2010/11/Screen-shot-2010-11-04-at-10.35.12-AM.png -.. |Installable themes in Plone -4| image:: http://blog.aclark.net/wp-content/uploads/2010/11/Screen-shot-2010-11-04-at-10.34.14-AM.png -.. |image3| image:: http://blog.aclark.net/wp-content/uploads/2010/11/2917093994_ffe4d2ff52_o.jpg -.. |image4| image:: http://blog.aclark.net/wp-content/uploads/2010/11/Screen-shot-2010-11-04-at-10.35.12-AM.png -.. |image5| image:: http://blog.aclark.net/wp-content/uploads/2010/11/Screen-shot-2010-11-04-at-10.34.14-AM.png

-
-
-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 236); backlink

-Undefined substitution referenced: "Why jbot why!?".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 236); backlink

-Undefined substitution referenced: "Installable themes in Plone 4".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 236); backlink

-Undefined substitution referenced: "image3".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 236); backlink

-Undefined substitution referenced: "image4".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 236); backlink

-Undefined substitution referenced: "image5".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 6); backlink

-Unknown target name: "|photo credit: http://www.flickr.com/photos/adactio/2917093994/|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 193); backlink

-Unknown target name: "|why jbot why!?|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-report-on-plonetheme.rst, line 222); backlink

-Unknown target name: "|installable themes in plone 4|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/01/19/new-website-for-2011.html b/2011/01/19/new-website-for-2011.html deleted file mode 100644 index e8369ae..0000000 --- a/2011/01/19/new-website-for-2011.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - New website for 2011! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- New website for 2011!

- -
- -
- -

Edit: In addition to "cool overlays", I added a couple Plone-core todo -items (that I may like to PLIP/implement)

-
-

Purpose-driven

-

Since December 23, 2010, a new website has been in development at -ACLARK.NET, LLC. It took approximately one month to complete; and we are -proud to present it to the world today! We are particularly proud that -this website can serve a dual-purpose: to make us look good, and to -serve as an example of how easy and fun it is to install and use Plone.

-
-
-

Look ma, no package!

-

One of the requirements I had in developing a new website was that I -would ditch my old Products.aclark_net package in favor of… nothing. -(Sort of.)

-

What I mean is, the entire website was developed and deployed within a -single, small buildout: -https://github.com/aclark4life/aclark_net_website.

-

The buildout is meant to be instructional (!) so if you have questions, -please ask them in the comments.

-

-[buildout]
-# Extends import buildout config files from elsewhere
-extends =
-#    http://dist.aclark.net/build/plone/4.1.x/buildout.cfg
-    http://dist.aclark.net/build/plone/4.1.x/zeo.cfg
-    http://good-py.appspot.com/release/collective.xdv/1.0# Parts define what this buildout does
-parts += trac xdv staging production blog[plone]
-# Eggs are Python packages
-eggs +=
-# "New style" theming in Plone
-    collective.xdv
-# "New style" template overrides
-    z3c.jbot# Plone is a modern web application that uses the Zope Toolkit
-# internally to provide complex functionality in a manageable way.
-#
-# The Zope Toolkit features the Zope component architecure; and
-# components are configured via the Zope Configuration Markup Language (ZCML).
-#
-# Rather than create a Python package to do simple customizations, we add
-# our ZCML here and the plone.recipe.zope2instance will add it to our
-# Zope 2 instance configuration file(s) for us whenever we run bin/buildout.
-zcml-additional =
-# Add static resource dir
-    <configure
-        xmlns:browser="http://namespaces.zope.org/browser"
-    >
-    <browser:resourceDirectory
-        name="static"
-        directory="${buildout:directory}/static"
-    />
-# Add custom templates dir
-    <include
-        package="z3c.jbot"
-        file="meta.zcml"
-    />
-    <browser:jbot
-        directory="${buildout:directory}/templates"
-    />
-    </configure>[blog]
-# Compile the blog theme
-recipe = plone.recipe.command
-command =
-    bin/xdvcompiler -r theme/rules/blog.xml -t theme/templates/blog.html -o theme/blog.xsl
-update-command = ${:command}[trac]
-# Compile the trac theme
-recipe = plone.recipe.command
-command =
-    bin/xdvcompiler -r theme/rules/trac.xml -t theme/templates/trac.html -o theme/trac.xsl
-update-command = ${:command}# This creates bin/xdvcompiler
-[xdv]
-recipe = zc.recipe.egg# Hostout makes Fabric integration easy
-[staging]
-recipe = collective.hostout
-host = aclark.net
-path = /srv/staging[production]
-recipe = collective.hostout
-host = aclark.net
-path = /srv/aclark_net_website[versions]
-plone.registry = 1.0b4
-plone.app.registry = 1.0b5
-
-
-
-

Diazo

-

For the first time ever, I decided to try deploying Diazo (formerly XDV) -within Plone itself. That meant installing collective.xdv in Plone -and pointing it to a rules.xml file. This only works for Plone, though. -Wordpress and Trac are still themed outside Plone, by compiling their -themes with xdvcompiler and pointing Apache to the resulting .xsl files.

-
-
-

Content

-

I am obsessive about content. I am also obsessive about simplicity. And -in today's world of need-it-now, I have become conditioned to "do" -now and ask questions later (which is not always recommended, by the -way). That meant that for this website, rather than migrate content -(which in some cases was contained in custom fields added by Archetypes -schema extender) I opted to setup a "clean" Plone and copy/paste/edit -content.

-

On a small site like ours, this was a no-brainer for me. But it -definitely exposes a weakness of Plone. Now that theming has improved, -we really need a better "content story". To me, that is starting to mean -focusing on satisfying a "simple" use case like exporting and importing -content in Plone. There are folks working on this of course, it just -needs to advance to the point where we can offer it in the Plone core -IMHO.

-
-
-

Todo

-

Of course there is always more to do. The first thing that jumps out -that is missing from this deployment is "cool (Javascript) overlays" or -"pop-ups," depending on who you ask. I didn't have time to add them -prior to launch, but I will most likely add them later because I can.

-

A couple more Plone-core related features I would love to see -implemented (technically, Diazo is not in the core yet):

-
    -
  • I want to add GenericSetup (GS) profiles outside Python packages -(i.e. in the buildout via ZCML). Currently GenericSetup expects to be -passed a context which is (I think) the old-style Zope 2 product -object in the ZODB. But I can't think of a reason why GS couldn't be -made to work sans that requirement (I'm just speculating though, I -haven't looked at the code yet).
  • -
  • I wish Diazo (collective.xdv) could be configured via GenericSetup. -I'd like to configure the path to the rules.xml file in something -like profiles/default/diazo.xml such that when a Plone site is -created and the Diazo import step is run, the path to the rules file -is set automatically.
  • -
-
-

Conclusion

-

This is certainly one of the most fun times I've head developing a Plone -website (which is nice when you are in the Plone website business). I -attribute that directly to all of the awesome folks involved in the -project. I can't list everyone here, but I will "shout out" to some of -the folks who I think were instrumental in getting us here: Eric Steele -& the entire Plone 4 framework team, for their work on Plone 4. Hanno -Schlichting for making Plone fast again. Martin Aspeli and Laurence Rowe -for Diazo. And David Glick, for being "always on" (and my own personal -devil's advocate).

-

And really, everyone involved in the Plone project on a day to day -basis. Plone development and consulting can be frustrating at times, but -more often than not it is a magical experience, due in no small part due -to the seemingly never-ending supply of cool and dedicated folks.

-
-
-

A look back

-

Also, I've been doing this long enough now that it's now very -entertaining (to me at least) to look back at the various incarnations -of the ACLARK.NET, LLC website over the years (these are guestimates):

-
    -
  • Circa 2006: Plone 2.5 with a Cereblue skin I purchased for $50 :-)
  • -
  • Circa 2007: Plone 3.0 with a custom "old style" theme that I designed -(and I'm not a designer).
  • -
  • Circa 2008: Plone 3.3 with XDV (now Diazo) plus "open source" theme.
  • -
  • Circa 2011: Plone 4 with collective.xdv, z3c.jbot, and "open source" -buildout and theme, and nothing else.
  • -
-
-
-
-

To the future

-

Onwards Plone team! Here is to 2011.

-

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/01/21/help-alex-clark-help-plone.html b/2011/01/21/help-alex-clark-help-plone.html deleted file mode 100644 index 7f71327..0000000 --- a/2011/01/21/help-alex-clark-help-plone.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - Help Alex Clark help Plone - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Help Alex Clark help Plone

- -
- -
- -

It's been a few years since I last attended a Plone sprint. And that is -by no means for lack of desire. I fantasize about spending a year -attending every Plone (and Python) related event on the planet, but I've -got a ways to go before I can make that dream a reality.`|image0|`_

-

In the meantime, I'm excited to announce that the stars have aligned in -February 2011 and I am planning to attend the Cioppino sprint AKA -West Coast "Snow" Sprint (plane tickets purchased!)

-

But, I really need everyone's help to make this trip a success. While I -would love to be able to afford it, our financial stars have not aligned -for February 2011 and I will be seeking donations in order to offset the -cost of travel and lodging.

-

I'll be spending (at least) two full days working on Plone-related -tasks, for whatever you can guestimate that may be worth (in a -consulting context.) And in addition to helping out however I can with -thescheduled tasks, I have a long list of admin tasks I would like -to try and tackle:

- -
-

Why you should donate

-

Time I donate to the Plone project is a labor of love, but there are -"real world" implications. If you have enjoyed, or otherwise benefited -from any of the following, I would appreciate your generous contribution -right now; very, very much!

-
    -
  • Plone.org website maintenance: I spend a lot of time wrangling -troops and performing feats of great maintenance on plone.org: -http://svn.plone.org/svn/plone/plone.org/Products.PloneOrg/trunk/
  • -
  • Plone.org systems maintenance: I consider myself a provider of -great services for a great community. I've made a very significant -effort to try and improve the services that volunteers are able to -provide for such a great community. In documentation, and in deed I -plan to  keep doing this for at least all of 2011: -http://admin-docs.plone.org.
  • -
  • Plone software technical support: I spend a great deal of time -trying to de-mystify Plone technology for the masses. Early adoption -is part of this process. I like to see Plone moving forward and I -like to see others embracing that move: -http://blog.aclark.net/2011/01/19/new-website-for-2011/
  • -
  • And much, much more! I try to do as much for Plone as I can -because it does a lot for me. I've organized a conference and -written a book and I expect to be active in the community for at -least the rest of 2011, and most likely4life.
  • -
-
-
-

How much should you donate

-

I am trying to raise $1,000 USD to cover the following:

-
    -
  • Plane tickets: approximately $400 USD.
  • -
  • Housing: approximately $400 USD.
  • -
  • Food and miscellaneous travel expenses: approximately $200 USD.
  • -
-

I would appreciate any amount you can afford to give, to -help-me-help-Plone be as great as it can be!

-

Please use the Chip-in below, or if you prefer (for all you -anti-flash-ites), you can donate directly via PayPal with my email -address: aclark@aclark.net.

-

Thank you all, very much, in advance.

-

Alex Clark (January 2011)

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/help-alex-clark-help-plone.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/01/25/you-should-buy-quotplone-3-for-educationquot-right-now.html b/2011/01/25/you-should-buy-quotplone-3-for-educationquot-right-now.html deleted file mode 100644 index 51c8803..0000000 --- a/2011/01/25/you-should-buy-quotplone-3-for-educationquot-right-now.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - You should buy "Plone 3 for Education" right now - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- You should buy &quot;Plone 3 for Education&quot; right now

- -
- -
- -

`|image0|`_With what must be the fifth or sixth round of apologies to -both Erik Rose and PACKT publishing for the delay (very sorry guys), -here is my review! Better late than never.

-

I get bored with the same ol' blog entry titles:

-
-"A review of so and so's book, by such and such…"
-

Not that there is anything wrong with these titles, they serve their -purpose. It's not you… it's me. Can we still be friends?

-

Anyway, I will cut to the chase with this one: if you care about Plone -and you have not done so already, you should buy `Plone 3 for -Education`_right now.

-

Why?

-

Several reasons:

-
    -
  • Erik Rose cares about Plone. He cares so much, he spent months of his -life pouring his professional experiences into a book so you can -benefit!
  • -
  • PACKT publishing will donate a percentage of the proceeds to the -Plone Foundation.
  • -
  • You will learn a lot about Plone, from the perspective of someone who -has supported its deployment and maintenance within a large -educational institution.
  • -
-

That is not to say every Plone book is for you. You have to decide for -yourself if you want this beautiful creation (see above) of Erik's to -shine on your mantle piece for years to come. Even if you are a giant -Plone supporter, and even if you make your living off of Plone, you may -still not want to purchase this book. That's just the way that it goes. -But, I will to try to convince you anyway! Here is my chapter-by-chapter -review:

-
-

Preface

-

The preface sets the tone of the book, and I like the tone Erik sets. -Erik has used Plone for many years at Penn State and you will find -his experiences valuable. He's made mistakes so you don't have to!

-
-
-

Chapter 1

-

Chapter 1 covers creating courses (of course!) Erik makes the argument -that Plone can hold it's own against expensive course management -software, and I believe him. Of particular interest are Erik's -recommendations to:

-
    -
  • Put courses in large Plone folders
  • -
  • Use news items, events and collections in the context of a course.
  • -
  • Cut and paste the course framework once you are done creating it.
  • -
-
-
-

Chapter 2

-

Chapter 2 introduces calendaring in Plone, and Erik suggests using -Plone4artists calendar to make your course content easily browsable. -Of particular interest are Erik's recommendations to:

-
    -
  • Replace the stock Plone events folder (which is a collection -contained within a folder) with (just) a collection.
  • -
  • Make clever use of keywords to support lots of events.
  • -
  • Reorder subfolders in a collection "the hard way". (Also interesting -that he opened this ticket: -https://dev.plone.org/plone/ticket/9109and that it has received -no "love" to date. Perhaps the new collections UI: -http://dev.plone.org/plone/ticket/10902 will save the day!)
  • -
-
-
-

Chapter 3

-

Chapter 3 showcases the Faculty/Staff Directory (FSD) add-on for -Plone which allows you to create an online personnel directory. Of -particular interest is Erik's explanation of how to categorize and -correlate people within FSD.

-
-
-

Chapter 4

-

Chapter 4 covers customizing Faculty/Staff Directory. Of particular -interest is Erik's coverage of AT Schema Extender(which is a great -way to customize Plone these days).

-
-
-

Chapter 5

-

Chapter 5 covers blogs and forums. Of particular interest is Erik's -coverage of Scrawl, and the need to exercise extreme caution when -installing add-ons (always good advice).

-
-
-

Chapter 6

-

Chapter 6 covers audio and video. Of particular interest is Erik's -coverage of collective.flowplayer which makes Flowplayer easy to -use in Plone.

-
-
-

Chapter 7

-

Chapter 7 covers forms. Of particular interest is Erik's comparison of -PloneFormGen to Archetypes content objects, and his explanation of -when to use one over the other.

-
-
-

Chapter 8

-

Chapter 8 covers theming. Of particular interest is Erik's coverage of -"new style" template customizations via z3c.jbot (which you don't -even need a package for!)

-
-
-

Chapter 9

-

Chapter 9 covers deployment. Of particular interest is Erik's coverage -of a typical production software stack that includes ZEO, Zope2, Apache -and of course Plone. Also covered is CacheFu, which has been superseded -by plone.app.caching in Plone 4.

-
-
-

Chapter 10

-

Chapter 10 covers maintenance. Of particular interest is Erik's coverage -of collective.recipe.backup to automate the creation of repozo -scripts. I would add to that, you can use z3c.recipe.usercrontabto -automate the creation and removal of cron jobs to execute those scripts.

-
-
-

Conclusion

-

All in all, I enjoyed reading this book. And, I appreciate whenever a -member of the community shares his/her experiences. So thank you, Erik!

-

That's it! I hope you will consider purchasing a copy of Plone 3 for -Education right now.

-

And if you enjoyed reading this review, please consider `helping me -help Plone in February 2011.`_

-

Alex Clark (January 2011)

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/you-should-buy-plone-3-for-education-right-now.rst, line 6); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/01/26/hostout-rules.html b/2011/01/26/hostout-rules.html deleted file mode 100644 index 4050161..0000000 --- a/2011/01/26/hostout-rules.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - Hostout rules - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Hostout rules

- -
- -
- -

As in "dominates", not a "list of rules" :-)

-

I spent a long time avoiding collective.hostout for reasons I will -call "technical stylistic differences" with the author Dylan Jay.

-

But then I grew up (and in cases of Plone growth like this, I usually -end up crediting the probably-much-younger-than-me-in-years, -but-certainly-much-more-possessive-of-sage-like-wisdom-than-me-Martin-Aspeli; -and this time is certainly no exception. So thanks Martin!)

-

As it turns out, Hostout (as I like to call it now, because we are on a -first name basis) is awesome! Let me break down the awesomeness for you.

-
-

Buildout

-

It starts with Buildout. I won't bore you with the details of why -Buildout is awesome, but I will mention one key feature:

-
    -
  • INI-style configuration, y'all.
  • -
-

Sometimes you just want to specify something like:

-
-[foo]
-bar = baz
-
-

and be done. I am not making this up folks. There is something about -INI-style configuration that transcends time and space, and reaches -across partisan-aisles to bring folks together in a "let's just get this -done" sort of way. Of course not everyone likes them, but if you are a -technical person and don't like them, I guarantee you at least -understand them and can see why they might be appropriate in some cases -over another technology.

-

Anyway, back to the awesomeness.

-
-
-

Fabric

-

Fabric is awesome! I won't bore you with the details of why Fabric is -awesome. But I will mention one key feature:

-
    -
  • SSH, people. SSH.
  • -
-

Sometimes you just want to type:

-
-$ fab -H foo.com bar
-
-

and be done. Fabric lets you execute the Python code you wrote in a -function called "bar", inside a (local) file called fabfile.py, on a -(remote) host called foo.com. All with the touch of a button, so to -speak. That is to say, you create a local fabfile.py file, and Fabric -runs the code remotely for you on any number of hosts you give it. -Brilliant.

-

Now, what could be better than these two technologies? These two -technologies together, that's what. (See where I am going with this?) -And what could be better than joining these two technologies? Joining -them with absolutely no effort required on your part whatsoever, -that's what.

-

I have a long history of touting software that makes my job (and life) -easier, and Hostout fits right in with that tradition. I'm just sorry it -took me this long to try it out.

-
-
-

Hostout

-

As compelling as it is to write "pure Python" in fab files, and it is, -sometimes you just want to be done. And Hostout helps you get there. I -will explain in a minute, but first a slight detour.

-
-

Back story

-

I recently blogged about the relaunch of this website here. Shortly -after the launch, I realized I needed a quick and easy way to deploy my -staging site to production. I pitched the idea of a utility called -"mr.pusher" to accomplish this task to Dylan, with the caveat that I was -interested in making it work with Hostout.

-

As it turns out, between Hostout and a recipe I created years ago called -collective.recipe.rsync, "mr.pusher" almost already existed. Now back -to the story.

-
-
-

Fabric integration made easy

-

Since I knew I wanted to be able to execute a "push" command remotely, I -figured I would finally get acclimated with Hostout.

-

After a small wrestling match in my head with the docs, I came up with -this:

-
-# Hostout makes Fabric integration easy
-[staging]
-recipe = collective.hostout
-host = aclark.net
-path = /srv/staging[production]
-recipe = collective.hostout
-host = aclark.net
-path = /srv/aclark_net_website
-
-

At this point (after running buildout) I was able to perform such great -feats of remote administration (on my already-deployed-sans-hostout -sites) as:

-
-$ bin/hostout staging run git pull
-$ bin/hostout staging run bin/buildout -c staging.cfg
-
-

Armed with this ability, I added the following to my staging.cfg:

-
-# Create scripts to deploy staging data to production.
-# Be VERY careful with this. You could easily overwrite your
-# live production data if you either forget to use the script
-# option, or accidentally run the bin/rsync-filestorage-to-production
-# script without stopping the production site first.
-[filestorage-to-production]
-recipe = collective.recipe.rsync
-source = var/filestorage/Data.fs
-target = ../aclark_net_website/var/filestorage/Data.fs
-script = true[blobstorage-to-production]
-recipe = collective.recipe.rsync
-source = var/blobstorage/
-target = ../aclark_net_website/var/blobstorage/
-script = true
-
-

The result was two scripts I could use to "push" staging to production, -but only after stopping the production site first:

-
-$ bin/hostout production run bin/supervisorctl shutdown
-$ bin/hostout staging run bin/rsync-filestorage-to-production
-$ bin/hostout staging run bin/rsync-blobstorage-to-production
-$ bin/hostout production run bin/supervisord
-
-

And we're deployed! This technique is particularly elegant when used in -combination with acustom 503.

-
-
-
-

Conclusion

-

I really like this setup, and I really appreciate what Hostout gets me -"for free"; I didn't have to create a fabfile.py, I just configured my -staging and production host parameters in buildout.cfg and off I went.

-

Of course, there is always room for improvement. The next most logical -step for me would be to add cloud integration. If I could provision a -new Rackspace cloud server via buildout, and then host-it-out, I think -the future will have arrived. And since that is exactly what -hostout.cloud appears to do, welcome to the future!

-

Alex Clark (January 2011)

-

Did you enjoy reading this article? Please consider `helping me help -Plone in February 2011`_.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/01/31/in-defense-of-pypi.html b/2011/01/31/in-defense-of-pypi.html deleted file mode 100644 index 98f63bb..0000000 --- a/2011/01/31/in-defense-of-pypi.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - In Defense of PyPI - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- In Defense of PyPI

- -
- -
- -

Everyone on the Python Planet is probably already familiar with Peter -Fein's recent article about PyPI use (or lack thereof). But in case -not, particularly striking was the number of folks who joined the "PyPI -bashing" in the comments. In fact, it has inspired me to write this post -"in defense of PyPI". I would like to offer the Python community a -summary of what I think are the general criticisms, along with my -responses as a "sysadmin / developer type".

-

First let me say this: I love PyPI! And I agree with Peter, if your -package isn't on PyPI it  "doesn't exist". I wouldn't put it quite like -that; but I would say it's fairly important if you are publishing open -source Python code, to consider uploading it to the Python Package -Index.

-

Why?

-
-

Because Everybody Wins

-

Believe it or not, the general Python community is interested in seeing -your code. Whether to use it for an example, or to avoid reinventing the -wheel, or whatever the reason; we'd like a chance to see your code. But -if you don't publish it to PyPI, we may never get that chance!

-

For better or worse, PyPI is the canonical place on Earth for Python -packages. It's the CPAN of Python. I understand that not everyone is -100% comfortable with this, but that doesn't make it any less true. If -you accept that "open source is good", and that "Python rules", then you -simply must take this next leap of faith: "PyPI is the place for -Python packages".

-

[waves hand]

-

Moving on, why else should you consider uploading your packages to PyPI?

-
-
-

Because It Is The "Right" Thing To Do

-

Another thing that struck me is the number of folks who (appear to) -confuse "version control" with "distribution". If I'm not mistaken, -Launchpad, Github, and Bitbucket are primarily designed for Bazaar, Git, -and Mercurial hosting respectively. These sites can host your -distribution tarballs, but they certainly weren't designed and built -to do so. Rather, they were designed and built to host your source code.

-

In some cases, a project may wish to host it's own distribution -server. Whether it be for redundancy (although PyPI has begun to -tackle this) or "branding" or other reasons, I would argue this is the -preferred way of handling it: in addition to uploading to PyPI, not in -place of it.

-

Why?

-
-
-

Because It Is Not That Hard

-

Ahem… we get it. The situation with easy_install is "less than ideal". -But this is something to be fixed, not avoided. If you are receiving too -many support requests, may I suggest simply telling people not to use -easy_install. Or, if the problem is proper packaging, learn how to -test your packages before uploading them. Due to the large number of -screwed up releases I've made, I've come to rely on alocal PyPI and -a virtualenv to test installations. Others use even simpler methods. -And with tools like mkrelease, it's easy to upload your package to -multiple PyPI locations with just a single command (although -leaping-tall-buildings-in-a single-bound is not yet supported.)

-

The point is, please consider helping the community fix the problem -rather than simply avoiding it. There are folks actively trying to -improve the situation right now.

-

Let's see, what else?

-
-
-

Because It Does Not Have To Be Perfect

-

Over the years I've seen various and sundry criticisms of the PyPI user -interface. Fine. I have not looked into the current development process, -but I assume the author/maintainers would be open to some constructive -criticism and/or development assistance.

-

It doesn't have to be Github-sexy to be useful. If you would like to -report a bug or feature request, do it here (at least, I think that -is the right place.)

-
-
-

Conclusion

-

I hope this convinces at least some folks to consider uploading their -packages to PyPI. If it doesn't, please let me know why in the comments.

-

Did you enjoy reading this article? If so, please consider `helping me -help Plone`_.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/02/16/cioppino-sprint-report.html b/2011/02/16/cioppino-sprint-report.html deleted file mode 100644 index 8c81487..0000000 --- a/2011/02/16/cioppino-sprint-report.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - Cioppino Sprint Report - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Cioppino Sprint Report

- -
- -
- -

The Cioppino Sprint was recently held in Bodega Bay, CA. It was a -beautiful location for a gathering of awesome Plone folks; and much -was accomplished. Unfortunately on the second morning of the sprint, we -were all deeply saddened to hear about the passing of Dorneles Treméa.

-
-

The passing of Dorneles Treméa

-

I didn't know Dorneles very well, but he was certainly someone I -idolized during my initial Plone fascination days (e.g. "Who are all -these cool people with such cool names!"). And after digging through my -old emails, I now remember we had several pleasant exchanges over the -years.

-
-

Memories

-

In particular, I have this memory of Dorneles and Alan Runyan sitting -together at the Plone Conference 2008 sprint, smiling and working on -their laptops. Before his death, it was just a random image that would -occasionally pop into my head. Now, it's something I'll remember him by.

-

We also corresponded briefly about his ExternalStorage add-on for -Plone, around the time we upgraded plone.org from Plone 2.5 to Plone 3.0 -(circa 2008), as well as traded emails about his invitation to attend -Plone Conference 2008 in DC (for his visa application).

-

The funniest thing he ever said to me was when I was making the rounds -asking for donations for Plone Conference 2008. He replied,

-
-"Are you aware that you're talking with a 3rd world citizen?"
-

I'm not sure if I offended him, or what. But it struck me funny at the -time (and he went on to joke about how donations usually flow in the -other direction, ending with his tongue stuck out i.e. ":-p") :-). It -also reminded me of one the things I love most about Plone: the -opportunity (I may never get otherwise) to correspond/collaborate with -cool, passionate people all over the world.

-

To me, Dorneles was one of the living embodiments of the coolness and -worldliness of the Plone project.

-
-
-

Wishes

-

My condolences and best wishes to his family, I hope you know how much -he meant to so many folks in the Plone and Python communities. And just -how many lives he touched with his work. And goodbye Dorneles; though I -knew you very little, I will miss you very much. May your legacy live -on, long in to the future.

-

Incidentally, if you would like to give money to help support Dorneles' -family in the aftermath of this tragedy, you can do so here: -http://associacao.python.org.br/doacoes-familia-dorneles.

-

Anyway, the sprint (or at least my part of it) was awesome! Amidst the -very sad and shocking news of Dorneles' passing, we all kept busy with -our work.

-
-
-
-

Sprint report

-

`|image0|`_It's a bit overwhelming to try and capture everything that -happened (and I was only there for two days!); hopefully this report -will be useful.

-

The focus of this sprint was evaluator approachability (i.e. making -Plone look good to prospective new users).

-
-

Day 1 and Day 2

-

Steve McMahon (SteveM) was our host. Alex Limi (limi) provided general -direction regarding strategies to improve plone.net, documentation, and -end user support. But most importantly, he pointed out that the first -stop for any prospective new user is the website, so it's important that -it look good.

-

David Glick (davisagli) and Elizabeth Leddy (eleddy) wasted no time in -diving in to the 150 or so open tickets in the (now defunct) plone.org -issue tracker.

-

I (aclark) quickly fell into the role of the "deployment witch" (a role -I enjoy), and suggested people simply push the ACLARK button (née -Staples Easy Button) whenever they needed their code deployed to -plone.org.

-

We closed a good number of tickets this way.

-

Additionally:

-
    -
  • Ross Patterson (zenwryly) grabbed a hold of the PloneOrg add-on -(the add-on that powers plone.org) and added tests (among other -things).

    -
  • -
  • Tyler Randles (hennaheto) and Trish Ang (feeeeesh) fixed a number of -CSS annoyances, which were committed by SteveM (while Tyler & -Trish pondered core commit access). My favorite of which is the -now-blissfully-aligned username and password fields of the -login_form:

    -

    [caption id="attachment_1712" align="aligncenter" width="368" -caption="Ahhhh… alignment."]`|image1|`_[/caption]

    -
  • -
  • zenwryly fixed the team section of plone.org.

    -
  • -
  • davisagli completed the last remaining task to fix -PloneSoftwareCenter permissions on plone.org (the sharing tab -finally works now!)

    -
  • -
  • limi fixed a CSS sprite issue on plone.org (involving https, I -think).

    -
  • -
  • SteveM tackled SSL certificate issues on plone.org.

    -
  • -
  • aclark took a stab at plone.net by converting the old style add-on -Product that powers it to a new style Egg package. zenwryly then -took that ball and ran with it, added tests and otherwise prepared -for the future (i.e. Plone 4 compat).

    -
  • -
  • Jon Stahl (remotely) added a "follow" section to plone.org.

    -
  • -
  • hennaheto and feeeeesh produced this amazing (but possibly -non-compliant) sprint logo:``_

    -
    -

    System Message: WARNING/2 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 152); backlink

    -

    Inline literal start-string without end-string.

    -
    -

    [caption id="attachment_1763" align="aligncenter" width="367" -caption="Cioppino sprint logo"]`|image2|`_[/caption]

    -
  • -
-
-
-

Day 3, Day 4 and Day 5

-

Unfortunately, I had to leave on Friday morning but these are some of -the things that happened after I left. Most importantly, Tom Kapanka -(spanktar) arrived Thursday night and Bill Deegan arrived on Friday. And -then:

-
    -
  • zenwryly updated PloneServicesCenter to Plone 4.

    -
  • -
  • limi and zenwryly replaced images of "showcased sites" in -PloneServicesCenter with a web screenshot service to eliminate the -need for storing images. (This move is still in progress, and various -folks are working on issues with the web screenshot service. Please -be patient!)

    -
  • -
  • zenwryly and limi moved content from plone.net to plone.org.

    -
  • -
  • aclark (remotely) pulled the DNS trigger on plone.net (re-configured -A records for plone.net, to resolve to the same IP as plone.org)

    -
  • -
  • eleddy and spanktar created and released -cioppino.twothumbs``_to facilitate "thumb style" (up/down) -ratings in PloneSoftwareCenter.

    -
    -

    System Message: WARNING/2 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 183); backlink

    -

    Inline literal start-string without end-string.

    -
    -
  • -
  • davisagli made it so Plone can start without PIL (via fixes to -PlonePAS and plone.app.blob). And these fixes even made it in to -Plone 4.1a3! To be clear, Plone still requires PIL to render images -but it will start if it's missing.

    -
  • -
  • davisagli and eleddy refactored the PloneOrg buildout

    -
  • -
  • Bill and limi moved the remaining old Plone installers from -Sourceforge to dist.plone.org.

    -
  • -
-
-
-

Post-sprint sprinting

-

One of the great things about a sprint is that it really focuses -attendees on accomplishing their tasks, long after they have left the -event. To that end:

-
    -
  • aclark triaged the remaining tickets in the plone.org tracker, and -did a final tally of closed ticket rankings: davisagli (55), aclark -(32), eleddy (28), limi (7). davisagli wins! :-)

    -
  • -
  • aclark got inspired to begin uploading the half dozen or so missing -videos from various Plone Conference 2008 talks (which were finally -sent to him by the video company circa last year). Look for these to -land on plone.org soon.

    -
  • -
  • eleddy continued to develop the “two thumbs” feature.

    -
  • -
  • eleddy and aclark deployed the "two thumbs" feature to plone.org. -(This feature may not work as expected yet, eleddy is resolving -issues.) Check it out:

    -

    [caption id="attachment_1941" align="aligncenter" width="368" -caption="Who's got two thumbs and likes -Plone?"]`|image3|`_[/caption]

    -
  • -
  • limi continued to improve the documentation/ and support/ sections of -plone.org. Here are some screenshots of how the new sections will -look once they launch:

    -

    [caption id="attachment_1948" align="aligncenter" width="336" -caption="New support section"]`|image4|`_[/caption]

    -

    [caption id="attachment_1951" align="aligncenter" width="334" -caption="New documentation section"]`|image5|`_[/caption]

    -
  • -
-

That's it! Just so you don't worry the sprinters worked too hard, you -can rest assured everyone was in good hands with zenwryly and his -travelling-bar:

-

[caption id="attachment_1913" align="aligncenter" width="290" -caption="Ross Patterson's travelling bar"]`|image6|`_[/caption]

-

If you enjoyed reading this report and/or appreciate all the -fun-but-hard work that goes in to attending a sprint, please consider -`donating to my travel fund`_. Only three days left, and I'm still a few -dollars short!

-

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 282)

-malformed hyperlink target.
- -
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 285)

-malformed hyperlink target.
-
-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 84); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 138); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 163); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 221); backlink

-Unknown target name: "|image3|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 233); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 240); backlink

-Unknown target name: "|image5|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/cioppino-sprint-report.rst, line 251); backlink

-Unknown target name: "|image6|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/03/29/introducing-charm-death-to-charm.html b/2011/03/29/introducing-charm-death-to-charm.html deleted file mode 100644 index ffd85ea..0000000 --- a/2011/03/29/introducing-charm-death-to-charm.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - Introducing charm; death to charm! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Introducing charm; death to charm!

- -
- -
- -

[caption id="attachment_2290" align="alignright" width="373" -caption="First slide of my talk, from "back in the day" -(http://blip.tv/file/761624/)"]`|image0|`_[/caption]

-

A long time ago (several years ago, or more) one of my first Plone jobs -was importing content from the file system (put there by another CMS) to -a client's Plone 2.5 website (see: http://blip.tv/file/761624/).

-

Some time later (last year or so) the client decided they wanted to -scoop up even more content from the file system (we only grabbed the -last few years prior to launch!)

-

Unfortunately, the old migration code was truly a horror. So I've been -having a hard time making myself run it again (I was just learning -Python at the time.)

-
-

About charm

-

This is where charm comes in; formerly mr.importer, formerly -parse2plone. Get it? The third time is a… I had the "big idea" to -rewrite, then open source the code I wrote for the client. -Unfortunately, the rewrite became a horror too.

-

First, it was not well received amongst the more reusable approaches -based on collective.transmogrifier, and rightfully so. While it was -unpleasant to be told I was heading in the wrong direction, it was -*even more* unpleasant to find out "they" were right. :-)

-

Second, as "they" predicted, I got to the point where I couldn't read or -maintain it any more (and I *just* wrote it).

-

So, I decided to revert to a version which had much fewer configuration -options, because making it configurable became a huge distraction. -What's left is:

-
    -
  • The code is "readable", for some value of readable (PEP8/pyflakes -compliant) and it's in a single module: charm.py.
  • -
  • The concept is "simple", for some value of simple; it's a recipe that -creates a script for you, that you run via:
  • -
-
-$ bin/plone run bin/charm /path/to/files
-
-
    -
  • The results are "impressive" for some value of impressive; it imports -content from the file system into Plone:
  • -
-
-2011-03-21 11:51:20,302 - charm - INFO - Imported 19 folders,
-1 images, 20 pages, and 2 files.
-
-
    -
  • It won't crash (!), for some value of "keeps going"; it tries to do -try/except on operations more likely to fail  e.g. create_parts (via ---ignore-errors). This aims to ensure you at least get some content -in your site post-execution.
  • -
-
-$ bin/plone run bin/charm html --ignore-errors
-...
-2011-03-22 07:24:32,821 - charm - INFO - creating folder 'id' inside
-                          parent folder '/Plone'
-2011-03-22 07:24:32,822 - charm - INFO - Keep going! Ignoring error
-                          'The id "id" is invalid - it is already in use.'
-
-
    -
  • It has some tests, 34% coverage at the time of this writing:
  • -
-
-619    34%   charm   (/Users/aclark/Developer/charm/charm.py)
-
-
    -
  • Has "cool" features, for some value of cool. Most notably, the -"collapse" feature (AKA "slugify"):
  • -
-
-$ bin/plone run bin/charm html --collapse
-...
-2011-03-22 07:13:28,673 - charm - INFO - path 'html/2011/01/01/test-collapse',
-                          has subdirs '', and files 'index.html'
-...
-2011-03-22 07:13:28,693 - charm - INFO - object 'test-collapse-20110101.html'
-                          does not exist inside '/Plone'
-2011-03-22 07:13:28,693 - charm - INFO - creating page 'test-collapse-20110101.html'
-                          inside parent folder '/Plone'
-
-
    -
  • And the "publish" feature to optionally publish content after -creation:
  • -
-
-$ bin/plone run bin/charm html --collapse --publish
-...
-2011-03-22 07:13:29,008 - charm - INFO - publishing page 'test-collapse-20110101.html'
-
-

And a few more things, but as you can see we are quickly approaching the -point where more functionality does not necessarily mean better -software. It's hard to build something complex AND make it easy to use, -which is why I am moving on.

-
-
-

Charming demo

-

In writing this blog entry and releasing charm 1.0b4 I wanted to make -sure to demonstrate how it works, so here is a screencast. This is how I -envision content importing should work in Plone (or at least this is how -I envision a "simple" way it could work.)

-

[caption id="attachment_2312" align="aligncenter" width="478" -caption="Click to watch screencast"]`|image1|`_[/caption]

-
-
-

After charm

-

After I began writing charm, I began to collaborate with Dylan Jay on -funnelweb and beyond (e.g. mr.migrator). And I am now more determined -than ever to write reusable code.

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-charm-death-to-charm.rst, line 124); backlink

-Unknown target name: "|image1|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/04/15/collectivetransmogrifier-without-plone.html b/2011/04/15/collectivetransmogrifier-without-plone.html deleted file mode 100644 index bc64986..0000000 --- a/2011/04/15/collectivetransmogrifier-without-plone.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - collective.transmogrifier without Plone? - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- collective.transmogrifier without Plone?

- -
- -
- -

Yes!

-

Since I began drinking the collective.transmogrifier Kool Aid a few -months back, I've gotten quite excited about the possibility of being -able to use it outside Plone, i.e. like "regular" Python people would -do.

-

It just so happens I have a current project that requires me to import -content to Plone 2.5; it took me a while to realize I could just setup a -Plone 4 instance, run transmogrifier in it, and import content from it -(i.e. from the file system) to Plone 2.5 over XML-RPC. But something -about having to include Plone 4 in that scenario rubbed me the wrong -way: Plone 4 is not needed, it's just executing the pipeline.

-

(I also don't like the idea of having to create a Python package and a -GenericSetup profile in order to facilitate a migration.)

-
-

Goals

-

So in addition to working on getting mr.migrator to be able to -configure and execute pipelines (currently only GenericSetup profiles -and Python code are supported), I thought I'd experiment with removing -the CMFCore dependency.

-

The initial, experimental results can be seen in action here:

- -

From the README:

-
-Introduction
-============This demo is:* Proof of concept for mr.migrator: A tool that provides the ability to
-  register and execute collective.transmogrifier pipelines without creating a
-  Python package. It's Miller Time™.* Also proof of concept for collective.transmogrifier with the CMFCore
-  dependency removed (and a zope.component dependency added in its place).
-  It's Scotch time™.Explanation
------------In order to work, it currently relies on:* https://svn.plone.org/svn/collective/collective.transmogrifier/branches/aclark-mr-migrator-compat
-* https://svn.plone.org/svn/collective/transmogrify.filesystem/branches/aclark-mr-migrator-compat
-* git@github.com:aclark4life/transmogrify.ploneremote.git These are, respectively:* A branch of c.transmogrifier with a setuptools entry point plugin system
-  added, and the CMFCore dependencies removed (gracefully, I hope).* A branch of t.filesystem with the collective.transmogrifier entry point
-  specified (and some CMFCore dependencies removed).* A fork of t.ploneremote with the collective.transmogrifier entry point
-  specified (and some CMFCore dependencies remove).
-…
-
-

It's a work in progress, but it actually imports content. You may try it -locally, as explained in the rest of the README:

-
-Installation
-------------You can try out this demo::    $ git clone git@github.com:aclark4life/mr_migrator_demo.git
-    $ cd mr_migrator_demo
-    $ python bootstrap.py
-    $ bin/buildoutElsewhere, setup a Plone site listenining on localhost:8080 with a Plone site
-object called "Plone" and then:    $ bin/mr.migratorYou should end up with content in Plone that looks like this:
-…
-
-

``_`|image0|`_

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/collective-transmogrifier-without-plone.rst, line 70); backlink

-Inline literal start-string without end-string.
-

I hope this helps move the state of the art forward a bit; it would be -great to share this technology with the rest of the Python world. And in -case you are curious about the changes, you can read the revision log -here:

- -

Start with the following revision, and click through the next 8 commits:

- -

Comments welcome.

-
-
-

Credits

-

Thanks Martijn Pieters for creating collective.transmogrifier; thanks -Martin Aspeli and Dylan Jay for their blueprints; and thanks Dylan Jay -for bringing transmogrifier to the masses via mr.migrator.

-

-
-

System Message: WARNING/2 (/Users/aclark/Developer/blog/content/collective-transmogrifier-without-plone.rst, line 100)

-malformed hyperlink target.
-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/collective-transmogrifier-without-plone.rst, line 70); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/05/03/plone-conference-2008-is-a-wrap.html b/2011/05/03/plone-conference-2008-is-a-wrap.html deleted file mode 100644 index ab4f563..0000000 --- a/2011/05/03/plone-conference-2008-is-a-wrap.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - Plone Conference 2008 (!) is a wrap - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone Conference 2008 (!) is a wrap

- -
- -
- -

Embarrassingly, I have yet to finish my obligations to the life-changing -Plone Conference 2008 until NOW: approximately 2 years, 6 months, and -23 days after the end of the post-conference sprint.

-
-

The story

-

We had some trouble with the video company and I had to hunt them down -to get copies of missing talks. We still didn't get everything, but this -is the last of what we did get. I got these missing DVDs about a year -ago, and since then I've been trying to find the time to upload them to -blip.tv. Invariably, I got stuck on some aspect of the conversion -process so I decided to "give up" and just upload the ripped copies to -dist.plone.org.

-

As such, if anyone in the community has the time and expertise to -convert these to Quicktime format, I would greatly appreciate it, and I -would be happy to upload the results to blip.tv (this is how we did it -the first time if I recall correctly.) Until then, they have at least -reached their final resting place, and folks can get access to them if -they are interested, here:

- -

Remarkably, some of these newly added videos are still relevant -and enjoyable to watch, as are many of the ones already available in -the easily browsable archive.

-

My sincerest apologies to the community and especially to those whose -videos were amongst this group for the delay, you should not have had to -wait 2 days let alone over 2 years!

-

Thus, I now declare Plone Conference 2008 to be wrapped. Thanks to -Sean Kelly for the help transferring the video to plone.org.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/05/10/top-10-reasons-quotplone-33-site-adminquot-book-is-still-for-you.html b/2011/05/10/top-10-reasons-quotplone-33-site-adminquot-book-is-still-for-you.html deleted file mode 100644 index d91ef8c..0000000 --- a/2011/05/10/top-10-reasons-quotplone-33-site-adminquot-book-is-still-for-you.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - Top 10 reasons "Plone 3.3. Site Admin" book is (still) for you - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Top 10 reasons &quot;Plone 3.3. Site Admin&quot; book is (still) for you

- -
- -
- -

About a year ago, I was frantically trying to finish Plone 3.3 Site -Administration in time to teach it at Plone Symposium East 2010 (at -Penn State University) as well as publish it. I remember staying up all -night to finish & submit the final drafts then driving 4 hours to Penn -State, then teaching for 8 hours before I was finally able to crash (but -not before consuming a large and delicious cheeseburger and a Yuengling -from the Nittany Lion Innroom service, yum).

-

The class went well and everyone seemed happy with the results (and I am -very grateful to PSU for the opportunity). I remember struggling to get -some Windows users up to speed, so this year I've decided to "require" -students to install Plone before the class (via the appropriate -installer for their platform). Most "site admin-ing" we do will be "ad -hoc" preferably on top of a stand-alone Python installation. But we can -refer to the installer-based Plone as needed (and in fact the -installer-based Plone is all some folks will ever need or want).

-
-

The list

-

Anyway, this post is about this year's class taught from the same -material but updated to account for any changes that have occurred since -the book was first published. Most importantly, it addresses the release -of Plone 4 in the context of the book title "Plone 3.3 Site -Administration".

-

So without further ado, why "Plone 3.3 Site Administration" is (still) -for you:

-
    -
  1. The version reference in the title is (mostly) meaningless. -PACKT insist on incorporating a software version number into the -title of their books. I would have called it: "Plone Site -Administration", or "Buildout for Plone".
  2. -
  3. The book teaches valuable *techniques*, using Plone 3.3 as an -example. Most, if not all of the techniques still apply today (i.e. -w/Plone 4.0.x and Plone 4.1.x). They will likely continue to apply as -long as Plone continues to rely on zc.buildout.
  4. -
  5. Plone makes it relatively easy to upgrade by providing version -numbers for all of the packages it requires. In many cases an -upgrade simply involves referring to a newer list of package -versions. In the case of upgrading from Plone 3.3.x to Plone 4.0.x, -the [zope2] section goes away because Zope2 became an egg. (Compare -this buildout with this one.) Also Plone 4 buildouts should be -bootstrapped with Python 2.6 instead of Python 2.4 (as was required -by Plone 3).
  6. -
  7. Python tools "goodness". This book goes to great lengths to -demonstrate how Plone fits "naturally" on top of the Python software -stack. It also includes information about non-Plone-specific -Python-related technologies like Distribute and PIP. This (in -theory) makes Plone more approachable to "regular" Python folk.
  8. -
  9. The Python buildout. One of the most useful things the Plone -community has to offer the Python community at large is the Python -buildout. If you do development that requires multiple versions of -Python (e.g. Plone 3.3.x/4.0.x) you could do worse than to rely on -this buildout to provide them (multiple versions) quickly and easily. -The book dances around the subject, but the point is: use it.
  10. -
  11. Cross-platform. This book goes to great lengths to demonstrate -the Plone installation process on three popular operating systems: -Mac OS X, Ubuntu Linux, and Windows. The point is to show off how -similar the process is across platforms because Python does all the -hard work, and of course to deal with the cases where it is not -similar (e.g. it's "hard" to compile Python on Windows).
  12. -
  13. Add-ons! A lot of the value of Plone comes from the ability to -customize it to fit your needs. If that customization has already -been done by some other member of the community, even better. This is -one of the core essences of the Plone community: everyone working -hard to contribute to the available pool of add-ons, and then -sharing the results. This book aims to make you better at -evaluating the myriad of options you may be presented with when you -need to find and install an add-on.
  14. -
  15. Upgrades! The final chapter of the book holds your hand and walks -you through an upgrade from Plone 3.3.x to Plone 4.0.x. It doesn't -contain anything you can't find at http://plone.org/upgrade (in -fact it contains much less information), but in the context of a book -full of buildout configuration file examples, it should feel more -like a natural step than an intimidating process.
  16. -
  17. Security! The book covers how to deal with security patches, -not in the common case of when a hotfix is released as a Zope 2 -Product or Python egg, but in the somewhat more obscure case where -a newer (non-egg) Zope2 release replaces an older one (with a -vulnerability). The modern equivalent would be a Plone release -post-security-hotfix release. Such releases simply contain a newer -KGS (listing package versions that contain the appropriate fixes). -This "old school" example is included to give readers as broad a -perspective as possible, so that they may better handle anything they -may come across in the wild.
  18. -
  19. All the boring stuff too. This book also walks you through the -remaining "hot" topics not covered yet in this list, all from a heavy -zc.buildout configuration management perspective: site basics (e.g. -customizing navigation), appearance (AKA theming, strictly "old -style" sorry), administration (e.g. mail settings, ldap), deployment -and maintenance (e.g. automating database backups and packing), and -optimization (e.g. load balancing, supervisor, and munin graphs!)
  20. -
-

That's it!

-
-
-

The training

-

Sound even the slightest bit interesting? And/or are these things you -need to know about Plone for your job? If so, then you or your -employees will not want to miss my one day class next week at the Plone -Symposium East 2011. In case you (or your employees) are interested, -you can sign up here (separate from the symposium):

- -

Hope to see you there.

-
-
-

The service

-
-

BaaS (Buildout as a Service)

-

(Yes, I am serious)

-

And finally for whatever it is worth, many of the lessons learned from -writing the book from the author's perspective ended up here:

-
    -
  • dist.aclark.net/build/plone[1]
  • -
-

That is to say: buildouts are living and breathing things[2]; they are -frequently changing in response to what is going on in the Python -package ecosystem around them (even though their primary goal is to -maintain stability and/or to only change when you want to change). When -a change (like a security fix or configuration change) comes along, the -author pushes changes out to the dist server than deploys the dist -server changes to production.

-

[1] DISCLAIMER: Please DO NOT RELY ON this "BaaS example" for anything -important, EVER. It's only here for educational purposes (for now at -least).

-

[2] Yeah, I don't get out much :-)

-
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/05/27/quotnewquot-plone-theming-has-arrived.html b/2011/05/27/quotnewquot-plone-theming-has-arrived.html deleted file mode 100644 index 6dc371c..0000000 --- a/2011/05/27/quotnewquot-plone-theming-has-arrived.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - "New" Plone theming has arrived - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- &quot;New&quot; Plone theming has arrived

- -
- -
- -

Edit2:Enfold/Ploud.net looking for theme developers, see Alan -Runyan's comment below.

-

Edit: Laurence Rowe made new Diazo and plone.app.theming releases so -the zip filenow works! Thanks Laurence.

-

Due to the new Diazo theming features now available, I am very excited -about the recent release of Plone 4.1rc2 and plone.app.theming -1.0b2. So much so, I created a couple themes (in just a few hours) to -demonstrate my rapture [1]:

- -

Granted, these aren't entirely "finished" (e.g. lots of CSS improvements -are needed) but it is truly impressive how much you can do with so -little effort (thanks to the hard work of the Diazo team, Plone team, -and of course the theme designers themselves).

-

The best part has got to be the zip file packaging features in -plone.app.theming (provided by plone.resource). While I did have a -bit of trouble getting my zip file to work, I suspect I'll get that -issue resolved this week (I don't think I was able to import any zipped -themes, even the ones from p.a.theming tests).

-
-

Suprise! I like it

-

What I am most surprised about is how much I like this approach:

-
    -
  • Developers can easily distribute themes in Python packages, and pay a -much smaller "theming tax" with new style Diazo theming.
  • -
  • They can also optionally choose to distribute Diazo themes as zip -files for easy public consumption (although I can't think of any -good, automated way to publish just the zip files.)
  • -
  • If I am not mistaken the contents of a zipped theme can be loaded -quite elegantly, without changing their contents, via a Python -package.
  • -
-

So, let us now commence the spamming of PyPI and the Plone.org -downloads section with "fun" easy-to-install (read: no buildout) Plone -themes! [2]

-
-
-

Disclaimer

-

These are my experiences with relatively new Plone technologies. If I've -made a mistake or if your experiences are different, please let me know -in the comments.

-

[1] Please forgive gratuitous belated rapture humor.

-

[2] Before you get upset over any suggested spamming, I only mean to -suggest that the ability to distribute a theme as a zip file lowers the -bar to Plone adoption tremendously. Personally (and tentatively, since -I'm not even sure if everything is meant to work the way I currently -expect it to), I plan to include a zipped archive of any theme I -distribute as a Python package because it is so easy to do so (or -hopefully will be very soon). But how the community chooses to -capitalize on this new-found ability remains to be seen.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/06/14/aclarknet-seeks-unique-candidate-for-part-time-business-consulting.html b/2011/06/14/aclarknet-seeks-unique-candidate-for-part-time-business-consulting.html deleted file mode 100644 index a24efaa..0000000 --- a/2011/06/14/aclarknet-seeks-unique-candidate-for-part-time-business-consulting.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - ACLARK.NET seeks unique candidate for part time business consulting - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- ACLARK.NET seeks unique candidate for part time business consulting

- -
- -
- -

We are looking for a unique and talented (but mostly non-technical) -individual that is passionate about Plone, and able to dedicate some -small amount of time per month to generating new business for us[1].

-

Plone is up and coming (again)! And we want to (1.) capitalize on that -fact and (2.) scale our business accordingly. But to do so, we really -need your help.

-
-

About us

-

We are a team[2] of Python, Plone, Web, and Business savvy people -focused on Python, Plone, the web, and generally speaking: deploying and -maintaining Plone applications that range from CMS to specialized -applications, tailored to fit the needs of our clients[3].

-
-

Alex

-

For those of you that know me, you know that I am largely technically, -very artistic, and focused a lot on systems and making-things-work (vs. -programming), and that I am passionate to a fault about Plone and the -Plone community. For those of you that don't know me, I'm responsible -for all new business at ACLARK.NET and I am the technical lead on all of -our projects. I also rock a maroon Japanese Fender Stratocaster (circa -mid 1980s) on occasion.

-
-
-

Amy

-

My wife and business partner Amy is the "business coordinator" and she -handles all things customer-related (that are non-technical) as well as -anything legal and/or financial. If you know her, then you know she is a -force to be reckoned with as well as one of the nicest, most -professional people you will ever meet. If you don't know her, watch -out! When she is not watching the bottom line, Amy can be found caring -for our always-singing-while-she-is-on-the-phone yellow canary: J. -Alexander Chirpington III.

-
-
-

Team

-

Team ACLARK also consists of a variety of highly skilled sub contractors -that always make us look good by making our clients happy, and hopefully -have lots of fun doing it.

-
-
-

Business

-

To date, other than constantly "pimping" (promoting) myself personally -(on behalf of my company) within the Plone community, we have never -actively sought out any business. And we manage to stay quite busy with -the work that finds us. But it has occurred to us that in order to -compete most effectively with "the big boys" (i.e. all our -friends/colleagues/etc at http://plone.net) we need to be more -pro-active about seeking out new business.

-

That's where you come in.

-
-
-
-

About you

-

We need someone to pursue leads on our behalf, because we simply don't -have time to do it and we don't have anyone in-house that is -particularly well-suited to the task. However, we don't want to let that -stop us from growing our business and deploying as many Plone sites as -possible; especially when we are confident we have the ability to -deliver on just about any kind of Plone-related project, and then some -(i.e. Django, Pyramid, etc., almost anything Python-related.)

-
-

Criteria

-

First and foremost, you love (and use) Plone (but aren't necessarily an -integrator/developer; most likely an end user). But also:

-
    -
  • You are a "people person".
  • -
  • You have some writing skills, perhaps even a technical writer.
  • -
  • You are aggressive about scoring new business, perhaps even someone -with a sales background.
  • -
  • You are a professional, and will represent us and our business -accordingly!
  • -
-

Also nice to have:

-
    -
  • You have a full-time job that is Plone-related.
  • -
  • You have experience writing proposals.
  • -
-

You don't necessarily have to "know everything" to do this job -effectively for us, but you do have to be excited and pro-active about -it.

-
-
-

Logistics

-

We don't know how this will work yet. We are certainly willing to pay a -percentage of the anticipated bid value for any bid we win, but we are -considering other options as well.

-
-
-

Next step

-

Sound like you? Let's talk: aclark@aclark.net, 301-312-5236.

-

We look forward to hearing from you, and please feel free to pass this -information on to anyone you think may be interested in this -opportunity.

-
-
-
-

Notes

-
    -
  1. Finding and submitting proposals, with our assistance, as needed. -Even something as small as 8 hours per month would be helpful.
  2. -
  3. http://aclark.net/team
  4. -
  5. http://aclark.net/clients
  6. -
-

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/06/16/you039re-so-vain-so-why-not-use-vanity.html b/2011/06/16/you039re-so-vain-so-why-not-use-vanity.html deleted file mode 100644 index f37e73f..0000000 --- a/2011/06/16/you039re-so-vain-so-why-not-use-vanity.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - You're so vain, so why not use Vanity? - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- You&#039;re so vain, so why not use Vanity?

- -
- -
- -

A few months ago I created a package called Vanity[0] that -provides easy access to package download statistics from PyPI. You -can find the source code here: https://github.com/aclark4life/vanity.

-

I love this tool, and I use it all the time to gauge the value of a -package. Of course, downloads are only one criteria you can use to judge -the value of a package, and arguably not even a very good one. -Vanity itself is a good example of this phenomenon. I find it -incredibly useful, but in it's history it has only been downloaded 130 -times.

-

Other packages I have created with much less value have been downloaded -more times, e.g. plonetheme.aclark_twitter which has been -downloaded  674 times. But that package has also been around much -longer. So obviously another useful metric would be the time period -during which the downloads occurred.

-

Anyway, here is how it works:

-
-$ easy_install vanity
-
-

Then:

-
-$ vanity <package>
-
-

For example:

-
-$ vanity vanity
-Package `vanity` has been downloaded 130 times!
-
-

Or:

-
-$ vanity plonetheme.aclark_twitter
-Package `plonetheme.aclark_twitter` has been downloaded 674 times!
-
-

Some of my other favorites:

-
-$ vanity Django[1]
-Package `Django` has been downloaded 302111 times!
-
-
-$ vanity zope.component
-Package `zope.component` has been downloaded 210541 times!
-
-
-$ vanity pyramid
-Package `pyramid` has been downloaded 26067 times!
-
-

Another thing to consider is if hitting PyPI each time is really -necessary. I'm told there is PyPI data living somewhere else, and in -future versions I would like to make vanity use that data by default.

-

So, this post is simply to announce Vanity to a wider audience in -the event that some folks may find it useful. Otherwise, I will be happy -to continue to watch Vanity downloads crawl ever so slowly towards -200. :-)

-
-

Notes

-

[0] By standing on the shoulders of some Plone giants, David Glick, -in particular.

-

[1] There is a known issue with regard to making Vanity case -insensitive.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/06/20/plone-secrets-episode-1-site-actions-contact-link.html b/2011/06/20/plone-secrets-episode-1-site-actions-contact-link.html deleted file mode 100644 index 7887177..0000000 --- a/2011/06/20/plone-secrets-episode-1-site-actions-contact-link.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - Plone secrets: Episode 1 — Site actions contact link - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone secrets: Episode 1 — Site actions contact link

- -
- -
- -

Today I am introducing a new category of blog entry called Plone -secrets.

-

The goal is to describe a set of developer/integrator techniques that -are extremely valuable, but completely non-obvious to newcomers.

-

The first episode, called: Site actions contact link, is really just -a technique that involves the Zope Management Interface, Plone -interface, file system, Diazo, and quite possibly a few other -technologies. This is no secret, but certainly convoluted. Noticeably -absent is anything Python-related, unless you count the -`plonetheme.aclarknet` namespace package.

-

We begin by pointing your attention to the new "Contact us today!" link -on aclark.net.

-

`|image0|`_

-

This is a gratuitous rip off of any Plone firm's website that has -contact info in the upper right of their site (e.g. -http://sixfeetup.com).

-

I knew I wanted to do "my version" of adding contact info to the upper -right, and I think I've seen someone use this exact technique somewhere -else (I would credit them if I could remember.)

-

Long story short: Plone 4's sunburst theme has a nice JavaScript drop -down menu for the personal tools menu. As long as I was willing to give -up a link to the login form (which I don't like displaying on public -sites anyway), I could use this JavaScript menu to quickly and easily -provide a link to my contact form.

-

It "only" required the following:

-
-

Step 1

-
    -
  • Get the personal tools menu to show up in my site. This was -accomplished via the following Diazo rule:
  • -
-
-<prepend content='//*[@id="portal-personaltools"]'
-     theme='//*[@id="search"]' />
-
-

Note also that I am using the early-supported XPath syntax, but the more -friendly CSS syntax is supported now too. See http://diazo.org for -more information.

-

For the full set of Diazo rules for this site, see here:

- -
-
-

Step 2

-

Next, we need to create and display only the "Contact us today!" link, -which also involves disabling the "Log in" link. These tricks can be -performed in the Zope Management Interface via the portal_actions tool.

-

First, browse to `Site Setup -> Zope Management Interface -> -portal_actions -> user` and create a `contact` action:

-

`|image1|`_

-

Fill in the appropriate fields and click `Save changes`:

-

`|image2|`_

-

Finally, hide the `Log in` action by unchecking `Visible` and -clicking `Save changes`:

-

`|image3|`_

-
-
-

Step 3

-

Lastly and most importantly, persist your work on the file system -outside of the database. You don't want to be forced to recreate this -site action ever again through the web.

-

This involves exporting the action via portal setup, and adding it to -your package's GenericSetup profile. Browse to `Site Setup -> Zope -Management Interface -> portal_setup -> Export. Check the `Action -providers` step:

-

`|image4|`_

-

Then scroll all the way down to bottom and click `Export selected -steps`:

-

`|image5|`_

-

This will give you a tarred/gzipped file that when extracted will give -you an `actions.xml` file. Edit this file to include only the action -you created, like so:

-

-<?xml version="1.0"?> </object>
-</object>
-
-

You can find this file in its entirety here:

- -

You also have to register a default profile in your package with ZCML -(more technology!), like so:

-
-<genericsetup:registerProfile
- name="default"
- title="ACLARK.NET, LLC profile"
- description="Installs ACLARK.NET, LLC site customizations"
- directory="profiles/default"
- provides="Products.GenericSetup.interfaces.EXTENSION"
- />
-
-

You can find this file in its entirety here:

- -
-
-

Step 4

-

Style the results. This is more like Step 3.5, but still important. -Because we are doing Diazo theming, styling is easy. It's just a matter -of editing the style sheet on the file system like you would expect to -do in any web project. Of course, you need to know a bit about CSS and -the CSS ids that Plone uses:

-
-#personaltools-contact {
-    color: #AA001F;
-    background: white;
-    text-transform: uppercase;
-    font-size: 150%;
-}
-#portal-personaltools {
-    background: white;
-}
-
-

You can find this file in its entirety here:

- -

And of course, these styles apply to the public facing site.

-

`|image6|`_

-
-
-

Results

-

On a new Plone site, the option to install this customization will look -like so:

-

`|image7|`_

-

And the action will look like this, when you are logged in (else you -will see only the "Contact us today!" link):

-

`|image8|`_

-

That's it!

-

I hope this post captures the essence of why I think many folks may be -intimidated by Plone: in more cases than not, one must understand way -too many technologies in order to get the job done. I hope to continue -to demystify Plone through a series of "Plone secrets" posts, and -ultimately I think the Plone project hopes to resolve these issues once -and for all, however long that takes.

-

I will speculate that long term Plone will move away from Zope 2, and -everything from the Zope Management Interface that was useful will be -recreated in Plone (i.e. ported). Or rather, that is what I would like -to see happen.

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 22); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 84); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 88); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 93); backlink

-Unknown target name: "|image3|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 111); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 116); backlink

-Unknown target name: "|image5|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 187); backlink

-Unknown target name: "|image6|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 199); backlink

-Unknown target name: "|image7|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-1-site-actions-contact-link.rst, line 204); backlink

-Unknown target name: "|image8|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/07/06/plone-secrets-episode-2-collective-python-buildout.html b/2011/07/06/plone-secrets-episode-2-collective-python-buildout.html deleted file mode 100644 index 818958a..0000000 --- a/2011/07/06/plone-secrets-episode-2-collective-python-buildout.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - Plone secrets: Episode 2 - Collective Python buildout - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone secrets: Episode 2 - Collective Python buildout

- -
- -
- -

You know who uses the (Plone) Collective Python buildout? Me neither, -because we don't have any good statistics on its use (that I know of). -If it were a Python package, we could at least count the number of -times it has been downloaded.

-

You know who should use it? Everyone.

-

[dramatic pause…]

-

OK maybe not everyone, but at least everyone that regularly develops -with multiple versions of Python. Here's why.

-
-

Actively maintained

-

Check out this log:

-

`|image0|`_

-

It has been going strong for over 3 years.

-

If I recall correctly, it was born out of the frustration¹ of having to -compile Python on Mac OS X Leopard. Python never compiles correctly on -new versions of OS X (which is a complete mystery to me given that Apple -ships with Python, don't they think people will want to compile it?).

-
-
-

Easy to install

-

Got Subversion? Then you can haz the Collective Python buildout². You -will also need to bootstrap it with whatever Python version you happen -to have laying around. I won't go into detail about this; but suffice it -to say depending on your OS, one of the following or something like it -should work:

-
-$ aptitude install python2.5
-
-

Or:

-
-$ brew install python
-
-

If you are on Windows, give up (unless you have a Microsoft C compiler). -Sorry.

-

Now, check out the code from the repository (if you are a member of the -Collective and may potentially contribute something back, make sure -you use https):

-
-$ svn co http://svn.plone.org/svn/collective/buildout/python
-
-

Next, bootstrap and run the buildout:

-
-$ cd python
-$ python bootstrap.py -d
-$ bin/buildout
-
-

That's it. The buildout should go merrily on it's way compiling Python -2.4 through 3.2. When it finishes, you can install it in /opt (or -wherever you like) with the following command (you might need sudo):

-
-$ bin/install-links
-
-

Then you should see:

-
-$ /bin/ls -1 /opt/local/bin
-easy_install-2.4
-easy_install-2.5
-easy_install-2.6
-easy_install-2.7
-easy_install-3.2
-pip-2.4
-pip-2.5
-pip-2.6
-pip-2.7
-pip-3.2
-python2.4
-python2.5
-python2.6
-python2.7
-python3.2
-virtualenv-2.4
-virtualenv-2.5
-virtualenv-2.6
-virtualenv-2.7
-virtualenv-3.2
-
-
-
-

Easy to configure

-

Now you can add /opt/local/bin to your environment PATH variable. -This will make it easy to choose a particular Python, PIP, or Virtualenv -at your leisure.

-

Unfortunately, if you pip install something, it will end up in the -checkout instead of /opt/local/bin.

-

To get around this, I usually pick one Python for daily use, and add its -bin directory to my environment PATH variable:

-
-$ echo $PATH | tr ':' 'n'
-/sbin
-/usr/sbin
-/usr/local/bin
-/opt/local/bin
-/Users/aclark/Developer/collective/python/python-2.7/bin
-/usr/bin
-/bin
-/sbin
-/usr/X11/bin
-
-

After various pip installs, my 2.7 bin directory contains the usual -tools of the trade:

-
-$ /bin/ls -1 /Users/aclark/Developer/collective/python/
-python-2.7/bin
-__dotcloud_git_ssh
-activate
-activate.csh
-activate.fish
-activate_this.py
-bfg2pyramid
-checkoutmanager
-cloudservers
-dotcloud
-easy_install
-easy_install-2.7
-eye
-flake8
-fsdump
-fsoids
-fsrefs
-fstail
-hg
-mako-render
-mkrelease
-paster
-pilconvert.py
-pildriver.py
-pilfile.py
-pilfont.py
-pilprint.py
-pip
-pip-2.7
-playerpiano
-pygmentize
-python
-python2.7
-recorderpiano
-repozo
-rfc2397
-rst2html.py
-rst2latex.py
-rst2man.py
-rst2newlatex.py
-rst2odt.py
-rst2odt_prepstyles.py
-rst2pseudoxml.py
-rst2s5.py
-rst2xml.py
-rstpep2html.py
-runzeo
-sphinx-autogen
-sphinx-build
-sphinx-quickstart
-vanity
-zconfig
-zconfig_schema2html
-zdaemon
-zeoctl
-zeopack
-zeopasswd
-
-
-
-

Wrap it up, I'll take it

-

That's it! There is not too much more to say, other than I hope you find -this post useful and will consider using the Collective Python -buildout.

-

Of course, comments are always welcome.

-
-

Notes

-

¹ Experienced by its creator, fschulze.

-

² It will likely end up on Github at some point.

-
-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-2-collective-python-buildout.rst, line 23); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/08/09/plone-secrets-episode-3-collective-recaptcha-installation.html b/2011/08/09/plone-secrets-episode-3-collective-recaptcha-installation.html deleted file mode 100644 index 20e45b4..0000000 --- a/2011/08/09/plone-secrets-episode-3-collective-recaptcha-installation.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Plone secrets: Episode 3 - Collective Recaptcha installation - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone secrets: Episode 3 - Collective Recaptcha installation

- -
- -
- -

*Another one from the: "wow, this approach is totally and completely -non-obvious to beginners" department.*

-
-

My kingdom for a (custom) contact form (with captcha)

-

I don't know if I've made written-mention of this anywhere else, but -aclark.nethas a new customized contact form with captcha. ;-) -`|image0|`_ It is customized via z3c.jbot which is an awesome tool -(more on that later). This in and of itself is not-so-terribly -newsworthy. What is interesting, though, is how this new customized -form came to be; and how its features compare to the default contact -form.

-

So here goes: In Plone, we have a page template called -contact-info.cpt. It's not so special (in that it is pretty -feature-less, though it will send mail if you ask it to) but it does -the job for most folks. And it almost has to, because customizing it is -beyond the realm of what anyone would call "straight forward" or -"reasonable to expect from TTW customizers, integrators, or even -developers"¹.

-

Why do I say this?

-
-
-

Been there, done that: CMFFormController

-

[caption id="attachment_3304" align="alignright" width="259" -caption="Photo credit: Scott Beale / Laughing -Squid"]`|image1|`_[/caption]

-

First, let me start with the technology that is used to implement the -contact form. It's called CMFFormController and it went out of style -in the 1970s, along with disco and bell bottoms. Bell bottoms came back, -but CMFFormController didn't! Don't get me wrong: CMFFormController is a -decent technology/implementation. It works. But it's not very "modern" -by today's coding standards. As such, it will simply be dragged along -Plone-version-after-Plone-version until either: a.) someone wants to -replace it, or b.) it becomes too big of a maintenance burden to support -and someone has to replace it. This is the way of many things, and there -is nothing inherently wrong with this phenomenon. In fact, there are -even good things about it: e.g. the release manager, framework team, and -core developers' ability to publish release-after-solid-release under -such code-aging circumstances is a testament to their skill and -dedication.

-

BUT… and this is a BIG BUT.

-
-
-

We can do better

-

Leaving this old stuff laying around, with no new stuff to point new -users to does a huge disservice to all of our users. It flies -directly in the face of one of our core missions: as Wyn Williams -put it once, to be the

-
-"best damn enterprise content manage system on the planet".
-

Now, I've been around the block, so I am not suggesting we must fix -everything at once. Legacy software can be supported for years and years -and years (and YEARS). What I am suggesting is that we need to make a -very significant effort to COMPLETELY HIDE these implementation -details to newcomers. I don't want to tell people in IRC to go to -portal_skins anymore. I want my "OS X Lion release for Plone", -please (sans Vista overtones.) :-)

-

So how do we get there? Well, in the case of portal_skins there is talk -of decommissioning portal_view_customizations, which was supposed -to be the "new portal_skins" as I understand it. But since half of our -templates are still in CMF skin layers, and because this feature was -not technically well received (i.e. it needs more features and -development), and because portal_resources came along around the -same time as plone.app.theming, folks are considering removing -portal_view_customizations. I have no strong opinion about it (other -than I hate the name, too long) and I trust the Framework Team to handle -it. What I do care about is that whatever remains in the ZMI be very -clearly designated as either "new style" or "old style". We can't get -away from the ZMI yet, but portal tools do have title attributes so -let's use them.

-

Now, we can't ditch portal_skins just yet, and who knows what will -happen with portal_view_customizations, but the *minute* we know -some technology is out of date, we should reveal it in the user -interface (even in the ZMI user interface). E.g.:

-
-
`|image2|`_
-
Curiously, the attribute that holds this string is lowercase "title" -(I'd expect camel case Description, though I'm not entirely sure why -I expect that.)
-
-

Hanno Schlichting has made some great progress recently with enhancing -the ZMI for Plone users, especially with regard tofile-system vs. -through-the-web development, and through-the-plone vs. through-the-zmi -configuration, e.g.:

-

`|image3|`_

-

I love this trend, and would like to see more of it!

-
-
-

Secrets revealed

-

Anyway, I've been dancing around the secrets to be revealed in this blog -post because it is fun to play with the future. And it's important to -work hard toward achieving it. But enough of that, here is what you need -to know today.

-

Like I said, I customized the contact form.

-
-

Old style vs. new style

-

Back in the "old days" you had to create a CMF skin layer and put a copy -of the template in a directory on the file system, configured as a File -System Directory View. Everything used to be customized via skin -layers.

-

Now-a-days, we have z3c.jbot. Though a bit of a hack², it does exactly -what you'd expect, almost exactly how you'd expect it to. It doesn't -even require a Python package. By convention though, folks typically -do put z3c.jbot template customizations in Python packages.

-

This requires a few steps.

-
-
-

Step 1: Create a Python package

-

First, a Python package. This is relatively simple, so I'm not going to -skip-and-point-you-somewhere-else just yet, I'm going to explain first. -The gist of it is this:

-
-$ mkdir -p my.package/my/package
-$ touch my.package/setup.py
-$ touch my.package/my/__init__.py
-$ touch my.package/my/package/__init__.py
-
-

Now you would edit setup.py and the "middle" __init__.py with code. -Something like this:

-
-#!/bin/sh
-mkdir -p my.package/my/package
-touch my.package/setup.py
-touch my.package/my/__init__.py
-touch my.package/my/package/__init__.py
-cat > my.package/setup.py << EOF
-from setuptools import setup, find_packages
-setup(
-    name='my.package',
-    packages=find_packages(),
-    namespace_packages=[
-        'my',
-    ]
-)
-EOF
-cat > my.package/my/__init__.py << EOF
-from pkg_resources import declare_namespace
-declare_namespace(__name__)
-EOF
-
-

Alternatively, use ZopeSkel to generate all this boilerplate code for -you. It does a much better, and more complete job than what I have done -here. The important thing is that you understand what is going on.

-

In the case of aclark.net, our Python package is called -plonetheme.aclarknet.

-
-
-

Step 2: Add template overrides

-

Now that we have a Python package we can start customizing Plone. By -convention, we  create a "templates" directory inside the namespaced -package e.g.:

-
-$ mkdir my.package/my/package/templates
-
-

Or you can check out aclark.net's "templates" directory here:

- -

Because of the way z3c.jbot works, in the "templates" directory, we add -files with names that correspond to the Python module we want to -customize. E.g.

- -

(For some reason, github thinks that file is binary, so here are the -contents.)

-

Now, this is the amazing part: in addition to templates in views, -viewlets and portlets, we can customize any CMF object! E.g. the -RestrictedPython (more technology anyone?) CMFFormController -validation script used to validate our contact form:

- -

That brings us to adding recaptcha, but first let us finish configuring -template overrides.

-
-
-

Step 3: Configure template overrides

-

Now that we have customized Plone templates, we can configure Plone to -use our customizations.

-

This is done via a technology you may have heard of: ZCML. Using -ZCML, we can tell Plone (or jbot in this case) to use the templates in -our "templates" directory.

-

The ZCML we are going to use is placed in the "top level" configure.zcml -file in our package. That means we need a top level configure.zcml file:

-
-$ touch my.package/my/package/configure.zcml
-
-

Next we add ZCML to "configure our application". Note in addition to the -ZCML used to configure jbot, there is ZCML for Diazo and ZCML to hold -our Genericsetup customizations:

-
-<configure
-    xmlns:browser="http://namespaces.zope.org/browser"
-    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
-    xmlns:plone="http://namespaces.plone.org/plone"
-    xmlns="http://namespaces.zope.org/zope">    <plone:static directory="theme/aclarknet" type="theme" />    <include package="z3c.jbot" file="meta.zcml" />
-    <browser:jbot directory="templates" />    <genericsetup:registerProfile
-        name="default"
-        title="ACLARK.NET, LLC profile"
-        description="Installs ACLARK.NET, LLC site
-            customizations"
-        directory="profiles/default"
-        provides="Products.GenericSetup.interfaces.EXTENSION"
-        /></configure>
-
-

This file is located here:

- -

In order to see what is really going on, check out this diagram:

-

`|image4|`_

-

You can see that everything inside the <configure></configure> tag(s) is -associated with an XML namespace. If you don't add the appropriate -namespace inside the <configure> tag, your configuration will fail -spectacularly (because without the proper XML namespace configured, -there is no code loaded to handle your configuration.)

-
-
-

Step 4: Add recaptcha

-

Now, finally, we get to the exciting part. We have customized our -contact form, but we are receiving a fair amount of spam due to -spammers' ability to automate form submission. To foil the spammers, we -want to add a captcha form that will hopefully require that an actual -human to fill out the form.

-

Thanks to David Glick and Groundwire, we have collective.recaptcha -which provides an integration of Google's Recaptcha service into -Plone.

-

In order to use it, first we add the package to our buildout, e.g.:

-
-…
-[plone]
-# Eggs are Python packages
-eggs +=
-#   Diazo theming
-    plonetheme.aclarknet
-#   Add-ons
-    collective.portlet.wordpress
-    collective.recaptcha# Need zcml for c.recaptcha until 1.1.3 is released
-zcml = collective.recaptcha
-…
-
-

See the rest of the file here:

- -

Now run buildout and restart Plone.

-

With collective.recaptcha installed via buildout, you should now be able -to open http://yoursite:8080/Plone/@@recaptcha-settings to configure -Recaptcha:

-

`|image5|`_

-

(To get a public and private key, you can sign up for recaptcha here: -http://www.google.com/recaptcha)

-

Lastly, make the appropriate changes to the contact form and validation -script. E.g. include the captcha image:

-
-…
-<tal:block tal:replace="structure
-    context/@@captcha/image_tag"/>
-…
-
-

And make sure to validate the submission:

-
-…
-    # Re-captcha validation
-    if not context.restrictedTraverse('@@captcha').verify():
-        context.plone_utils.addPortalMessage(_(u'You entered
-            an invalid captcha.'), 'error')
-        return state.set(status='failure')
-    else:
-        return state
-…
-
-

That's it!

-
-
-
-

 Notes

-

¹ I'm pushing "reasonable" limits here for argument's sake. For those -who know Plone already, a lot of what might seem impossible to newcomers -is "reasonable" for them. No flames please. Unless you absolutely must. -;-)

-

² I hear people call it that, though I don't know the details. I assume -it "monkey patches" which template to use at render-time.

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-3-collective-recaptcha-installation.rst, line 12); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-3-collective-recaptcha-installation.rst, line 37); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-3-collective-recaptcha-installation.rst, line 110); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-3-collective-recaptcha-installation.rst, line 121); backlink

-Unknown target name: "|image3|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-3-collective-recaptcha-installation.rst, line 301); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-3-collective-recaptcha-installation.rst, line 362); backlink

-Unknown target name: "|image5|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/08/20/hello-plone.html b/2011/08/20/hello-plone.html deleted file mode 100644 index cfbfb7b..0000000 --- a/2011/08/20/hello-plone.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - Hello Plone - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Hello Plone

- -
- -
- -

This is a "hello world" style tutorial/application for Plone, aimed -squarely at Python developers. I have created a project on Github too, -to hold the code:

- -
-

Step 1 - Setup

-

Everyone in the Python world loves virtualenv, so this step will be a -familiar one. Inside the hello_plone repo, I first create a virtualenv:

-
-$ virtualenv .
-
-

I then install some additional tools:

-
-$ bin/pip install zc.buildout
-
-

As you see, Plone uses Buildout. One day it may not, but for now it -does. Get over it. ;-) (Or better yet, help us figure out how to make -Buildout optional in Plone. Many would welcome the improvement, and hail -you as their conquering hero!) Until then:

-
-$ bin/buildout init
-
-

Edit your buildout.cfg and put this in it:

-
-[buildout]
-extends = http://pythonpackages.com/buildout/plone/4.2.x-dev
-
-

That's it. Now run buildout:

-
-$ bin/buildout
-
-

It will take some time to download all the packages, but you only have -to do this once. Afterward, you can configure a global packages -directory and share that amongst all your development projects. See the -zc.buildout 1.5.2 page on PyPI to find out more. When it finishes, do -this:

-
-$ bin/plone fg
-
-

Then open http://localhost:8080 and you should see this: `|image0|`_ -Click the button and follow the steps. You don't need to select any -additional add-ons from the list. Afterward, you should get a Plone site -here: http://localhost:8080/Plone.

-
-
-

Step 2 - Develop

-

There are a ton of things you can do in Plone, but it is primarily a -"content management system" meaning, "you put your website in it."¹ And -I don't mean your "crazy cool next gen web app" website. I mean your -web. site. The one you use for you or your business or church or band or -bridge club or whatever. Since this is a "hello world" demonstration, I -am going to show you how to start writing Python code whose results will -"show up on the screen" in short order. After that, I'll point you to -some next steps. So, to develop we need a Python package. Create your -own, or use zopeskel (paster wrapped in some "user friendliness"). Or -use paster with the zopeskel templates installed.

-
-$ bin/pip install zopeskel
-$ bin/zopeskel plone_basic my.app
-
-plone: A project for Plone add-ons
-
-…
-
-

Now that we have a Python package, we want to "load it in Plone". To do -that, we need to add the package to our buildout. Fortunately, buildout -has a mechanism for this particular use case built in. It's called a -"develop egg", and it is configured via the `develop` parameter -available in the `buildout` section. Additionally, we need to "tell -Plone" about our develop egg too. But this is done in the same way you -tell Plone about any other package. You add it to the `eggs` parameter -of the `plone.recipe.zope2instance` section. So now we have:

-
-[buildout]
-develop = ./my.app
-extends = http://build.pythonpackages.com/buildout/plone/4.2.x-dev
-
-[plone]
-eggs += my.app
-
-

Now let's write some code. We are going to: "wire up a template to a -view", say "hello world!" then "call it a day". This is accomplished via -some "goo" maintained by the Zope Toolkit project:

-
-from Products.Five.browser.pagetemplatefile import
-    ViewPageTemplateFile
-from zope.publisher.browser import BrowserPage
-
-class Hello(BrowserPage):
-    """
-    Wire up some goo
-    """
-
-    template = ViewPageTemplateFile('hello.pt')
-
-    def __call__(self):
-        return self.template()
-
-

And it can go in: *my.app/my/app/hello.py*. Now, because Plone uses -the Zope component architecture, we need to "wire up" the "component" -we just created. This is done via the Zope Configuration Markup -Language:

-
-<configure
-    xmlns:browser="http://namespaces.zope.org/browser">
-
-    <browser:page
-
-        for="*"
-        name="hello"
-        permission="zope2.View"
-        />
-
-</configure>
-
-

And it goes in: *my.app/my/app/configure.zcml*. It "just works" -because we include an entry point in our setup.py to make it so -(paster took care of that, in this case.) Lastly, create: -*my.app/my/app/hello.pt.* And put "Hello world!" in it. Stop and -start Plone (i.e. CTRL-C, bin/plone fg) and then open: -http://localhost:8080/Plone/hello. You should see: `|image1|`_ Nice, but -a little boring. At the very least, let us get our "hello world!" to -show up "in Plone". To do this, we simply invoke Plone's main_template -and insert our text into the main content area. Add the following to -*my.app/my/app/hello.pt.*

-
-<div metal:use-macro="here/main_template/macros/master">
-
-    <div metal:fill-slot="main">
-
-        <h1>Hello world!</h1>
-
-    </div>
-
-</div>
-
-

As you can see, we are using Zope Page Templates. ZPTs must be valid -XHTML, much to the chagrin of Django's creators. But in addition to -the main con: "making humans edit XML is sadistic!") there are some pros -too e.g. "Play nicely with editing tools." In other words, get over it. -;-) (Or better yet, add support for using alternative template languages -in Plone. I have no idea what the technical feasibility is, but it might -be worth some effort.) Now let's take a look: `|image2|`_

-
-
-

Step 3 - Fun/profit!

-

That's not so bad you say? (That is what I am hoping you will say!) -Great. Some good next steps are:

- -

Also, check out the Plone community managed developer documentation -on readthedocs.org for more! ¹ c.f. SNL skit w/Rob Schnieder and/or Adam -Sander too, apparently: http://www.youtube.com/watch?v=muA5EBmpDhA I -like the Rob Schnieder ones better :-)

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/hello-plone.rst, line 60); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/hello-plone.rst, line 145); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/hello-plone.rst, line 168); backlink

-Unknown target name: "|image2|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/08/28/hello-mod_wsgi.html b/2011/08/28/hello-mod_wsgi.html deleted file mode 100644 index 7431457..0000000 --- a/2011/08/28/hello-mod_wsgi.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - Hello mod_wsgi - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Hello mod_wsgi

- -
- -
- -

It seems I've inadvertently started another series of blog entry:  the -"hello world" series, wherein I explain how to easily get started with -various exciting Python technologies.

-

This time, in order to familiarize myself with mod_wsgi, I've -created a buildout to automate some of the processes explained in:

- -

(This series also helps me to subtly introduce the zc.buildout -"extendables" I have been working on. More on those in a future post.)

-
-

The extendables

-

The extendables make it easy to bootstrap a development environment with -complex software requirements, via zc.buildout. In this case, I want -to be able to type:

-
-$ test-apache test-dir
-
-

And get a working, disposable Apache instance minutes later. I also -want that Apache to come with a mod_wsgi app installed and working.

-
-
-

Setup

-

First we use the aforementioned extendable, like so:

-
-$ virtualenv test-dir
-$ cd test-dir
-$ bin/pip install zc.buildout
-$ bin/buildout init
-
-

Edit the buildout.cfg to look like this:

-
-[buildout]
-extends = http://x.aclark.net/apache/2.2.x/buildout.cfg
-
-

Run buildout:

-
-$ bin/buildout
-
-

Assuming successful completion, you should be able to run Apache in the -foreground via:

-
-$ bin/supervisord -e debug -n
-
-

Now check http://localhost:8080, you should see:

-

`|image0|`_

-

This works because the "extendable" (buildout configuration file) -contains:

- -

I like to automate the process even further with the following -script:

-
-#!/bin/shmkdir $1
-virtualenv-2.6 $1
-cd $1
-bin/easy_install zc.buildout
-bin/buildout init
-cat << EOF > buildout.cfg
-[buildout]
-extends = http://x.aclark.net/apache/2.2.x/buildout.cfg
-EOF
-bin/buildout
-bin/supervisord -e debug -n
-
-

Thus closing the loop on this blog entry, and making the following -possible:

-
-$ test-apache test-dir
-
-

I've been using my test-plone script for years now, and I'm hoping -that the test-apache script proves just as useful (especially as Plone -moves closer to a WSGI-supporting stack via Zope 2.13).

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/hello-mod_wsgi.rst, line 66); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/09/22/mozilla-and-pypi.html b/2011/09/22/mozilla-and-pypi.html deleted file mode 100644 index 780760d..0000000 --- a/2011/09/22/mozilla-and-pypi.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - Mozilla and PyPI - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Mozilla and PyPI

- -
- -
- -

The last time I wrote about PyPI some folks mistook the subject to be -PyPy, so let me be clear: this article is about the Python Packaging -Index.

-

I recently began doing some volunteer work for Mozilla[1], working on a -virtual machine setup to make kitsune development easier (kitsune is -the code name for the Django site that powers support.mozilla.com).

-
-

Git submodules

-

In doing so, I came across an interesting command from their -installation docs:

-
-$ git submodule update --init --recursive
-
-

I can recall some vague rumblings about git submodules prior to this -incident, but nothing I'd call "familiarity". So, I shrugged it off and -went about the business of creating the VM (and resisting the urge to -use zc.buildout to do it):

-
    -
  • On day 1, I created a VirtualBox VM using the latest Ubuntu Server -and was able to assemble and run the application by following the -instructions.
  • -
  • On day 2, I began to "vagrantize" the process. Here I ran into a -bit of trouble with the git-submodule command[2]. This led me to seek -alternative methods to install the various Python packages it was -trying to install (when stuck on a problem I often like to pursue the -alternatives immediately, so I have them if I need them.)
  • -
-
-
-

Zamboni

-

Then, in the Mozilla IRC channel #sumodev (support mozilla) -some nice Mozillian (willkg) pointed me to this gem:

- -

`|http://www.flickr.com/photos/jadensmommy24/239370733/|`_

-

Which in turn led me to the following two links:

- -

Again, faint rumblings… this time about zamboni (not THAT Zamboni). I -know I've heard of it, but I wouldn't call myself familiar with it. So, -I innocently read the following:

-
-Python projects can incur a number of dependencies. ``pip`` can be -handy, but we’ve had better luck with distributing a ``vendor`` -library.
-

At which point I immediately thought to myself:

-
-Yeah… I hear that.
-

Followed a few seconds later by

-
-Wait… what?!?
-
-
-

Playdoh

-

Some time/research later[3], I (re)discovered that zamboni is the -codename for addons.mozilla.org[4]. And Playdoh is the code name -for Mozilla's base Django project setup. If you aren't familiar with -Playdoh, please do give it a whirl[5].

-
-
-

PyPI

-

While all of this is very, very interesting to me, I am primarily a -"systems and processes" guy; and what ultimately stuck with me after two -days of Mozilla-ing is the following blurb from the Playdoh packaging -documentation:

-
-The ``/vendor`` library is supposed to contain all packages and -repositories. It enables the project to be deployed as one package -onto many machines, without relying on PyPI-based installations on -each target machine.
-

"Nooooooooooooooo", I am now saying to myself over and over. "Without -relying on PyPI-based installations on each target machine." Another -"noooooooooooooooo!" :-) I certainly don't fault Mozilla for taking this -approach, but it makes me sad that large organizations like Mozilla are -passing over PyPI in favor of alternative methods of distributing Python -software.

-

Let us all now hang our heads, for a moment of pause and reflection.

-

[a minute passes]

-

-
-

The future

-

I can't speak for anyone else, but I would certainly like to see this -change in the future. I would LOVE to see PyPI become a place that -Mozilla felt confident it could use to deploy Python software. And this -is something I'd love to work on for Mozilla, if given the -opportunity[6].

-
-

Great for Python == great for Mozilla?

-

It's obvious what's in it for Python, but what's in for Mozilla?

-

Simple.

-

I happen to share Mozilla's vision for an open web and open source in -general. And it's great to see them embracing & using Python for their -web projects! Without a doubt,  they are interested in giving back to -the Python community (e.g. via Playdoh and the Django community, in this -case.) So I suspect they'd be open to helping the Python community fix a -long standing issue: the stability and reliability of the Python Package -Index. It would certainly benefit them in the long run to simplify their -build process to the point where git-submodule was no longer needed[7].

-
-
-
-

Notes

-

[1] I am actively courting Mozilla in hopes of landing a gig by the end -of the year. So all you Mozillians who know me personally, please put in -a good word! And all you Mozillians I have not met yet: nice to meet -you! :-)

-

[2] The problem turned out to be git-submodule failing to run because -things like: grep and sed were missing from the PATH. Easily fixed by -modifying the puppet configuration, but not easily discovered because -git-submodule itself returned zero! Some guy on #puppet was very helpful -in getting me to print out debug info.

-

[3] More help from friendly Mozillians in #webdev:

-
-11:13 < groovecoder> aclark: yeah, zamboni is amo 11:13 < kumar> -playdoh was extracted from zamboni and other apps 11:13 < kumar> but -zamboni itself does not eat the playdoh dog food, actually 11:15 < -kumar> aclark also, in case you're not steeped in our initialisms, -amo is addons.mozilla.org
-

[4] There is a great presentation about it here: -http://www.slideshare.net/andymckay/anatomy-of-a-large-django-site-7590098.)

-

[5] More from kumar (emphasis is my own):

-
-11:25 < kumar> Playdoh is starting to stabilize so it would be -good to see some use of it outside Mozilla; this would probably -help us catch Mozilla-specific things that need extraction
-

[6] LARGE HINT ;-)

-

[7] Again, not that there is anything wrong with what Mozilla is doing -here. As a systems guy, I just happen to gravitate toward simplifying -processes by eliminating steps.

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/mozilla-and-pypi.rst, line 46); backlink

-Unknown target name: "|http://www.flickr.com/photos/jadensmommy24/239370733/|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/10/03/vagrant-puppet-and-mozilla-oh-my.html b/2011/10/03/vagrant-puppet-and-mozilla-oh-my.html deleted file mode 100644 index 1b61686..0000000 --- a/2011/10/03/vagrant-puppet-and-mozilla-oh-my.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - Vagrant, Puppet and Mozilla, oh my! - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Vagrant, Puppet and Mozilla, oh my!

- -
- -
- -

Warning: This post is only loosely Python related and not at all Plone -related, but I thought folks might enjoy hearing about Vagrant and -Puppet because these tools may help you do your Plone and Python jobs -better.

-

For the past couple weeks I've been working on creating a virtual -machine to bootstrap a kitsune environment. Kitsune is the Django site -that powers support.mozilla.com. I've now reached what I call the 2nd -milestone.

-
-

Milestones

-

The milestones are as follows:

-
    -
  1. Get the VM running to the point where one can type ./manage.py -and receive the help output (and not a traceback). This sounds -trivial but there is actually a lot of work involved to get to this -point. Namely, figuring out how to make Puppet execute each of the -required steps successfully, together. (You would expect to be able -to just define the steps in order, but those with this expectation -will be disappointed. I assume Puppet has their reasons, and they are -probably even good ones. :-))
  2. -
  3. Get the VM running to the point where one can open -http://33.33.33.10:8000 from the host to see kitsune running. Once -step #1 is done, this is actually easier than it sounds because I'm -"cheating". Test data has been imported and a syncdb has been run, -but I'm using supervisor to manage the runserver process (for now).
  4. -
  5. Get the VM running like it does in production. This will involve -configuring Apacheand mod_wsgi as well as resolving any -issues that remain with the app. I'll rely on the kitsune team to -help with this, as I'm still learning the app. This is the "exciting" -part for me because I get to learn something new. While Vagrant and -Puppet are also new to me, I consider these technologies part of my -"past life" (as a system administrator) and Django sites part of my -"future life" (as a web developer).
  6. -
-

Now about the technologies.

-
-
-

Vagrant

-

I had heard of Vagrant before, but never tried it. I am now sorry I -waited so long because the "cool factor" is very high. It requires that -Virtualbox be installed, which I also danced around for too long -before committing (being a former Parallels user).

-

On OS X Lion[1], installing Vagrant is simply a matter of:

-
-$ gem install vagrant
-
-

Once you have `vagrant` installed you can do:

-
-$ vagrant init
-
-

inside some revision-controlled directory and you have the beginnings of -a virtual machine you can share with the masses. This is how -kitsune-vagrant was born. Hopefully this shared virtual machine will -eventually make some new developer's life much easier.

-

We now arrive at a fork in the road; though Vagrant makes it easy to -follow both paths: Chef or Puppet (it supports both). I don't recall -what made me choose Puppet over Chef, but it might have been that the -Socorro folks were using it already.

-

Once you decide on Puppet (and assuming you do), it's pretty easy to -figure out that your next move is to create a manifest file for Puppet -to apply[2].

-
-
-

Puppet

-

My knowledge of Puppet is currently quite limited. Specifically, I only -know how to create a manifest file. (Vagrant does the rest!) I imagine -there is much more to Puppet, especially with regard to doing actual -configuration management on production servers. But I have not explored -any of that yet.

-

However, I did learn quite a bit about Puppet just from writing the -manifest. The first most important thing I learned is this: Puppet is -in charge. It does things the way it wants to and you need to follow -its rules. The first and biggest challenge is to achieve a linear -execution of tasks.

-

You cannot write rules in order and hope for the best. This will fail -spectacularly when something executes before something else was supposed -to. The way around this is via `require =>` statements.

-

A grep through kitsune.pp reveals:

-
-require => Exec['git_clone'],
-require => Exec['db_sync'],
-require => Exec['packages_upgrade'],
-require => Exec['packages_update'],
-require => Package[$packages_native],
-require => Exec['git_clone'],
-require => Exec['chown_kitsune'],
-require => Exec['packages_compiled'],
-require => Exec['packages_vendor'],
-require => Exec['db_create'],
-require => Exec['db_import'],
-require => file['/etc/supervisor/supervisord.conf'],
-require => Exec['supervisor_stop'],
-
-

This roughly translates to the following workflow logic:

-
    -
  • Ensure that `aptitude -y update; aptitude -y upgrade` have been run -before you try to install the list of packages we require.
  • -
  • Ensure the list of packages we require is installed before we -checkout the code.
  • -
  • Ensure the code has been checked out (and pip install / git submodule -have been run) before you try to syncdb and run the application.
  • -
-

There is a bit more to it, but with that knowledge you should be able to -read and understand kitsune.pp in full. I learned most of the -remaining required puppeteering from this -site:http://www.puppetcookbook.com/.

-
-
-

Mozilla

-

Oh my! This Mozilla work is a ton of fun[3]; I attribute this in part -due to the structure of their organization: I was invited immediately to -collaborate in IRC with the kitsune team and as a result, we all have -something to show for it[4].

-

`|image0|`_

-

Next I will be working on the 3rd milestone! Hope to finish by the end -of this week.

-
-
-

Notes

-

[1] This did not work on Snow Leopard, because `gem` is too old. -However if you `brew install ruby` and try again, it should work.

-

[2] I didn't bother to investigate Chef, but I am curious about it.

-

[3] And I hope this is only the beginning.

-

[4] I hope to get a Mozilla gig but even if I don't, being able to do -this type of work is very rewarding (which is why you will often hear -people in open source say that to get paid for the type of work they do -is a dream come true :-)).

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/vagrant-puppet-and-mozilla-oh-my.rst, line 158); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/10/14/pillow-one-year-later.html b/2011/10/14/pillow-one-year-later.html deleted file mode 100644 index eb3ab9a..0000000 --- a/2011/10/14/pillow-one-year-later.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - Pillow: one year later - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Pillow: one year later

- -
- -
- -

For anyone unfamiliar with Pillow, it is the "friendly PIL fork": a -fork of PIL that aims to remain a good citizen in the PIL community -through its actions.

-
-

Warm and fluffy history

-

`|image0|\ Pillow`_ 1.0 was released on 2010-07-31, a little over a year -later came Pillow 1.7.5 which features:

-
    -
  • Many packaging fixes (mostly to support dependency libraries)
  • -
  • Windows binaries
  • -
  • Over 13K downloads
  • -
-

Pillow is used in Plone's UnifiedInstaller, and I know folks from -the Django communityare using it.

-
-
-

Future creature comforts

-

All in all, a mild success. So what's next? More of the same. To -quote myself from a recent Stack Overflow answer:

-
-If PIL ever does exactly what Pillow does, then the fork will die. -Until that happens, we have Pillow.
-
-
-

Bottom line accommodations

-

This may never happen of course, which is part of the reason for the -fork. You can't force someone to maintain software for you. But in the -open source world you can grab the bull by the horns (take the lead) and -try to make things better. Even better: if your project and community -are healthy and functioning properly, your success or failure will be -determined by the folks in the community (as it should be). In this -case, the Plone and Python communities have spoken clearly.

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pillow-one-year-later.rst, line 13); backlink

-Unknown target name: "|image0|pillow".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/10/24/plone-first-class-python-citizen.html b/2011/10/24/plone-first-class-python-citizen.html deleted file mode 100644 index 5e966a8..0000000 --- a/2011/10/24/plone-first-class-python-citizen.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - Plone: First class Python citizen - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone: First class Python citizen

- -
- -
- -

The Plone community and software fit nicely within the larger Python -ecosystem. Here's why.

-

For almost as long as I have been involved in the Plone project, I've -been interested in Plone's role in the Python ecosystem. Today as I look -across the current landscape, I'm proud to announce a new milestone the -Plone community can take pride in. But the change didn't happen -overnight, so first let's take a quick look back.

-
-

PyPI support in PSC

-

Circa 2008, Tarek Ziadé and others finished the PyPI integration branch -of PloneSoftwareCenter started by Sidnei Da Silva 2 years before.

-

`|image0|`_

-

This was a big step towards the "Pythonification" of Plone, mainly -because Plone packages could now be published on plone.org in the same -way Python packages are published to the Python Package Index: via -"python setup.py upload". In fact if you are publishing Plone packages, -it is recommended that you release to both PyPI and plone.org -simultaneously. This ensures your package is visible to the most number -of potential users. And you can use mkrelease to automate the -process.

-
-
-

Collective docs at RTD

-

Just when you thought things couldn't get more exciting in Python land, -along came readthedocs.org (a Django Dash production, IIRC). And to -join the fun in July 2011, I moved Mikko Ohtamaa's awesome Plone -Community Managed Developer Manual to the Github collective and -configured the RTD service hook.

-

`|image1|`_

-

This means that whenever anyone commits a change to the developer -manual, within a few minutes a new Sphinx build gets published. It -was so easy to set this up, I wish I had done it sooner.

-

So you can that see over the years, we have been working ourselves into -a frenzy of Python goodness! And last week, it got even better.

-
-
-

Introducing: Plone packages!

-

Thanks to the good folks at Cartwheel Web, makers of the fine Open -Comparison service, Plone now has its very own grid comparison -website! (Djangopackages.com was first, followed by -pyramid.opencomparison.org.)

-

`|image2|`_

-

This is a site where folks can add packages hosted elsewhere (e.g. svn, -github, pypi), vote on them, and add grid comparisons to compare -similarly-featured add-ons, frameworks, and other related software. -Grids are the killer feature of this site, and personally I've been -waiting to use them to answer questions like:

-
-

Q: What's the best blogging add-on for Plone?

-

A: http://plone.opencomparison.org/grids/g/weblogs/

-
-

The content is entirely user driven (TTW only) so please head over to -plone.opencomparison.org, login with your github ID, and start adding -packages! And while you are at it, please report any issues you find -here: https://github.com/opencomparison/opencomparison/issues. -Lastly, let's all tweet a big thanks to @pydannyand @audreyr for -their hard work and generosity!

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-first-class-python-citizen.rst, line 25); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-first-class-python-citizen.rst, line 49); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-first-class-python-citizen.rst, line 70); backlink

-Unknown target name: "|image2|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/11/09/plone-secrets-episode-4-varnish-in-front.html b/2011/11/09/plone-secrets-episode-4-varnish-in-front.html deleted file mode 100644 index 05a061b..0000000 --- a/2011/11/09/plone-secrets-episode-4-varnish-in-front.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - Plone secrets: Episode 4 - Varnish in front - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone secrets: Episode 4 - Varnish in front

- -
- -
- -

This just in from the production department: use Varnish. (And please -forgive the heavily meme-laden approach to describing these techniques -:-).)

-
-

Cache ALL the hosts

-

`|image0|`_Our ability to use Varnish in production is no secret by -now, or at least it shouldn't be. What is often less clear is exactly -how to use it. One way I like[1], is to run Varnish on your public IP -port 80 and make Apache listen on your private IP port 80. Then proxy -from Varnish to Apache and enjoy easy caching goodness on all your -virtual hosts in Apache.

-
-
-

Configuration

-

This should require less than five minutes of down time to implement. -First, configure the appropriate settings. (Well, first install Apache -and Varnish if you haven't already: `aptitude install varnish apache2` -on Ubuntu Linux[0].)

-
-

Varnish

-

To modify the listen IP address and port, we typically edit a file like -/etc/default/varnish (in Ubuntu). However you do it, configure the -equivalent of the following on your system:

-
-DAEMON_OPTS="-a 174.143.252.11:80
-             -T localhost:6082
-             -f /etc/varnish/default.vcl
-             -s malloc,256m"
-
-

This environment variable is then passed to varnishd on the command -line. Next, pass traffic to Apache like so (in -/etc/varnish/default.vcl on Ubuntu):

-
-backend default {
- .host = "127.0.0.1";
- .port = "80";
- }
-
-

Now on to Apache.

-

*Please note that the syntax above is for Varnish 3.x and the syntax -has (annoyingly) changed from 2.x to 3.x.*

-
-
-

Apache

-

The Apache part is a bit simpler. You just need to change the listen -port (on Ubuntu this is done in /etc/apache2/ports.conf), typically -from something like:

-
-Listen *:80
-
-

to:

-
-Listen 127.0.0.1:80
-
-
-
-
-

Restart ALL the services

-

Now restart both services. If all goes well you shouldn't notice any -difference, except better performance, and when you make a website -change and need to clear the cache[2]. For this, I rely on telnetting to -the varnish port and issuing the `ban.url` command (formerly -`url.purge` in 2.x):

-
-$ telnet localhost 6082
-Trying 127.0.0.1...
-Connected to localhost.
-Escape character is '^]'.
-200 205
------------------------------
-Varnish Cache CLI 1.0
------------------------------
-Linux,2.6.35.4-rscloud,x86_64,-smalloc,-smalloc,-hcritbitType 'help' for command list.
-Type 'quit' to close CLI session.ban.url /
-200 0
-
-
-
-

Cache ALL the disks

-

This site has Varnish and Apache configured as described in this -article. It also has disk caching in Apache enabled, thanks to Elizabeth -Leddy's article:

- -

As a result, it's PEPPY AS THE DICKENS™ on a 512MB "slice" (Cloud -server) from Rackspace Cloud. And now you know yet another "Plone -secret". Now go make your Plone sites faster, and let me know how it -goes in the comments section below.

-
-
-

Notes

-

[0] Using the latest distribution, "oneric".

-

[1] I first saw this technique at NASA when NASA Science was powered by -Plone; I found it odd at the time but years later it makes perfect -sense.

-

[2] Ideally you'd configure this in p.a.caching, but I've not been able -to stomach this yet.

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/plone-secrets-episode-4-varnish-in-front.rst, line 13); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/11/29/introducing-pythonpackagescom.html b/2011/11/29/introducing-pythonpackagescom.html deleted file mode 100644 index 5110793..0000000 --- a/2011/11/29/introducing-pythonpackagescom.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - Introducing pythonpackages.com - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Introducing pythonpackages.com

- -
- -
- -
-

The website for Python egoists™

-

I have this overwhelming desire to know how many times my favorite -Python packages have been downloaded. Don't you? If so, look no further -than pythonpackages.com:

-
-
-

`|image0|`_Count downloads

-

Where you can enter a package like Django and find out:

-

-
-

`|image1|`_Count favorites

-

Or click on Count favorites to reveal how many times it has been -favorited:

-

`|image2|`_

-

-
-

Find trash

-

Or even poke some good natured fun at it, for its failure to provide -adequate package metadata:

-

- -
-

Discuss packages

-

You can even discusspackages on pythonpackages.com:

-

`|image4|`_

-

-
-

Recent activity

-

But wait there is more! You can also browse the latest changelog -activity from PyPi right on the site:

-

`|image5|`_

-

-
-

Package info

-

Lastly, if you get bored counting package downloads and favorites you -can look at the actual package metadata.

-

`|image6|`_

-

-
-

Conclusion

-

Sound interesting? Or utterly silly, perhaps? I think -pythonpackages.com is the best of both. It started off as a front end -to the command line utility vanity, but has taken on a life of it's -own.

-

After a small run on Python reddit and Hacker News, I'm looking forward -to seeing what Python Planet folks think. So please check out -pythonpackages.com and let me know. You can leave comments about the -site here:

- -

Or open a new ticket here:

-

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-pythonpackages-com.rst, line 14); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-pythonpackages-com.rst, line 23); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-pythonpackages-com.rst, line 28); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-pythonpackages-com.rst, line 52); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-pythonpackages-com.rst, line 64); backlink

-Unknown target name: "|image5|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/introducing-pythonpackages-com.rst, line 76); backlink

-Unknown target name: "|image6|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/11/29/ploneorg-maintenance.html b/2011/11/29/ploneorg-maintenance.html deleted file mode 100644 index c11e6fb..0000000 --- a/2011/11/29/ploneorg-maintenance.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - Plone.org maintenance - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Plone.org maintenance

- -
- -
- -
-

Plans

-

I am planning to do some work on the plone.org server and website by the -end of the year, including:

-
  • Upgrade to the latest 4.2.x series

    -
  • Switch from xdv to plone.app.theming

    -
    • -
    • Reduce the number of NGINXes running on the server by 1 (we currently -have an nginx doing the xdv transform)
    • -
    • Repackage the current plone.org theme as plonetheme.ploneorg
    • -
    -
  • Clean up the server

    -
    • -
    • Separate vendor package configs from buildout generated configs
    • -
    • Remove archived files
    • -
    -
  • Prune tickets on dev.plone.org

    -

I've done some of this work already, earlier this year:

- -
-
-

Pitch

-

To ensure it gets done by the end of the year, I would like to add this -project to my calendar as paid work. So if you are able to help out by -donating some portion of the goal, I would appreciate it. Please use the -chip-in below to contribute to this effort.

-

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2011/12/21/new-year039s-python-meme-2012.html b/2011/12/21/new-year039s-python-meme-2012.html deleted file mode 100644 index 5edea33..0000000 --- a/2011/12/21/new-year039s-python-meme-2012.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - New Year's Python Meme 2012 - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- New Year&#039;s Python Meme 2012

- -
- -
- -

My response to -`http://tarekziade.wordpress.com/2011/12/20/new-years-python-meme-2/`_ -(with gratuitous links to `pythonpackages.com`_, my new project, -sprinkled throughout).

-

It was fun answering in 2009, so I thought I'd play again.

-
-

What’s the coolest Python application, framework or library you have discovered in 2011?

-

Pyramid. In early 2011 I released vanity, which later became -pythonpackages.com(more or less). I used building the site as an -excuse to learn Pyramid, and it was well worth it.

-

What new programming technique did you learn in 2011?

-

I learned to not reinvent the wheel, and to collaborate with others -on solving hard problems (which in and of itself is hard). Long story -short, I took a little bit of heat within the Plone CMS community for -creating a "one off" migration script:

- -

I've since learned my lesson and have been collaborating meaningfully -with Dylan Jayon the more widely-supported mr.migrator and -friends.

-

What’s the name of the open source project you contributed to the most -in 2011? What did you do?

-

I contributed to the Plone project quite a bit (as I have been doing -for years now), but I also fell in love with Mozilla (and their -mission) and began working on various things, including a virtual -machine to help with the development of support.mozilla.com:

- -

What was the Python blog or website you read the most in 2011?

-

Hacker news. I have the start-up bug.

-

What are the three top things you want to learn in 2012?

-

JavaScript, JavaScript, and JavaScript. I first heard the term 15 years -ago and have been avoiding it ever since. Time to jump in.

-

What is the top software, application or library you wish someone -would write in 2012?

-

I hope someone (me) writes a "secret" feature for pythonpackages.com -and launches it in first quarter of 2012; and I hope folks find it -useful.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/01/25/hello-plone-theming.html b/2012/01/25/hello-plone-theming.html deleted file mode 100644 index 25c0f82..0000000 --- a/2012/01/25/hello-plone-theming.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - Hello Plone theming - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Hello Plone theming

- -
- -
- -

In this post, we introduce a new tutorial aimed at bridging the gap -between the incredibly easy to use and enormously powerful Diazo -theming engine for Plone, and bootstrapping your first new theme. You -do not need to have any Python skills whatsoever to perform these tasks. -New Plone themes are:

-
    -
  • HTML/CSS/JavaScript/images (Sound familiar? You don't need to know -any Plone to understand this part.)
  • -
  • A set of rules that map your HTML/CSS/JavaScript/images to Plone -content. (This part is Diazo-specific; and while Diazo is not part of -Plone, integration is provided by a Python package called -plone.app.theming.)
  • -
-

The Diazo rules can get complex, but it's very easy to get your first -rule done and working and then off you go. You may find this new -tutorial on pythonpackages.com. Enjoy, and get busy theming Plone.

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/01/30/new-vanity-release.html b/2012/01/30/new-vanity-release.html deleted file mode 100644 index 30c6731..0000000 --- a/2012/01/30/new-vanity-release.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - New vanity release - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- New vanity release

- -
- -
- -

With all the Python stats goodness going on recently, I got -inspired to make a new vanity release. This release features the -ability to display per package download statistics via the `-v` or -`--verbose` command line argument.

-

Here are some of my favorite results.

-
-

Vanity

-
-$ vanity vanity -v
-     vanity-1.0.zip     2011-04-14      352
-   vanity-1.1.0.zip     2011-10-26      139
-   vanity-1.1.1.zip     2011-10-28      114
-   vanity-1.1.2.zip     2011-10-28      145
-vanity-1.2.0.tar.gz     2012-01-30        0
--------------------------------------------
-Package `vanity` has been downloaded 750 times!
-
-
-
-

Django

-
-$ vanity django -v
-Django-1.1.3.tar.gz     2010-12-23    2,618
-Django-1.1.4.tar.gz     2011-02-09    4,476
-  Django-1.2.tar.gz     2010-05-17   15,876
-Django-1.2.1.tar.gz     2010-05-24   65,120
-Django-1.2.2.tar.gz     2010-09-09    2,467
-Django-1.2.3.tar.gz     2010-09-11   73,984
-Django-1.2.4.tar.gz     2010-12-23   49,904
-Django-1.2.5.tar.gz     2011-02-09   63,977
-Django-1.2.6.tar.gz     2011-09-10      427
-Django-1.2.7.tar.gz     2011-09-11    6,825
-  Django-1.3.tar.gz     2011-03-23  238,504
-Django-1.3.1.tar.gz     2011-09-10  176,054
--------------------------------------------
-Package `Django` has been downloaded 700,232 times!
-
-
-
-

Plone

-
-$ vanity plone -v
-     Plone-3.2.zip     2008-12-31    1,690
-   Plone-3.2.1.zip     2009-02-04    2,466
-   Plone-3.2.2.zip     2009-03-03    4,893
-   Plone-3.2.3.zip     2009-06-20    2,731
-   Plone-3.2a1.zip     2008-10-10      976
-  Plone-3.2rc1.zip     2008-12-15      758
-     Plone-3.3.zip     2009-08-19    4,611
-   Plone-3.3.1.zip     2009-09-09    4,148
-Plone-3.3.2.tar.gz     2009-11-03    3,043
-   Plone-3.3.3.zip     2009-12-08    1,733
-   Plone-3.3.4.zip     2010-01-14    4,906
-   Plone-3.3.5.zip     2010-03-03   12,131
-Plone-3.3.6.tar.gz     2011-07-19      787
-   Plone-3.3b1.zip     2009-03-12      940
-  Plone-3.3rc1.zip     2009-03-30      743
-  Plone-3.3rc2.zip     2009-04-05    1,822
-  Plone-3.3rc3.zip     2009-05-23    2,036
-  Plone-3.3rc4.zip     2009-07-07    2,163
-  Plone-3.3rc5.zip     2009-08-01    1,211
-     Plone-4.0.zip     2010-08-30    3,659
-   Plone-4.0.1.zip     2010-10-04    4,224
-   Plone-4.0.2.zip     2010-11-22    4,022
-   Plone-4.0.3.zip     2011-01-21    3,339
-   Plone-4.0.4.zip     2011-03-01    2,711
-   Plone-4.0.5.zip     2011-04-09    3,152
-   Plone-4.0.6.zip     2011-05-22    1,469
-   Plone-4.0.7.zip     2011-06-06    2,192
-   Plone-4.0.8.zip     2011-07-17      509
-   Plone-4.0.9.zip     2011-07-29      958
-  Plone-4.0.10.zip     2011-10-12      495
-   Plone-4.0a1.zip     2009-11-19      946
-   Plone-4.0a2.zip     2009-12-04      921
-   Plone-4.0a3.zip     2009-12-21    1,272
-   Plone-4.0a4.zip     2010-02-01    1,121
-   Plone-4.0a5.zip     2010-02-19      850
-   Plone-4.0b1.zip     2010-03-09    1,308
-   Plone-4.0b2.zip     2010-04-10    1,028
-   Plone-4.0b3.zip     2010-05-04    1,722
-   Plone-4.0b4.zip     2010-06-13    1,642
-Plone-4.0b5.tar.gz     2010-07-08    1,995
-  Plone-4.0rc1.zip     2010-08-06    1,598
-     Plone-4.1.zip     2011-07-17    4,479
-Plone-4.1.1.tar.gz     2011-09-21      429
-Plone-4.1.2.tar.gz     2011-10-08    2,187
-Plone-4.1.3.tar.gz     2011-11-29    1,883
-   Plone-4.1a1.zip     2011-01-21      699
-   Plone-4.1a2.zip     2011-02-11      451
-   Plone-4.1a3.zip     2011-02-15      680
-   Plone-4.1b1.zip     2011-03-08      958
-   Plone-4.1b2.zip     2011-04-09    1,040
-  Plone-4.1rc2.zip     2011-05-22      797
-  Plone-4.1rc3.zip     2011-06-06    1,329
-   Plone-4.2a1.zip     2011-08-10      521
-   Plone-4.2a2.zip     2011-09-16      884
-Plone-4.2b1.tar.gz     2011-12-06      619
-------------------------------------------
-Package `Plone` has been downloaded 111,877 times!
-
-
-
-

Pyramid

-
-$ vanity pyramid -v
-   pyramid-1.0.tar.gz     2011-01-31   24,055
- pyramid-1.0.1.tar.gz     2011-08-13      460
- pyramid-1.0.2.tar.gz     2011-12-15      185
- pyramid-1.0a1.tar.gz     2010-11-05    1,128
- pyramid-1.0a2.tar.gz     2010-11-09      952
- pyramid-1.0a3.tar.gz     2010-11-16      803
- pyramid-1.0a4.tar.gz     2010-11-21    1,732
- pyramid-1.0a5.tar.gz     2010-12-15      639
- pyramid-1.0a6.tar.gz     2010-12-16      834
- pyramid-1.0a7.tar.gz     2010-12-20      912
- pyramid-1.0a8.tar.gz     2010-12-27    1,233
- pyramid-1.0a9.tar.gz     2011-01-08    1,313
-pyramid-1.0a10.tar.gz     2011-01-18      960
- pyramid-1.0b1.tar.gz     2011-01-22      871
- pyramid-1.0b2.tar.gz     2011-01-25    1,003
- pyramid-1.0b3.tar.gz     2011-01-28      816
-   pyramid-1.1.tar.gz     2011-07-22    5,674
- pyramid-1.1.1.tar.gz     2011-08-13    1,057
- pyramid-1.1.2.tar.gz     2011-08-17    1,560
- pyramid-1.1.3.tar.gz     2011-12-15      160
- pyramid-1.1a1.tar.gz     2011-06-20    1,146
- pyramid-1.1a2.tar.gz     2011-06-23    1,003
- pyramid-1.1a3.tar.gz     2011-06-26    1,252
- pyramid-1.1a4.tar.gz     2011-07-01    1,517
- pyramid-1.1b1.tar.gz     2011-07-10      981
- pyramid-1.1b2.tar.gz     2011-07-13      844
- pyramid-1.1b3.tar.gz     2011-07-15      742
- pyramid-1.1b4.tar.gz     2011-07-18    1,094
-   pyramid-1.2.tar.gz     2011-09-13    6,450
- pyramid-1.2.1.tar.gz     2011-09-28   10,357
- pyramid-1.2.2.tar.gz     2011-11-20      322
- pyramid-1.2.3.tar.gz     2011-11-21    3,078
- pyramid-1.2.4.tar.gz     2011-12-06    1,193
- pyramid-1.2.5.tar.gz     2011-12-15      555
- pyramid-1.2.6.tar.gz     2012-01-05      514
- pyramid-1.2.7.tar.gz     2012-01-20      472
- pyramid-1.2a1.tar.gz     2011-08-24      907
- pyramid-1.2a2.tar.gz     2011-08-27      696
- pyramid-1.2a3.tar.gz     2011-08-29    3,268
- pyramid-1.2a4.tar.gz     2011-09-02      593
- pyramid-1.2a5.tar.gz     2011-09-04      840
- pyramid-1.2a6.tar.gz     2011-09-07      602
- pyramid-1.2b1.tar.gz     2011-09-08      493
- pyramid-1.2b2.tar.gz     2011-09-08      700
- pyramid-1.2b3.tar.gz     2011-09-11      674
- pyramid-1.3a1.tar.gz     2011-12-09    1,264
- pyramid-1.3a2.tar.gz     2011-12-14    1,641
- pyramid-1.3a3.tar.gz     2011-12-21    2,716
- pyramid-1.3a4.tar.gz     2012-01-05      675
- pyramid-1.3a5.tar.gz     2012-01-09    2,369
- pyramid-1.3a6.tar.gz     2012-01-20    1,917
----------------------------------------------
-Package `pyramid` has been downloaded 97,222 times!
-
-

Enjoy the new release.

-

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/04/04/test-plone-tmp.html b/2012/04/04/test-plone-tmp.html deleted file mode 100644 index 88be4ed..0000000 --- a/2012/04/04/test-plone-tmp.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - test-plone tmp - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- test-plone tmp

- -
- -
- -

Since Day 1 with Plone circa 2004, I've always taken pride in and -greatly enjoyed refining my development environment. It's been stable -for a while now (> 1 year or so) so I thought I'd share.

-
-

Operating system

-

Mac OS X Latest (Lion, at the time of this writing)

-
-
-

Terminal

-

Mac OS X Terminal

-
-
-

Editor

-

Vim

-
-
-

Python

-

Yes. All versions, via the collective Python buildout:

- -
-
-

Plone

-

Yes. All versions, via pythonpackages.com:

- -
-
-

Additional tools

-

A shell script to run virtualenv, buildout, etc:

-

[bash] #!/bin/sh if ! [ -n "$1" ] then echo "Usage:nn$0 <dir>n" exit 1 -fi if ! [ -d $1 ] then mkdir $1 fi cd $1 virtualenv-2.7 . bin/pip -install zc.buildout bin/buildout init cat << EOF > buildout.cfg -[buildout] extends = -http://build.pythonpackages.com/buildout/plone/4.2.x-dev EOF -bin/buildout bin/plone start sleep 4 echo "Adding Plone site..." curl -d -form.submitted:boolean="True" -http://admin:admin@localhost:8080/@@plone-addsite?site_id=Plone -bin/plone stop bin/plone fg [/bash]

-

A Python script to create temporary directories:

-

[python] #!/usr/bin/env python

-

import os import tempfile print os.path.abspath(tempfile.mkdtemp()) -[/python]

-

A default buildout config file:

-
-[buildout]
-eggs-directory = /Users/aclark/Developer/eggs-directory
-download-cache = /Users/aclark/Developer/download-cache
-extends-cache = /Users/aclark/Developer/extends-cache
-
-

-
-

Workflow

-

My typical workflow looks like this:

-
    -
  • Hang in #plone on irc.freenode.net and wait for questions
  • -
  • Hear question and get inspired to run Plone
  • -
  • Run: $ test-plone `tmp`
  • -
-

~ 1 minute later I'm browsing http://localhost:8080/Plone and can -install add-ons, check ZMI settings, etc.

-

`|image0|`_

-

Enjoy.

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/test-plone-tmp.rst, line 98); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/05/11/adam-yauch-has-passed.html b/2012/05/11/adam-yauch-has-passed.html deleted file mode 100644 index d5758e1..0000000 --- a/2012/05/11/adam-yauch-has-passed.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - Adam Yauch has passed - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Adam Yauch has passed

- -
- -
- -

And why it matters to tech people, like me

-

(I hope my tech colleagues will indulge my thoughts on the recent -passing of Beastie Boy Adam Yauch.)

-

TL;DR: I <3 the Beastie Boys and will miss Adam Yauch; and I suspect -many others in the tech world do, and will, too

-
-

Where I came from

-

For as long as I can remember, I've been trying to emulate my heroes. It -started with pop music in the 80s and artists like Michael Jackson, -Madonna, and of course the Beastie Boys. While I was obsessed with -Michael Jackson back then, I don't recall trying too hard to emulate the -Beastie Boys… until the 90s.

-

In the early 90s, I was just out of high school (where I discovered Led -Zeppelin, Pink Floyd, Beatles, Stones etc), was working full time at -Chili's, and had no serious plans for college. I was really into music, -but didn't have the social skills required to participate in any -meaningful activities, like playing in a band.

-

But I loved music.

-

I listened to Nirvana, Beastie Boys, and any number of other pop, rock -and rap acts of the 90s. I went to rock shows at the 8x10 in Baltimore -and 9:30 club in DC. I went to festivals like the HFSistival and -Lollapalooza. Throughout the decade, I formulated my thoughts on how I -would, one day, start a band.

-

To say the Beastie Boys were inspirational to me during this time period -would be a colossal understatement (remember the first time you saw the -"So Watcha Want?" video?) While I wholly identified with the -angst-ridden music of Nirvana, I also equally identified with the good -natured spirit of, and dope-ass-jams from, the Beastie Boys: three guys -producing kick ass music with, among other instruments, a "bullshit mic, -made out of plastic". Most importantly: they never took themselves too -seriously. They made great music, but they were also just like you and -me. They made you feel like you could do it, too.

-

In the late 90s and early to mid 2000s, I finally got a chance to play -music. I started a band, played some shows, recorded a few albums, and -had a lot of fun. Most importantly: I proved to myself I could do it. -The shows I put on with my band were awesome; they were true rock shows: -those in which the audience responded positively, viscerally. There is -no better feeling in the world than that type of self-expression.

-
-
-

`|image0|`_Who I am now

-

Eventually the band imploded, and I found a new obsession: technology. I -have always been obsessed with tech, but never focused on it exclusively -until the mid to late 2000s. Now I have a new set of heroes to emulate, -and many new things to prove to myself I can do. Maybe I'll even play -music again one day, but if I don't, I know that I accomplished, on some -level, what I set out to do. And that is a great feeling.

-
-
-

Where we are all headed

-

We are all headed forward, now, without Adam Yauch to inspire us anew. -This sucks more than words can express; but it is, alas, a part of life. -Without death to make life precious, there would be no joy in living. We -all only have a short period of time in life to accomplish our goals, so -it is important that we spend time trying to do so. (And if your goals -include helping other people, bonus points from Adam.)

-

I cannot thank Adam Yauch (MCA), Adam Horovitz (Ad-Rock), and Mike D -enough; for providing me with all the inspiration I needed, when I -needed it, to live my life; it has made all the difference. I know that -Ad-Rock and Mike D will continue to live their lives; and whether that -includes performing as "Beastie Boys" or not, does not matter to me; I -will still be watching, waiting to be inspired again. And to Adam Yauch -who has rapped, joked, snowboarded, and philanthropized his way through -all our lives: thank you for the inspiration; I use it every day, and -I'll never forget it was you and your closest two brothers Ad-Rock and -Mike D who gave it to me.

-
-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/adam-yauch-has-passed.rst, line 59); backlink

-Unknown target name: "|image0|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/05/23/a-simple-printer-of-nested-lists.html b/2012/05/23/a-simple-printer-of-nested-lists.html deleted file mode 100644 index 90f3a03..0000000 --- a/2012/05/23/a-simple-printer-of-nested-lists.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - A simple printer of nested lists - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- A simple printer of nested lists

- -
- -
- -

A rant

-

Do you ever get the urge to kill? How many of us cringe whenever we see -these words? Lately I've been spending a lot of time developing -pythonpackages.com, (now running on heroku!) during which time I see -a lot of these kinds of packages being released:

-

`|image0|`_

-

I kid about the killing part, but seriously: this is a problem. -Fortunately for us, our PyPI overloads see fit to occasionally remove -these packages, and for this I am grateful. I love seeing this:

-

`|image1|`_

-

I mean it makes me dance-around-the-room happy! Ahem. But are they -really all gone? Close enough. A quick crate.io search now shows only -2 packages instead of 4 pages of results:

-

`|image2|`_

-

Hallelujah! But is this the best we can do? I know that some -well-meaning person wrote a book containing the example that is leading -some poor, misguided souls to spam PyPI (if only the author listed the -test site instead: http://testpypi.python.org/pypi). And I have to -assume that this was just some terrible mistake. But do we all have to -live with this mistake?

-

I'm asking because I honestly don't know the answer. I remember when I -started pythonpackages.com, the Deliverance documentation was being -updated something like every 5 minutes (kidding again, but it was -frequent enough to be annoying). After grousing about it in public, it -stopped happening!

-

I wonder if some good natured grousing about our friends (read: enemies) -the simple printers of nested lists will do the same?

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-simple-printer-of-nested-lists.rst, line 13); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-simple-printer-of-nested-lists.rst, line 19); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/a-simple-printer-of-nested-lists.rst, line 25); backlink

-Unknown target name: "|image2|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/06/12/zope2-bootstrap.html b/2012/06/12/zope2-bootstrap.html deleted file mode 100644 index 4e25621..0000000 --- a/2012/06/12/zope2-bootstrap.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - Zope2 Bootstrap - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Zope2 Bootstrap

- -
- -
- -

Bootstrap all the things, including Zope2.

-

zope2_bootstrap is a new Python package that monkey patches Zope2 -in order to:

- -

`|image0|`_

-

`|image1|`_

-

In the next version, I'll try to import Twitter Bootstrap JavaScript -for even more goodness. Enjoy, and give feedback in the comments, or -here.

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/zope2-bootstrap.rst, line 20); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/zope2-bootstrap.rst, line 26); backlink

-Unknown target name: "|image1|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/07/04/pythonpackagescom-beta-launch.html b/2012/07/04/pythonpackagescom-beta-launch.html deleted file mode 100644 index 44d28e9..0000000 --- a/2012/07/04/pythonpackagescom-beta-launch.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - pythonpackages.com beta launch - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- pythonpackages.com beta launch

- -
- -
- -

After 9 months of development, pythonpackages.com has -grand-ceremoniously flipped the switch from alpha to beta. Here is an -overview of the beta release features.

-
-

Killer GitHub integration

-

The workflow you may now enjoy is:

-
    -
  • Login with your GitHub account
  • -
  • Select a repository that contains a Python package
  • -
-

[caption id="attachment_5000" align="alignnone" -width="300"]`|image0|`_ Ohhh, look, my repos[/caption] [caption id="" -align="alignnone" width="300"]`|image1|`_ Ahhh, look at my -selection[/caption]

-
-
-

One-click release

-

More sweet workflow:

-
    -
  • Click a button to release to a test index, PyPI
  • -
-

[caption id="attachment_5015" align="alignnone" -width="300"]`|image2|`_ Oh snap, I just did a release[/caption]

-
-
-

Create packages through-the-web (with PasteScript)

-

There's a lot of room for growth, but this feature is exciting even in -its simplest form. [caption id="attachment_5006" align="alignnone" -width="300"]`|image3|`_ Really? I just type it in?[/caption] [caption -id="attachment_5008" align="alignnone" width="300"]`|image4|`_ OMFG I -can't believe this is a thing[/caption] [caption id="attachment_5009" -align="alignnone" width="300"]`|image5|`_ Win-ning[/caption]

-
-
-

Dashboard o releases

-

pythonpackages.com keeps track of your releases, using the same -technology that powers the alpha release "package featuring" feature. -`|image6|`_

-
-
-

GitHub Organization support

-

But wait, there's more. Paid plans (which have not been deployed yet) -get access to GitHub organizations, whose repositories can then be -"slotted" like normal. `|image7|`_ `|image8|`_ `|image9|`_ `|image10|`_ -`|image11|`_ If you'd like to get started using the site, check out the -crash course.

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 18); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 18); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 30); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 36); backlink

-Unknown target name: "|image3|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 36); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 36); backlink

-Unknown target name: "|image5|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 46); backlink

-Unknown target name: "|image6|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 53); backlink

-Unknown target name: "|image7|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 53); backlink

-Unknown target name: "|image8|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 53); backlink

-Unknown target name: "|image9|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 53); backlink

-Unknown target name: "|image10|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-beta-launch.rst, line 53); backlink

-Unknown target name: "|image11|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/07/12/the-plones-templer.html b/2012/07/12/the-plones-templer.html deleted file mode 100644 index e555e01..0000000 --- a/2012/07/12/the-plones-templer.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - The Plones Templer - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- The Plones Templer

- -
- -
- -

(c.f. Knights Templar) I think we have a situation that could use the -help of the Plone and Python communities at large. It goes something -like this:

-
    -
  1. About 6 years ago, Daniel Nouri started the ZopeSkel project to -provide a Zope project template to PasteScript
  2. -
  3. Sometime between then and now, the Plone community latched on to the -ZopeSkel project to include templates for its projects.
  4. -
  5. About 3 years ago, as part of the ZopeSkel project, some folks at -the BBQ sprint built a more user friendly UI on top of PasteScript. -And some refactoring of the project was planned or occurred, during -which time the entire project was renamed to "Templer".
  6. -
-

At present, if you install the latest ZopeSkel (3.0b3) you get:

-
-$ bin/paster create --list-templates
-Available templates:
-  archetype:         A Plone project that uses Archetypes content types
-  basic_buildout:    A basic buildout skeleton
-  basic_namespace:   A basic Python project with a namespace package
-  basic_package:     A basic setuptools-enabled package
-  nested_namespace:  A basic Python project with a nested namespace (2 dots in name)
-  paste_deploy:      A web application deployed through paste.deploy
-  plone_basic:       A package for Plone add-ons
-  plone_nested:      A package for Plone add-ons with a nested namespace
-  recipe:            A recipe project for zc.buildout
-  zope2_basic:       A Zope project
-  zope2_nested:      A nested-namespace Zope package
-
-

Looks nice, but some templates are missing. If you install the previous -stable version (2.21.2), you get this:

-
-$ bin/paster create --list-templates
-Available templates:
-  archetype:          A Plone project that uses Archetypes content types
-  basic_namespace:    A basic Python project with a namespace package
-  basic_package:      A basic setuptools-enabled package
-  basic_zope:         A Zope project
-  kss_plugin:         A project for a KSS plugin
-  nested_namespace:   A basic Python project with a nested namespace (2 dots in name)
-  paste_deploy:       A web application deployed through paste.deploy
-  plone:              A project for Plone add-ons
-  plone2.5_buildout:  A buildout for Plone 2.5 projects
-  plone2.5_theme:     A theme for Plone 2.5
-  plone2_theme:       A theme for Plone 2.1
-  plone3_buildout:    A buildout for Plone 3 installation
-  plone3_portlet:     A Plone 3 portlet
-  plone3_theme:       A theme for Plone 3
-  plone4_buildout:    A buildout for Plone 4 developer installation
-  plone_app:          A project for Plone add-ons with a nested namespace (2 dots in name)
-  plone_hosting:      Plone hosting: buildout with ZEO and Plone versions below 3.2
-  plone_pas:          A project for a Plone PAS plugin
-  recipe:             A recipe project for zc.buildout
-  silva_buildout:     A buildout for Silva projects
-
-

Looks a lot better. Additionally, with the previous release (2.21.2) you -can install zopeskel.dexterity, and "dexterity" will show up in the list -of available templates (but not so with 3.0b3). So what's left to finish -the move from ZopeSkel to Templer? I'm told by Chris Ewing (the current -project lead) that it's mostly a matter of missing imports in various -Python packages that provide templates to PasteScript. Let's. Finish. -This. This frustrates me because Paster is a nice system (that provides -pluggable commands, and code gen from templates). And ZopeSkel was a -nice system (that provided additional templates and a friendly UI). And -Templer will be a great system, but it's not there yet. So we need to -help Chris et. al. get it there ASAP. In addition to the code -refactoring, they have produced some nice documentation available on -readthedocs.org. If you are interested in helping, please gather -around the #plone on irc.freenode.net to discuss options (I am aclark on -IRC).

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/07/25/pillow-moved-to-python-imaging-organization.html b/2012/07/25/pillow-moved-to-python-imaging-organization.html deleted file mode 100644 index 6512702..0000000 --- a/2012/07/25/pillow-moved-to-python-imaging-organization.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - Pillow moved to python-imaging organization - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Pillow moved to python-imaging organization

- -
- -
- -

On 7/30/2010 Pillow, the "friendly" PIL fork, was released. Since then, -there have been a number of releases:

-
-$ vanity Pillow
-           Pillow-1.0.tar.gz     2010-07-31      800
-           Pillow-1.1.tar.gz     2010-08-01      652
-           Pillow-1.2.tar.gz     2010-08-02    1,987
-              Pillow-1.3.zip     2010-11-28      589
-              Pillow-1.4.zip     2010-11-28      587
-              Pillow-1.5.zip     2010-11-28      876
-              Pillow-1.6.zip     2010-12-01    6,706
-            Pillow-1.7.0.zip     2011-05-28      678
-            Pillow-1.7.1.zip     2011-05-31      663
-            Pillow-1.7.2.zip     2011-06-02    3,460
-            Pillow-1.7.3.zip     2011-07-21      569
-            Pillow-1.7.4.zip     2011-07-21    4,156
-            Pillow-1.7.5.zip     2011-09-07   17,429
-Pillow-1.7.5-py2.7-win32.egg     2011-09-08      917
-Pillow-1.7.5-py2.6-win32.egg     2011-09-08      918
-Pillow-1.7.5-py2.5-win32.egg     2011-09-08      516
-Pillow-1.7.5-py2.4-win32.egg     2011-09-08      477
-            Pillow-1.7.6.zip     2012-01-21    7,401
-         Pillow-1.7.6.tar.gz     2012-01-21   10,540
-Pillow-1.7.6-py2.7-win32.egg     2012-01-21      632
-Pillow-1.7.6-py2.6-win32.egg     2012-01-21      439
-Pillow-1.7.6-py2.5-win32.egg     2012-01-21      332
-Pillow-1.7.6-py2.4-win32.egg     2012-01-21      336
-            Pillow-1.7.7.zip     2012-04-05   28,704
-Pillow-1.7.7-py2.7-win32.egg     2012-04-09      716
-Pillow-1.7.7-py2.6-win32.egg     2012-04-09      354
-Pillow-1.7.7-py2.5-win32.egg     2012-04-09      198
-Pillow-1.7.7-py2.4-win32.egg     2012-04-09      201
-----------------------------------------------------
-Pillow has been downloaded 91,833 times!
-
-

Originally, I thought if the fork went nowhere, at least the Plone -community could maintain it for its own needs. However since then, a -number of folks outside the Plone community have taken an interest, so -I've decided to move the repository from the Plone collective to a -new organization called python-imaging. With this change, I hope to -gather folks to help develop a Python 3-compat release before PyCon -2013. (There are various PIL forks with Python 3-compat already in -existence, as well as the official PIL 1.2-dev tarball available from -bitbucket, which has some Python 3-compat if I understand correctly.) -The new home for Pillow is:

- -

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/01/building-windows-installers-in-the-cloud.html b/2012/08/01/building-windows-installers-in-the-cloud.html deleted file mode 100644 index e2ceb6c..0000000 --- a/2012/08/01/building-windows-installers-in-the-cloud.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - Building Windows Installers In The Cloud - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Building Windows Installers In The Cloud

- -
- -
- -

With pythonpackages.com, I want to solve real problems for people today. -So here's a proof of concept for building Windows installers quickly and -easily "in the cloud" (i.e. without a Windows machine local). This -article is mostly about the back end, as the front end is already -documented. TL;DR: We're moving from proof-of-concept phase to -useful-service phase. If you find the demo interesting and want to help -build something great, please consider purchasing one of `our current -plans`_.

-
-

Step 1: To The Clouds

-

For the purpose of the demo, I booted up a Windows server on Rackspace -Cloud and started installing things. `|image0|`_ On the short list of -things to install was:

-
    -
  • Python 2.7 from python.org.
  • -
  • GitHub for Windows from github.com (mainly for git.)
  • -
  • pythonpackages.com from bitbucket.org (free private repos!)
  • -
  • Microsoft compiler (free version, make sure to use the same one used -to compile Python.)
  • -
  • Redis for Windows (Hell froze over, you can find this in Microsoft's -GitHub account: https://github.com/MSOpenTech/Redis.)
  • -
  • Vim.exe (which I copy to vi.exe because I hate typing vim.)
  • -
-

Once I had all these things in place, I was able to:

-
    -
  • Install pythonpackages.com (pip install -r requirements.txt.)
  • -
  • Compile and run Redis (Several projects bundled together in Visual -Studio is apparently called a "solution", how quaint!)
  • -
  • Start the site.
  • -
  • Start testing.
  • -
-

`|image1|`_

-
-
-

Step 2: Fix all the bugs

-

This step involved a lot of cursing:

-
    -
  • Backslashes.
  • -
  • Lack of vi key bindings.
  • -
  • Other Windows-isms.
  • -
-

But I also praised my CoRD Remote Desktop Client because it worked -awesome. Anyway, the bugs/issues I fixed (and didn't fix) were roughly:

-
    -
  • Create new application on GitHub and configured keys accordingly.
  • -
  • Switch Stripe keys to testing.
  • -
  • Fix Python paths and other trivial changes, so the application can -run `python setup.py bdist_wininst`.
  • -
  • JavaScript is completely broken for some reason I've yet to determine -(haven't looked yet, but guessing Windows path related).
  • -
-
-
-

Step 3: Profit!

-

I have to admit: I was giddy when it started working, and I was able to -create a Windows Installer for Pillow (Python Imaging Library fork). -[caption id="attachment_5143" align="aligncenter" -width="300"]`|image2|`_ (We know there are security implications here. -We are currently addressing them as best as we can.)[/caption] -`|image3|`_ I was even happier when I ran the installer and it worked. -`|image4|`_ `|image5|`_ That's it. Next I hope to get some customers -so I can keep the Windows box running, and make it available to the -public.

-
-
-

Big Picture

-

In case you are interested, the roadmap for beta Q3 is here. I will -also mention that I recently used Dia (<3) to create this -info-graphic, in hopes of better communicating what I'm trying to build. -Check it out! `|image6|`_

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 18); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 39); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 63); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 63); backlink

-Unknown target name: "|image3|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 63); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 63); backlink

-Unknown target name: "|image5|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/building-windows-installers-in-the-cloud.rst, line 76); backlink

-Unknown target name: "|image6|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/07/pythonpackagescom-using-pypi039s-oauth1-support-to-register-and-upload-packages.html b/2012/08/07/pythonpackagescom-using-pypi039s-oauth1-support-to-register-and-upload-packages.html deleted file mode 100644 index 8cf6c44..0000000 --- a/2012/08/07/pythonpackagescom-using-pypi039s-oauth1-support-to-register-and-upload-packages.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - pythonpackages.com: Using PyPI's OAuth1 support to register and upload packages - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- pythonpackages.com: Using PyPI&#039;s OAuth1 support to register and upload packages

- -
- -
- -

*TL;DR PyPI has OAuth1 support; pythonpackages.com uses it to send -your GitHub repos to PyPI.* Thanks in very large part to Richard -Jones, the Python Package Index now has support for registering and -uploading packages via OAuth1. And using his sample code I was able -to take advantage of it on pythonpackages.com. The result is a fairly -elegant approach to releasing packages sans dirty hacks (I had been -asking users for their username and password, then storing them in an -encrypted session cookies so I could send them to PyPI.) Here's how it -works now.

-
-

Sign In With GitHub

-

GitHub provides an easy way to let folks sign in to pythonpackages.com -with their APIv3. I was able to code the OAuth dance using only the -requests library (HT Kenneth Reitz). This was working as of late 2011. -`|image0|`_ `|image1|`_

-
-
-

Select a package

-

Once you are signed in, you can select a package. Selected packages can -perform various actions, one of which is Tag and Release. -`|image2|`_ As soon as you select Tag and Release, you are required to -authenticate with PyPI.

-
-
-

[STRIKEOUT:Enter your PyPI credentials]

-

In order to get the beta out the door, a dirty hack was added to allow -users to enter their PyPI credentials. Credentials were saved in an -encrypted session cookie, then written out to .pypirc before calling -`python setup.py upload`. Really terrible. This was shipped in early -July 2012 and is thankfully no longer necessary (though it is still -necessary to push the initial commit to GitHub.)

-
-
-

Authorize pythonpackages.com

-

Now authorization can happen elegantly via OAuth1. First, sign in to -PyPI. Then authorize pythonpackages.com to act on your behalf. Lastly, -profit (register and upload your package). `|image3|`_ `|image4|`_ -`|image5|`_

-
-
-

Register and upload your package

-

At this point you are free to tag and release. `|image6|`_ `|image7|`_ -I am really excited about this. I began fantasizing about it almost a -year ago and after several false starts (pypissh, openid, avoidance) it -is now a reality. If you have a minute, please give it a try.

-

-
-

Docutils System Messages

-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 19); backlink

-Unknown target name: "|image0|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 19); backlink

-Unknown target name: "|image1|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 27); backlink

-Unknown target name: "|image2|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 45); backlink

-Unknown target name: "|image3|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 45); backlink

-Unknown target name: "|image4|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 45); backlink

-Unknown target name: "|image5|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 53); backlink

-Unknown target name: "|image6|".
-
-

System Message: ERROR/3 (/Users/aclark/Developer/blog/content/pythonpackages-com-using-pypis-oauth1-support-to-register-and-upload-packages.rst, line 53); backlink

-Unknown target name: "|image7|".
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/10/all-my-python-packages-are-belong-to-github.html b/2012/08/10/all-my-python-packages-are-belong-to-github.html deleted file mode 100644 index ac21466..0000000 --- a/2012/08/10/all-my-python-packages-are-belong-to-github.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - All My Python Packages Are Belong To GitHub - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- All My Python Packages Are Belong To GitHub

- -
- -
- -

Including many Plone add-ons Hi. My name is Alex "please don't call -them products" Clark. But you may call me aclark or aclark4life. In the -spirit of continuing the great git migration, and in order to beta -test pythonpackages.com, I've just moved the last of my Subversion -repositories to GitHub. This means any package I have Owner or -Maintainer permission for on PyPI now lives in one of 8 GitHub -organizations, or my personal GitHub account on github.com. Great -Success!

-
-

PLONE DEVS: Y U NO MOVE REPOS?

-

The Plone AI team has tentatively scheduled the end-of-2012 as the time -to flip svn.plone.org/svn/collective to read only (/plone and -/archetypes are already read only). So if you are still using the old -collective, please take a minute to start thinking about migrating. As -always, I'm happy to provide assistance to anyone that needs it to move -their code. (I'm in #plone on irc.freenode.net or you can email -aclark@aclark.net.)

-

- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/10/pythonpackagescom-new-github-service-push-to-release.html b/2012/08/10/pythonpackagescom-new-github-service-push-to-release.html deleted file mode 100644 index ff0b5d0..0000000 --- a/2012/08/10/pythonpackagescom-new-github-service-push-to-release.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - pythonpackages.com: New GitHub Service "push to release" - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- pythonpackages.com: New GitHub Service "push to release"

- -
- -
- -

pythonpackages.com helps Python programmers package and release their -software with just a few clicks.

-
-

PythonPackages GitHub Service

-http://aclark4life.files.wordpress.com/2012/08/screen-shot-2012-08-10-at-1-32-09-am.png?w=300 -

There is a new GitHub Service available for pythonpackages.com that allows you to release Python packages from GitHub to the Python Package Index, simply by pushing a commit message that begins with "Release" e.g.:

-
-$ git commit -a -m "Release 1.0"; git push
-
-

(The release creates a tag with the appropriate version number, extracted from setup.py) To use the service, please follow the instructions below.

-
-

Instructions

- -

Now you can git push to release! If you have any trouble, please open a ticket. These instructions will live permanently here: http://docs.pythonpackages.com/en/latest/github-service.html.

-
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/13/bootstrapping-a-buildout-16-release.html b/2012/08/13/bootstrapping-a-buildout-16-release.html deleted file mode 100644 index caed459..0000000 --- a/2012/08/13/bootstrapping-a-buildout-16-release.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - Bootstrapping a Buildout 1.6 release - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Bootstrapping a Buildout 1.6 release

- -
- -
- -

A lot of work has been done on Buildout lately, most notably:

- -

And there are a handful of other changes in trunk on svn.zope.org, -of which my favorite is:

-
-The buildout init command now accepts distribution requirements and -paths to set up a custom interpreter part that has the distributions -or parts in the path. For example:: $ python bootstrap.py init -BeautifulSoup
-

So with that, I am planning to do a zc.buildout 1.6 release within 24 -hours or so of now. Please add a comment or weigh in on -distutils-sig if you object. We have run the tests on Windows, and -discovered only pre-existing failures. We are also preparing to do -"Buildout 2 prophylactic releases" (i.e. releases that make 1.x continue -to work when 2.x is released) in the 1.6.x series.

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/13/bootstrapping-a-buildout-16-release/index.html b/2012/08/13/bootstrapping-a-buildout-16-release/index.html deleted file mode 100644 index 776147d..0000000 --- a/2012/08/13/bootstrapping-a-buildout-16-release/index.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - Bootstrapping a Buildout 1.6 release - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Bootstrapping a Buildout 1.6 release

- - - -
- -
- -

A lot of work has been done on Buildout lately, most notably:

- -

And there are a handful of other changes in trunk on svn.zope.org, -of which my favorite is:

-
-The buildout init command now accepts distribution requirements and -paths to set up a custom interpreter part that has the distributions -or parts in the path. For example:: $ python bootstrap.py init -BeautifulSoup
-

So with that, I am planning to do a zc.buildout 1.6 release within 24 -hours or so of now. Please add a comment or weigh in on -distutils-sig if you object. We have run the tests on Windows, and -discovered only pre-existing failures. We are also preparing to do -"Buildout 2 prophylactic releases" (i.e. releases that make 1.x continue -to work when 2.x is released) in the 1.6.x series.

-

-
- -
-

Comments !

-
- -
- - -
-
- -
- -
-

blogroll

- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/08/13/pythonpackagescom-pyformance-02.html b/2012/08/13/pythonpackagescom-pyformance-02.html deleted file mode 100644 index 5cee719..0000000 --- a/2012/08/13/pythonpackagescom-pyformance-02.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - pythonpackages.com: pyformance 0.2 - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- pythonpackages.com: pyformance 0.2

- -
- -
- -

pythonpackages.com helps Python programmers package and release their -software with just a few clicks.

-
-

pyformance 0.2

-

pythonpackages.com recently processed it's first official release via the new GitHub Service.

-http://aclark4life.files.wordpress.com/2012/08/screen-shot-2012-08-13-at-9-00-05-am.png?w=300 -

As such, we are celebrating the release of pyformance 0.2! According to the author Omer Gertel:

-
-It's a straight forward port of Coda Hale's fantastic metrics
-package (originally for java). I don't have all of it ported yet,
-and it's not tested as much as it should be, but it's a good start.
-
-(BTW, if you do blog about PyFormance, you may also want to mention
-this talk by Coda Hale about metrics: http://www.youtube.com/watch?v=czes-oa0yik
-He explains some of the math behind the package.)
-
-

Done! :-) Thanks Omer for using our service. Check out pyformance on GitHub:

- -

And the talk by Coda Hale.

-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/09/21/gittip-is-the-future.html b/2012/09/21/gittip-is-the-future.html deleted file mode 100644 index c92f4a2..0000000 --- a/2012/09/21/gittip-is-the-future.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - Gittip is the future - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Gittip is the future

- -
- -
- -

Heard of Gittip? If not, you should know: it has a lot of people (including me) excited about the potential to make a living doing what they love. From the Gittip blog [1]:

-
-Gittip is a system for funding people who build free culture. The core is small weekly gifts. The idea is that if 1,000 people give $1 a week to a great programmer, musician, scientist, teacher, etc., then that frees them up to pursue their vision even further for making the world better.
-

I love this idea! In particular, because it speaks to me more than other similar offerings:

-
-
    -
  • Chipin
  • -
  • Flattr
  • -
  • Kickstarter
  • -
  • Paypal
  • -
-
-

Why? If for no other reason, because it comes from a member of the Python community: Chad Whitacre of http://aspen.io fame. And the Python community has become near and dear to me, second only to my-one-true-open-source-love: Plone. So I want to see open source developers, particularly Python developers, succeed.

-http://blog.aclark.net/images/gittip.png -

And succeed they will, with gittip. Some particularly impressive results so far:

- -

Whilst no one is making a living off of gittip yet, with enough support and momentum it's only a matter of time before they do. Toward that end, I have written a blog entry for the gittip blog describing among other things: how I'd like to make a living with gittip. Here is an excerpt:

-
-

Chad’s vision for Gittip really speaks to me. All over the world there are thousands of open source developers writing code, managing projects, and moving the world of open source technology forward. This helps millions of individuals, companies and the entire world with a variety of its endeavours.

-

What if those folks could easily show their appreciation to individuals known to make open source happen? What if these volunteer developers didn’t need to go get “day jobs” to make a living because the world has taken care of them? What if companies didn’t need to hire employees in the traditional sense because their needs have already been met by open source?

-

There is a lot to think about and strive for here, and I’m really excited to help Chad with his mission. On a daily basis I’m involved with, and influential to the following open source projects: Plone (Python-based CMS), Pillow (Python Imaging Library fork), Buildout (Python-based build system), and more. I hope Gittip can help me help you, the open source community and the world.

-
-

You can read the rest of the article here:

- -

And if you'd like to help me, I'm attempting to cover the hosting costs for my startup business: pythonpackages.com, so I can keep developing it for another year. I truly believe in my vision of a "hosted packaging service", and I really want to help the Python community fix its packaging story in any way that I can. If in no other way, than by making it so you don't have to think about Python packaging at all (i.e. I'll worry about the various complexities, so you don't have to). You can find me on gittip here:

- -

Now, go be generous and help build the commons!

- - - - - -
[1]http://blog.gittip.com/post/30116848405/with-payouts-gittip-is-minimally-viable
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file diff --git a/2012/09/21/yes-this-blog-is-now-powered-by-pelican.html b/2012/09/21/yes-this-blog-is-now-powered-by-pelican.html deleted file mode 100644 index babd745..0000000 --- a/2012/09/21/yes-this-blog-is-now-powered-by-pelican.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - Yes, this blog is now powered by Pelican - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - - - - - -
-
-
-

- Yes, this blog is now powered by Pelican

- -
- -
- -

As an open source "Plone guy", I'm always prepared to defend and explain my choice to not use Plone for blogging. A couple years ago, I started using Wordpress in order to learn its feature set. I enjoyed my time with it, but after moving to wordpress.com for "trouble free" hosting, I found I couldn't control my category feeds the way I wanted; the honeymoon was over.

-

This was a giant let down, because I was hoping to avoid putting any time in to my blogging infrastructure. For weeks I did nothing. I poked at various options: Pelican, Plone, Tumblr, others. Eventually, I found my way back to Pelican and now I'm happy again.

-http://blog.aclark.net/images/pelican.png -

Pelican is a static blog generator, as you may have heard. So one big advantage is:

-
    -
  • You can host it for free, or close to free on any number of free or cheap static website hosting services! (I'm using GitHub Pages)
  • -
-
-

Other advantages

-
    -
  • It does feeds right (I need 3 "full body" feeds for: Mozilla, Plone, Python) [1].
  • -
  • It's fun to configure (edit pelicanconf.py or publishconf.py).
  • -
  • The "cool kids" use it: e.g. Tarek Ziadé, Kenneth Reitz, Daniel Greenfeld, many others.
  • -
  • It grows with you: this is huge. You can start using it and feel comfortable right away, but there is always more to learn. This is how all software should be. Unfortunately, it's tough to get it right (I think this is formally called UX).
  • -
-
-
-

Some disadvantages

-
    -
  • Don't like typing in the terminal? Pelican is not for you.
  • -
  • No "nested" entries e.g. 2012/09/21/entry.html. I don't know if there is a formal name for this feature, but I miss it (if for no other reason than "cool URLS never change" i.e. I've broken links with this move.)
  • -
  • The pelican-import has some bugs, so I'm doing a lot of manual cleanup (I don't mind this though.)
  • -
  • Tags are categories and categories are tags (or something). I had to convert all my categories to tags, and then turn on tag feeds and turn off category feeds. Category feeds are on by default and tag feeds are off by default. Also ATOM is on and RSS is off, if that is of interest to you. (Since this is really just configuration change and not a disadvantage per sé, it probably belongs more in the next section where I discuss my setup.)
  • -
-

If you are curious about my setup, here are the details.

-
-
-

Setup

-

Getting started with Pelican was easy, basically:

-
-$ virtualenv .
-$ bin/pip install pelican BeautifulSoup Markdown
-$ bin/pelican-quickstart
-
-

At this point, after I answer the quickstart questions I:

-
-$ source bin/activate
-$ make html
-
-

Now the content is ready to host (which for me just involves a git push).

-
-
-

Tweaks

-

A few things were tricky.

-
    -
  • I wanted to host my articles at the top level of the repo for serving on GitHub Pages, so I modified the Makefile to make it so [2].
  • -
  • Categories control what links are available in the header, so I disabled them all but one called "Blog". Not ideal, but it works.
  • -
  • The "social" links, and my disqus and analytics API keys were all a pleasure to configure.
  • -
-
-
-

Workflow

-

Now I write articles in restructured text in the content/ directory and publish them like so:

-
-$ make publish; git commit -a -m "Publish"; git push
-
-

All the details are here if you'd like to take a look:

- -

Comments from more knowledgable Pelican users welcome. Like this article? Tip me on Gittip!

- - - - - -
[1]This is actually my first "test" post with Pelican so I will get a chance to see how the feeds perform. But they looked good in testing.
- - - - - -
[2]I think I broke "make html", actually. Primarily I just needed to make it not "clean" the entire repo.
-
- -
- -
-

Comments !

-
- -
- - -
-
- -
- - - - -
- - - - - - - - - - - - - \ No newline at end of file