Deliverance
So a quick post on Deliverance and Plone. Deliverance is basically a theme proxy which allows designers to concentrate solely on markup (xhtml,html,css) etc and that's it. There would be no coding or templating involved at all. If you are a programmer, here is a good overview of it covered at Ploneconf 2008
It's been around for almost two years now, and as usual there is no documentation and only people like me and you know about it. Posted if you have designers who don't want to learn zpt (Zope Page Templates), or for that matter if you don't have time, are on contract, outsource your design etc as outlined in the video.
To give an example of ZPT:
77 78 <span tal:define="global mstring modules/string" > 79 <span tal:define="global bdate context/birth_date" > 80 <dl tal:condition="context/real_name | nothing"> 81 <dt>Real Name:</dt> 82 <dd tal:content="string:${context/real_name}" /> 83 </dl> 84 <dl tal:condition="context/nationality | nothing"> 85 <dt>Nationality:</dt> 86 <dd tal:content="string:${context/nationality}" /> 87 </dl> 88 <dl tal:condition="context/birth_date | nothing"> 89 <dt>Birthday:</dt> 90 <span tal:define="birth context/birth_date; birth_format python:DateTime(birth)"> 91 <dd tal:content="python:birth_format.strftime('%B %d, %Y')" /> 92 </span> 93 </dl> 94 <dl tal:condition="context/place_of_birth | nothing"> 95 <dt>Born in:</dt> 96 <dd tal:content="string:${context/place_of_birth}" /> 97 </dl> 98 <dl tal:condition="context/lives_now | nothing"> 99 <dt>Lives now:</dt> 100 <dd tal:content="string:${context/lives_now}" /> 101 </dl> 102 <dl tal:condition="context/agencies | nothing"> 103 <dt>Agencies:</dt> 104 <span tal:define="v_agencies context/agencies"> 105 <dd tal:content="python:str(mstring.join(v_agencies, ', ')).rstrip(', ')" /> 106 </span> 107 </dl> 108 <dl tal:condition="context/model_known_custom | nothing" > 109 <dt>Known for:</dt> 110 <span tal:define="v_known context/model_known_custom; 111 prefix string:My ; 112 suffix python:str(prefix + mstring.join(v_known, ', My ')).rstrip(','); 113 finalsuffix string:${suffix}"> 114 <dd tal:content="string:${finalsuffix}" /> 115 </span> 116 </dl> 117 <dl tal:condition="context/Modelstatus | nothing"> 118 <dt>Status:</dt> 119 <span tal:define="v_status context/getModelstatus"> 120 <dd tal:content="python:str(mstring.join(v_status, ', ')).rstrip(', ')" /> 121 </span> 122 </dl> 123 <dl tal:condition="context/getMuses | nothing"> 124 <dt>Muse for:</dt> 125 <dd tal:repeat="muses context/getMuses" 126 tal:content="muses/muse"></dd> 127 </dl> 128 <dl tal:condition="context/getDated | nothing"> 129 <dt>Dated:</dt> 130 <dd tal:repeat="dated context/getDated" tal:content="dated/model_dated" /> 131 </dl> 132 <dl tal:condition="context/getFriends | nothing"> 133 <dt>Friends with:</dt> 134 <dd tal:repeat="friends context/getRefs"> 135 <a href="http://modellink" target="new" 136 tal:attributes="href python:friends.reference_url()" 137 tal:content="python:friends.Title()">modeltitle</a> 138 </dd> 139 </dl> 140 <dl tal:condition="context/getTurned | nothing"> 141 <dt>Model turned…</dt> 142 <dd tal:repeat="turned context/getTurned" 143 tal:content="structure string:<span class="title">${turned/model_turned}</span> (<span class="info">${turned/model_turned_text})</span>"></dd> 144 </dl> 145 <dl tal:condition="context/getMarried | nothing"> 146 <dt>Married:</dt> 147 <dd tal:repeat="married context/getMarried" tal:content="married/model_married" /> 148 </dl> 149 <dl tal:condition="context/interests | nothing"> 150 <dt>Interests:</dt> 151 <dd tal:content="string:${context/interests}" />Â
Easy for me and you; not easy for a designer; really I think the idea of templates at this point should be a programmer held domain or at least left to advanced designers who would then have a preference and ZPT might not be it.  So Deliverance is to deliver us from all of that by allowing designers to concentrate on markup and pulling content from where ever they want. Whether it be a mysql database, static file, plone, grok, django or where ever and placing it in the theme. In regards to Benchmarking it would only be slow if you don't have a cache proxy and it had to continually grab content from several different places. In those cases this wouldn't really matter because you'd be using one system and one system alone anyway. If you put the theme proxy behind, varnish? Voila! Problem solved in nearly all cases.
Anyway, I was just reminded about this this morning. Someday i'm sure someone will do a decent walkthrough of it. You know, documentation..Â
Last year I got an early copy of the book "Do you matter? How great design will make people love your company" by Robert Brunner. It was an funny and interesting read, and I totally forgot about it. Safari was to send out the final copy but fumbled my order because my credit card expired. Did they send out a notice? That would make sense, so, they decided against it. Which meant I didn't know they had any problems shipping out the book until I came across the pdf of the rough cut on my desktop and realized. Wait a second?! I don't have the book on the floor of my office at home (my book shelf). The hard cover looks chocked with more stuff so i'm going to re-read it and see if there was anything major added. It's a fun recommended read in how design can make or break a product.
Random Cool
Don't shout at your disks; especially when they are working! I'm sure you should still talk to your plants though.
All of *.wordpress.com is behind Nginx/Apache/Varnish and that's pretty cool; Looks like they are saving a bunch of money by switching to Gei^H^H^H, heh.
Bought a brand new Macbook for work because my Powerbook G4 finally gave up the ghost. I wanted to try and sneak it in for the previous tax year but that's illegal according to my tax accountant, so i'll write it off next year. It was time anyway and my brother beat the g4 up pretty good during his first 3 years of college. I bought him a new one and took this old one. So in the meantime i've been using this Thinkpad x60 and Opensolaris... I really miss my Apple desktop, and I really should file a bug about this reverse polarity crap. This issue was fixed; I know because we went through this in like 2007 and 2008. Why isn't this fix in OpenSolaris?
Little bored but have been keeping busy coding (NIMS; thanks everyone for supporting and answering my dumb questions) and reading at night; taken it back old school.. Pool tonight.. i'm coming out with a win!! A.P.A BABY! Probably gonna buy the Opensolaris Bible to cut my teeth past ZFS because that's all I really use it for right now. Alexander Limi, leaves Google from what sounds like a select group of managers that were smoking crack/cocaine. Too bad for Google, should be good for Plone 4 though.. heh.. ok..