

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>enPraxis</title>
	<atom:link href="http://enpraxis.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://enpraxis.net/blog</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Tue, 24 Feb 2009 23:30:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Upgraded to WordPress 2.7.1 and added new Code Snippet plugin</title>
		<link>http://enpraxis.net/blog/2009/02/24/upgraded-to-wordpress-271-and-added-new-code-snippet-plugin/</link>
		<comments>http://enpraxis.net/blog/2009/02/24/upgraded-to-wordpress-271-and-added-new-code-snippet-plugin/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 23:30:47 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=46</guid>
		<description><![CDATA[Realizing that a lot of our fellow Plonistas are blogging with WordPress, I thought his post would have some relevance.  We recently upgraded to WordPress 2.7.1. If you&#8217;ve been lax about moving from 2.6.x to the latest version, you should take a few minutes to make the change!  The new admin interface is very [...]]]></description>
			<content:encoded><![CDATA[<p>Realizing that a lot of our fellow Plonistas are blogging with WordPress, I thought his post would have some relevance.  We recently upgraded to <a href="http://wordpress.org/download/">WordPress 2.7.1</a>. If you&#8217;ve been lax about moving from 2.6.x to the latest version, you should take a few minutes to make the change!  The new admin interface is very pleasing to the eye, and provides more intuitive interactions as well.</p>
<p>We also stumbled upon a great little Word Press Plugin: <a href="http://blog.hackerforhire.org/code-snippet/">Code Snippet</a>; theoretically it&#8217;s outdated, but it is working fine in our install.  For those who post code snippets, I&#8217;d strongly encourage you to take a look at this plugin. With a simple wrapper, you will have well formatted code with syntax highlighting write within your blog post.</p>
<p><strong>Example</strong></p>
<pre>
<div class="codesnip-container" >
<div class="codesnip"><span class="kw1">if</span> <span class="kw2">getattr</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">context</span>, <span class="st0">'getText'</span><span class="br0">&#41;</span>:
&nbsp; &nbsp; lst.<span class="me1">append</span><span class="br0">&#40;</span><span class="br0">&#40;</span>num_brains <span class="kw1">and</span> div_start <span class="kw1">or</span> div_start2<span class="br0">&#41;</span> + <span class="kw2">self</span>.<span class="me1">context</span>.<span class="kw3">getText</span><span class="br0">&#40;</span><span class="br0">&#41;</span> + div_end<span class="br0">&#41;</span></div>
</div>
</pre>
<p>*unfortunately, the syntax highlighting doesn&#8217;t get pushed over into planet.plone.org&#8230;.so&#8230;a bit less effective than I originally wanted it to be.</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2009/02/24/upgraded-to-wordpress-271-and-added-new-code-snippet-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Debugging Placeless Scripts</title>
		<link>http://enpraxis.net/blog/2008/11/21/debugging-placeless-scripts/</link>
		<comments>http://enpraxis.net/blog/2008/11/21/debugging-placeless-scripts/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 18:35:11 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<category><![CDATA[debug placeless script]]></category>

		<category><![CDATA[pdb]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=27</guid>
		<description><![CDATA[We&#8217;ve been doing a lot lately with getting Zope2 Products updated to function in a Zope3 world.  There&#8217;s been many occasions where a placeless script errors out.  Ideally we&#8217;d move them all away from placeless scripts and into browser view functions, but often times they need to be debugged quickly, so that we can get [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been doing a lot lately with getting Zope2 Products updated to function in a Zope3 world.  There&#8217;s been many occasions where a placeless script errors out.  Ideally we&#8217;d move them all away from placeless scripts and into browser view functions, but often times they need to be debugged quickly, so that we can get the base product working in Plone 3.</p>
<p>Jon ran across this situation recently, and needed to throw a debugger into the placeless script.  I had not seen this litte code snippet before, so perhaps many others have not as well.  In the __init_.py of your Product:</p>
<blockquote><p><strong>from AccessControl import allow_module</strong></p>
<p><strong>allow_module(&#8217;pdb&#8217;)</strong></p></blockquote>
<p>Restart Zope, and debug placeless scripts to your heart&#8217;s content.</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/11/21/debugging-placeless-scripts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Resizing your file based XEN Virtual Machine on CentOS</title>
		<link>http://enpraxis.net/blog/2008/11/05/resizing-your-file-based-xen-virtual-machine-on-centos/</link>
		<comments>http://enpraxis.net/blog/2008/11/05/resizing-your-file-based-xen-virtual-machine-on-centos/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 23:41:04 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
		
		<category><![CDATA[Server Admin]]></category>

		<category><![CDATA[XEN filesystem grow virtual server CentOS lvm2 fdisk]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=17</guid>
		<description><![CDATA[One of the best references for getting started using virtual machines using XEN and CentOS can be found here. It is well written, very easy to follow and can quickly get you up and running.
Recently I had the task of revisiting a virtual machine that was provisioned with a file based file system as outlined [...]]]></description>
			<content:encoded><![CDATA[<p>One of the best references for getting started using virtual machines using <a title="XEN" href="http://www.xen.org" target="_blank">XEN</a> and <a title="CentOS" href="http://www.centos.org" target="_blank">CentOS</a> can be found <a title="Creating and installing a CentOS 5 domU instance" href="http://wiki.centos.org/HowTos/Xen/InstallingCentOSDomU" target="_blank">here</a>. It is well written, very easy to follow and can quickly get you up and running.</p>
<p>Recently I had the task of revisiting a virtual machine that was provisioned with a file based file system as outlined in the tutorial. The main task I needed to achieve was to expand the size of the filesystem. Given that the tutorial has you build the virtual machine using tools that have this capability I figured it would not be that hard.</p>
<p>What is not obvious is that although the filesystem is made in such a way as to easily support this, that the actual practice of making it happen is a little more complicated. Having spent a lot of time googling all the various technologies and not coming up with a solution, I thought I would share what I learned, and give a recipe to perform the same operation on your own virtual server. All the usual caveats apply (use at your own risk, etc.)</p>
<p>If you are attempting to do something similar, or you are using a different Linux distribution it still may be useful to look at the following, and translate the steps accordingly.</p>
<p>Here is the recipe, feel free to let me know if it works for you:</p>
<p><span id="more-17"></span>1. Shutdown the VM</p>
<p>2. Backup the disk image file:</p>
<blockquote><p><strong>cp /xen/client8.img /xen/client8.img.backup</strong></p></blockquote>
<p>3. Restart the VM so that it can continue to serve while we work</p>
<p>4. Okay now make a working image from the backup:</p>
<blockquote><p><strong>cp client8.img.backup client8ext.img</strong></p></blockquote>
<p>5. Use dd to append more space to the end of the file:</p>
<blockquote><p><strong>dd if=/dev/zero of=/xen/client8xen.img bs=1M seek=10000 count=5000</strong></p></blockquote>
<p>This assumes an initial filesystem that is 10G and is expanding it to 15G</p>
<p>6. Check to see that the disk image file has grown the correct amount</p>
<blockquote><p><strong>ls -l /xen/client8ext.img</strong></p></blockquote>
<p>Should look something like</p>
<blockquote><p><em>-rw-r&#8211;r&#8211; 1 root root 15728640000 Oct 26 02:22 client8ext.img</em></p></blockquote>
<p>7. Mount the disk image on the loopback device:</p>
<blockquote><p><strong>/sbin/losetup /dev/loop1 /xen/client8ext.img</strong></p></blockquote>
<p>Here I am mounting it on <em>loop1</em> because my initial <em>loop0</em> was already in use. Just make sure that you mount it on an unused loop device and you should be fine.</p>
<p>Check that it has mounted okay:</p>
<blockquote><p><strong>/sbin/fdisk -l -u /dev/loop1</strong></p></blockquote>
<p>Should look something like:</p>
<blockquote><p><em>Disk /dev/loop1: 15.7 GB, 15728640000 bytes<br />
255 heads, 63 sectors/track, 1912 cylinders, total 30720000 sectors<br />
Units = sectors of 1 * 512 = 512 bytes</em></p>
<p><em>Device Boot      Start         End      Blocks   Id  System<br />
/dev/loop1p1   *          63      208844      104391   83  Linux<br />
/dev/loop1p2          208845    20466809    10128982+  8e  Linux LVM</em></p></blockquote>
<p>7. Find the start of the primary root partition. In the above example the LVM partition starts at 208845. Use the following formula to find the offset in the file where the LVM starts.</p>
<blockquote><p><em>START * 512</em></p></blockquote>
<p>8. Mount the volume group using the -o parameter and the calculated start value:</p>
<blockquote><p><strong>/sbin/losetup -o 106928640 /dev/loop2 /dev/loop1</strong></p></blockquote>
<p>9. Edit lvm.conf to filter out any other devices. If you are not actively using lvm on your working server it may be easy enough to just filter out everything but the loop devices. and return it back after you have finished. <a title="4. Controlling LVM Device Scans with Filters" href="http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/lvm_filters.html" target="_blank">Here</a> is a good reference on how to do this. In the end I just ended up changing the filter setting to</p>
<blockquote><p>filter = [ "a/loop.*/", "r/.*/" ]</p></blockquote>
<p>10. Rerun vgscan and check that it finds the volumes</p>
<blockquote><p><strong>/sbin/vgscan</strong></p></blockquote>
<p>You should see something like:</p>
<blockquote><p><em>Reading all physical volumes.  This may take a while&#8230;<br />
Found volume group &#8220;VolGroup00&#8243; using metadata type lvm2</em></p></blockquote>
<p>11. Okay now to resize the physical volume. Check to see that you can see it:</p>
<blockquote><p><strong>/usr/sbin/pvdisplay</strong></p></blockquote>
<p>Should get something like:</p>
<blockquote><p><em>&#8212; Physical volume &#8212;<br />
PV Name               /dev/loop2<br />
VG Name               VolGroup00<br />
PV Size               9.66 GB / not usable 3.58 MB<br />
Allocatable           yes (but full)<br />
PE Size (KByte)       32768<br />
Total PE              309<br />
Free PE               0<br />
Allocated PE          309<br />
PV UUID               IUefv0-aFx9-iPQn-p2nb-VOGO-ioQo-4XsfUc</em></p></blockquote>
<p>12. Okay now to resize the physical volume:</p>
<blockquote><p><strong>/usr/sbin/pvresize /dev/loop2</strong></p></blockquote>
<p>Check that it worked:</p>
<blockquote><p><strong>/usr/sbin/pvdisplay</strong></p></blockquote>
<p>Output should now look something like:</p>
<blockquote><p><em>&#8212; Physical volume &#8212;<br />
PV Name               /dev/loop2<br />
VG Name               VolGroup00<br />
PV Size               14.55 GB / not usable 17.84 MB<br />
Allocatable           yes<br />
PE Size (KByte)       32768<br />
Total PE              465<br />
Free PE               156<br />
Allocated PE          309<br />
PV UUID               IUefv0-aFx9-iPQn-p2nb-VOGO-ioQo-4XsfUc</em></p></blockquote>
<p>13. Now to resize the logical volumes:</p>
<blockquote><p><strong>/usr/sbin/lvdisplay</strong></p></blockquote>
<p>Should get something like:</p>
<blockquote><p><em>&#8212; Logical volume &#8212;<br />
LV Name                /dev/VolGroup00/LogVol00<br />
VG Name                VolGroup00<br />
LV UUID                4vMcGJ-jOdo-idMa-Q3qR-31Hg-YKHs-2ppTQA<br />
LV Write Access        read/write<br />
LV Status              NOT available<br />
LV Size                9.16 GB<br />
Current LE             293<br />
Segments               1<br />
Allocation             inherit<br />
Read ahead sectors     0</em></p>
<p><em>&#8212; Logical volume &#8212;<br />
LV Name                /dev/VolGroup00/LogVol01<br />
VG Name                VolGroup00<br />
LV UUID                wRtiQA-dZX1-fKI0-4yv2-FfPw-0F3C-8RThgX<br />
LV Write Access        read/write<br />
LV Status              NOT available<br />
LV Size                512.00 MB<br />
Current LE             16<br />
Segments               1<br />
Allocation             inherit<br />
Read ahead sectors     0</em></p></blockquote>
<p>14. Start by extending the swap space:</p>
<blockquote><p><strong>/usr/sbin/lvextend -L +512M /dev/VolGroup00/LogVol01</strong></p></blockquote>
<p>Then extend the root partition. Let&#8217;s use all available space this time.</p>
<p>Look up free extents:</p>
<blockquote><p><strong>/usr/sbin/vgdisplay</strong></p></blockquote>
<p>Get Something like:</p>
<blockquote><p><em>&#8212; Volume group &#8212;<br />
VG Name               VolGroup00<br />
System ID<br />
Format                lvm2<br />
Metadata Areas        1<br />
Metadata Sequence No  5<br />
VG Access             read/write<br />
VG Status             resizable<br />
MAX LV                0<br />
Cur LV                2<br />
Open LV               0<br />
Max PV                0<br />
Cur PV                1<br />
Act PV                1<br />
VG Size               14.53 GB<br />
PE Size               32.00 MB<br />
Total PE              465<br />
Alloc PE / Size       325 / 10.16 GB<br />
Free  PE / Size       140 / 4.38 GB<br />
VG UUID               ecCfkb-oPKd-Tf4S-VTLj-2M9c-LJJj-BHBPh2</em></p></blockquote>
<p>15. Free extents are 140. Use this to extend the root partition:</p>
<blockquote><p><strong>/usr/sbin/lvextend -l+140 /dev/VolGroup00/LogVol00</strong></p></blockquote>
<p>16. Activate the root logical volume so that we can resize it:</p>
<blockquote><p><strong>/usr/sbin/lvchange -ay /dev/VolGroup00/LogVol00</strong></p></blockquote>
<p>17. Now we need to resize the file system. The docs I found suggest that you run a filesystem check both before and after you have resized the partiion:</p>
<blockquote><p><strong>/sbin/e2fsck -f /dev/VolGroup00/LogVol00</strong><br />
<strong>/sbin/resize2fs /dev/VolGroup00/LogVol00</strong></p></blockquote>
<p>Check the filesystem again:</p>
<blockquote><p><strong>/sbin/e2fsck -f /dev/VolGroup00/LogVol00</strong></p></blockquote>
<p>18. Okay now deactivate the root partition:</p>
<blockquote><p><strong>/usr/sbin/lvchange -an /dev/VolGroup00/LogVol00</strong></p></blockquote>
<p>19. Activate the swap partition:</p>
<blockquote><p><strong>/usr/sbin/lvchange -ay /dev/VolGroup00/LogVol01</strong></p></blockquote>
<p>20. Run mkswap on the extended swap partition:</p>
<blockquote><p><strong>/sbin/mkswap /dev/VolGroup00/LogVol01</strong></p></blockquote>
<p>21. Everything okay, now deactivate it again:</p>
<blockquote><p><strong>/usr/sbin/lvchange -an /dev/VolGroup00/LogVol01</strong></p></blockquote>
<p>22. Change the size of the LVM partition on /dev/loop1 using fdisk. This step caught me out. The disk partition information needs to be updated to reflect the new LVM size. Just launch fdisk and find the last partition. Then change it to reflect the full size of the drive.</p>
<p>23. Deactivate the loop devices:</p>
<blockquote><p><strong>/sbin/losetup -d /dev/loop2</strong><br />
<strong>/sbin/losetup -d /dev/loop1</strong></p></blockquote>
<p>Your file based filesystem should now be ready to use with your current virtual machine. Change the appropriate line in your server&#8217;s XEN configuration and restart your server and enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/11/05/resizing-your-file-based-xen-virtual-machine-on-centos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eggification :: Round Three</title>
		<link>http://enpraxis.net/blog/2008/10/22/eggification-round-three/</link>
		<comments>http://enpraxis.net/blog/2008/10/22/eggification-round-three/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 16:29:19 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=15</guid>
		<description><![CDATA[Well, I think we&#8217;ve collectively had a &#8216;why did we not do this before&#8217; moment, as we&#8217;ve now eggified the entire eduCommons suite.  For those unaware of what exactly eduCommons is, I present the official blurb:

&#8220;eduCommons is an OpenCourseWare management system designed specifically to support OpenCourseWare projects like USU OCW. eduCommons will help you develop [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Well, I think we&#8217;ve collectively had a <em><strong>&#8216;why did we not do this before&#8217;</strong></em> moment, as we&#8217;ve now eggified the entire eduCommons suite.  For those unaware of what exactly eduCommons is, I present the official blurb:<strong><em><br />
</em></strong></p>
<p style="text-align: left;"><strong><em>&#8220;<a class="external-link" href="http://demo.educommons.com/">eduCommons</a> is an OpenCourseWare management system designed specifically to support OpenCourseWare projects like <a class="external-link" href="http://ocw.usu.edu/">USU OCW</a>. eduCommons will help you develop and manage an open access collection of course materials.</em></strong></p>
<p style="text-align: left;"><strong><em>eduCommons is built around a workflow process that guides users through the process of publishing materials in an openly accessible format. This includes uploading materials into a repository, dealing with copyright, reassembling materials into courses, providing quality assurance, and publication of materials.&#8221;</em></strong></p>
<p>eduCommons is an open source response to <a href="http://ocw.mit.edu/OcwWeb/web/home/home/index.htm">MIT&#8217;s OpenCourseWare</a> initiative.  Currently, 1/3 of the <a href="http://www.ocwconsortium.org/">OpenCourseWare Consortium&#8217;s</a> members utilize eduCommons as their OpenCourseWare solution. These members represent a wide cross section of institutions, from <a href="http://ocw.wgu.edu/">Western Governor&#8217;s University</a>, the only accredited university in the U.S. offering competency-based, online degrees, to the <a href="http://ocw.unu.edu/">United Nations University</a>, which showcases the training and educational programmes implemented by the University in a wide range of areas relevant to the work of the <span class="highlightedSearchTerm">United</span> <span class="highlightedSearchTerm">Nations</span>, and <a href="http://cosl.usu.edu/projects/educommons/adopters">numerous</a> entities in between.</p>
<p>Back to the egg&#8230;the eduCommons egg can be found <a href="https://enpraxis.net/svn/enPraxis/enpraxis.educommons/trunk/">here</a>.  We have also created an eduCommons <a href="https://enpraxis.net/svn/enPraxis/eduCommons.buildout/trunk/">buildout</a>, for those interested in experimenting with the suite. One of past criticisms of eduCommons has been the complexity of deployment; buildout mitigates many of those concerns.  We&#8217;ll be working on improving the buildout even more, as this is our initial foray into this area.</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/10/22/eggification-round-three/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eggification :: Round Two</title>
		<link>http://enpraxis.net/blog/2008/10/20/eggification-round-two/</link>
		<comments>http://enpraxis.net/blog/2008/10/20/eggification-round-two/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 16:48:16 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<category><![CDATA[buildout]]></category>

		<category><![CDATA[python egg]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=11</guid>
		<description><![CDATA[Continuing the process of eggifying our Plone AddOn Products, we now have functional eggs for:

collective.zipfiletransport
collective.imstransport
collective.contentlicensing

We also have a functional egg working for out leftskin product, which we use as part of the eduCommons suite.  It&#8217;s name is a bit deceptive, as it not only provides a default theme, but has a handy configuration panel for [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing the process of eggifying our Plone AddOn Products, we now have functional eggs for:</p>
<ul>
<li><a href="http://dev.plone.org/collective/browser/collective.zipfiletransport/trunk">collective.zipfiletransport</a></li>
<li><a href="http://dev.plone.org/collective/browser/collective.imstransport/trunk">collective.imstransport</a></li>
<li><a href="http://dev.plone.org/collective/browser/collective.contentlicensing/trunk">collective.contentlicensing</a></li>
</ul>
<p>We also have a functional egg working for out <a href="https://enpraxis.net/svn/enPraxis/enpraxis.leftskin/trunk/">leftskin</a> product, which we use as part of the <a href="http://demo.educommons.com/">eduCommons</a> suite.  It&#8217;s name is a bit deceptive, as it not only provides a default theme, but has a handy configuration panel for setting styles/images TTW, similar to WebLion&#8217;s <a href="http://plone.org/products/cssmanager">CSSManager</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/10/20/eggification-round-two/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eggification :: Round One</title>
		<link>http://enpraxis.net/blog/2008/10/16/eggification-round-one/</link>
		<comments>http://enpraxis.net/blog/2008/10/16/eggification-round-one/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 20:54:45 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<category><![CDATA[buildout]]></category>

		<category><![CDATA[python eggs]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=9</guid>
		<description><![CDATA[After returning from the Plone Conference in DC, we realized a few things:
1) Buildout is here to stay
2) Python Eggs are here to stay
We&#8217;ve been waffling on whether or not to move toward these technologies, but the research and data now show the clear benefits of utilizing them, of paramount importance is the ease at [...]]]></description>
			<content:encoded><![CDATA[<p>After returning from the Plone Conference in DC, we realized a few things:</p>
<p>1) <a href="http://plone.org/documentation/tutorial/buildout">Buildout</a> is here to stay</p>
<p>2) <a href="http://peak.telecommunity.com/DevCenter/PythonEggs">Python Eggs</a> are here to stay</p>
<p>We&#8217;ve been waffling on whether or not to move toward these technologies, but the research and data now show the clear benefits of utilizing them, of paramount importance is the ease at which they help the (re)deployment story.</p>
<p>Using Martin Aspeli&#8217;s <a href="http://plone.org/documentation/tutorial/buildout/creating-a-new-package">egg cooking</a> inroduction, Jon and I set out to convert our <a href="http://dev.plone.org/collective/browser/PloneBookmarklets">PloneBookmarklets</a> AddOn into a full fledged egg, which can be found in the collective at <a href="http://dev.plone.org/collective/browser/collective.plonebookmarklets/">collective.plonebookmarklets</a>.  The entire process, form creating a buildout environment, to testing the development egg, took only 90 minutes.  Granted, it is a relatively simple product, with not many lines of codes, but it was really satisfying to see how approachable this new framework has become.</p>
<p>The egg can be found in the collective, for the time being; we&#8217;ll realease to the <a href="http://pypi.python.org/pypi">Cheese Shop</a> once we figure out the process.</p>
<p>Another great factoid about this revision&#8230;it has contributions from 3 additional developers. <a href="http://www.onenw.org/">ONE/Northwest</a> provided numerous <a href="http://dev.plone.org/collective/changeset?new=PloneBookmarklets%2Fbranches%2Fplone3%4071887&amp;old=PloneBookmarklets%2Fbranches%2Fplone3%4057453">fixes</a> related to browser layers and image cacheability, we have additional contributions for <a href="http://dev.plone.org/collective/browser/collective.plonebookmarklets/trunk/collective/plonebookmarklets/i18n">translations</a> (Spanish and Basque), and some new social bookmarking tool additions as well (Facebook and Technorati). Thanks to those who are using the product, and have taken the time to make it better as well!</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/10/16/eggification-round-one/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Mirror</title>
		<link>http://enpraxis.net/blog/2008/10/08/content-mirror/</link>
		<comments>http://enpraxis.net/blog/2008/10/08/content-mirror/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 17:24:09 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<category><![CDATA[ploneconf2008]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=6</guid>
		<description><![CDATA[Kapil gave a great presentation on Content Mirror, a tool that serializes plone content into a relational database. Serialization of data allows for alternative front ends to be developed, great for those applications which do not necessarily need the entire Plone front end, and it&#8217;s inherent &#8216;Plone Tax&#8217;.
We are looking at potential solutions to provide [...]]]></description>
			<content:encoded><![CDATA[<p>Kapil gave a great presentation on<a href="http://code.google.com/p/contentmirror "> Content Mirror</a>, a tool that serializes plone content into a relational database. Serialization of data allows for alternative front ends to be developed, great for those applications which do not necessarily need the entire Plone front end, and it&#8217;s inherent &#8216;Plone Tax&#8217;.</p>
<p>We are looking at potential solutions to provide an alternative front end for eduCommons, as many potential institutions may be in lower bandwidth areas, where a slimmed down front end is essential.  Perhaps presenting the serialized data from Content Mirror wrapped in a theme via <a href="http://www.openplans.org/projects/deliverance/introduction">Deliverance</a> would fit the bill.</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/10/08/content-mirror/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Site Design</title>
		<link>http://enpraxis.net/blog/2008/10/06/new-site-design/</link>
		<comments>http://enpraxis.net/blog/2008/10/06/new-site-design/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 21:57:48 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Plone]]></category>

		<category><![CDATA[Plone Conference]]></category>

		<guid isPermaLink="false">http://enpraxis.net/blog/?p=3</guid>
		<description><![CDATA[Brent, Jon, and I finally sat down and gave the old site a much overdue renovation, both in design and content.
By virtue of the fact that you are reading this blog post, you are already aware that we now have a blog as well.  This will be a great tool for us to communicate what [...]]]></description>
			<content:encoded><![CDATA[<p>Brent, Jon, and I finally sat down and gave the old site a much overdue renovation, both in design and content.</p>
<p>By virtue of the fact that you are reading this blog post, you are already aware that we now have a blog as well.  This will be a great tool for us to communicate what the latest happenings are in the office, as well as in the communites that we are involved in.</p>
<p>Brent and I will be travelling to the <a href="http://plone.org/events/conferences/2008-washington-dc">Plone Conference</a> in Washington D.C. tomorrow, and should have some great items to report during our stay.</p>
]]></content:encoded>
			<wfw:commentRss>http://enpraxis.net/blog/2008/10/06/new-site-design/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

