<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><generator uri="http://www.habariproject.org/" version="0.7-alpha">Habari</generator><id>tag:sagrising.cockrumpublishing.com,2010-09-02:atom/15d2a9598ef268015dcf8f24e3ae63000c75e890</id><title>Sag Rising</title><subtitle>Notes to Myself</subtitle><updated>2009-11-05T18:41:13-05:00</updated><link rel="alternate" href="http://sagrising.cockrumpublishing.com/" /><link rel="first" href="http://sagrising.cockrumpublishing.com/atom/1/page/1" type="application/atom+xml" title="First Page" /><link rel="next" href="http://sagrising.cockrumpublishing.com/atom/1/page/2" type="application/atom+xml" title="Next Page" /><link rel="last" href="http://sagrising.cockrumpublishing.com/atom/1/page/4" type="application/atom+xml" title="Last Page" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SagRising" /><feedburner:info uri="sagrising" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><entry><title>Quick Quips VII</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/1U9xTIyWS4o/quick-quips-vii" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-vii/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:quick-quips-vii/1257464448</id><updated>2009-11-05T18:41:13-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-11T10:02:10-05:00</app:edited><published>2009-11-05T18:41:13-05:00</published><category term="Asides" /><content type="html">&lt;blockquote&gt;&lt;p&gt;Half the big problems in the world happen because people decided not to sweat the small stuff.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=1U9xTIyWS4o:Ev7nAF6n8n0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=1U9xTIyWS4o:Ev7nAF6n8n0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=1U9xTIyWS4o:Ev7nAF6n8n0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=1U9xTIyWS4o:Ev7nAF6n8n0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=1U9xTIyWS4o:Ev7nAF6n8n0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/1U9xTIyWS4o" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-vii</feedburner:origLink></entry><entry><title>Habari 0.6.3 Hits the Streets</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/K3NAZnSXJqY/habari-063-hits-the-streets" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/habari-063-hits-the-streets/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:habari-063-hits-the-streets/1255722218</id><updated>2009-10-16T15:46:32-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-24T23:54:50-05:00</app:edited><published>2009-10-16T15:46:32-04:00</published><category term="Habari" /><content type="html">&lt;p&gt;The good folks at the Habari Project have made a point release of Habari, bringing it up to version 0.6.3.&lt;/p&gt;&lt;p&gt;Point releases are generally reserved for security related issues. Other issues may also be fixed, but generally they would have to be major or minor enough to include without changing Habari's behavior.&lt;/p&gt;&lt;p&gt;This release has several security fixes. First, it closes a hole by which an authorized user could manually fiddle with the urls while logged in and gain access to another user's user information page. The release also polishes up the access control list system by bringing the undelete plugin into its fold, so users can't accidently permanently delete posts that other users have written, and better integrates the core dashboard modules plugin with the ACL system.&lt;/p&gt;&lt;p&gt;A non-security feature in this release is a work- around for a bug in PHP 5.2.10 which prevented cURL from working properly. This version of PHP had a couple of issues with its handling of cURL ( see, for example, http://bugs.php.net/bug.php?id=48518 and http://bugs.php.net/bug.php?id=48733). Since ISPs are starting to move to this version of PHP, and Ubuntu's Karmic Koala is shipping with PHP 5.2.10, it was thought advisable to include a fix for this in Habari, so users wouldn't have to be concerned about what version of PHP they were using.&lt;/p&gt;&lt;p&gt;If your site is running Habari 0.6.2, the update will be seamless. Earlier versions should also have no problems, so head over to &lt;a href="http://habariproject.org/en/habari-063-released"&gt;Habari's release post&lt;/a&gt;, download the update, backup your data, and get on the freshest stable version of Habari!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=K3NAZnSXJqY:a7l445Xlcy8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=K3NAZnSXJqY:a7l445Xlcy8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=K3NAZnSXJqY:a7l445Xlcy8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=K3NAZnSXJqY:a7l445Xlcy8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=K3NAZnSXJqY:a7l445Xlcy8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/K3NAZnSXJqY" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/habari-063-hits-the-streets</feedburner:origLink></entry><entry><title>Do Modern Copyright Laws Benefit Society?</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/lB1uM5cCqlQ/do-modern-copyright-laws-benefit-to-society" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/do-modern-copyright-laws-benefit-to-society/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:do-modern-copyright-laws-benefit-to-society/1254322413</id><updated>2009-09-30T10:53:35-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-30T10:54:39-04:00</app:edited><published>2009-09-30T10:28:09-04:00</published><category term="Creativity" /><category term="Communication" /><category term="politics" /><content type="html">&lt;p&gt;Article I, Section 8 of the U.S. Constitution enumerates the powers held by Congress. Among those is the power&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;To promote the progress of science and useful arts, by securing for limited times to authors and inventors the exclusive right to their respective writings and discoveries;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://www.nolo.com/legal-encyclopedia/checklist-29483.html"&gt;Determining the Length of Copyright Protection&lt;/a&gt; shows when copyrights expire, given the state of current copyright law in the United States.&lt;/p&gt;&lt;p&gt;What public good or progress in science and useful arts is served by copyright law that allows copyrights to last decades past the death of the creator, or at least 95 years in the case of works for hire?&lt;/p&gt;&lt;p&gt;Seriously. What do you think?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=lB1uM5cCqlQ:9Rlx55eHgBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=lB1uM5cCqlQ:9Rlx55eHgBs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=lB1uM5cCqlQ:9Rlx55eHgBs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=lB1uM5cCqlQ:9Rlx55eHgBs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=lB1uM5cCqlQ:9Rlx55eHgBs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/lB1uM5cCqlQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/do-modern-copyright-laws-benefit-to-society</feedburner:origLink></entry><entry><title>Quick Quips VI</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/4xdT3lSs0qE/quick-quips-vi" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-vi/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:post/1248120736</id><updated>2009-07-20T16:12:16-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-20T16:13:45-04:00</app:edited><published>2009-07-20T16:11:05-04:00</published><category term="Asides" /><content type="html">&lt;blockquote&gt;&lt;p&gt;The problem with young people is they're not old. The problem with old people is they're not young.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=4xdT3lSs0qE:nrGvvTxKYH8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=4xdT3lSs0qE:nrGvvTxKYH8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=4xdT3lSs0qE:nrGvvTxKYH8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=4xdT3lSs0qE:nrGvvTxKYH8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=4xdT3lSs0qE:nrGvvTxKYH8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/4xdT3lSs0qE" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-vi</feedburner:origLink></entry><entry><title>Quick Quips V</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/C8eXLfdhw78/quick-quips-v" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-v/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:quick-quips-v/1245474099</id><updated>2009-06-20T01:03:21-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-20T01:03:21-04:00</app:edited><published>2009-06-20T01:03:21-04:00</published><category term="Asides" /><content type="html">&lt;blockquote cite="Billie"&gt;&lt;p&gt;He has a sign but it doesn't say anything&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;cite&gt;Billie&lt;/cite&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=C8eXLfdhw78:79uKomg1y7A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=C8eXLfdhw78:79uKomg1y7A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=C8eXLfdhw78:79uKomg1y7A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=C8eXLfdhw78:79uKomg1y7A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=C8eXLfdhw78:79uKomg1y7A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/C8eXLfdhw78" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-v</feedburner:origLink></entry><entry><title>Habari 0.6.2 Released</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/oxcQIglqKpA/habari-062-released" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/habari-062-released/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:habari-062-released/1243021016</id><updated>2009-05-22T15:37:55-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T08:56:04-04:00</app:edited><published>2009-05-22T15:37:55-04:00</published><category term="Habari" /><content type="html">&lt;p&gt;It's been a busy month in Habari land. On April 6, 2009, version 0.6 was released after a six month wait between releases.&lt;/p&gt;&lt;p&gt;Version 0.6 brought major changes, with many, many ( to put it in technical terms ) bugfixes, the integration of access control lists, allowing the possibility of multiuser blogs, speed improvements, improved UTF-8 support, improved support for HiEngine theme templating, and several user interface improvements in the admin section of the blog engine.&lt;/p&gt;&lt;p&gt;As it went into the wild, the need for more bug fixes was seen, and version 0.6.1 was released on May 11, 2009.&lt;/p&gt;&lt;p&gt;Today, May 22, 2009, &lt;a href="http://habariproject.org/en/habari-062-released"&gt;version 0.6.2&lt;/a&gt; has seen the of day. It seems that Habari got to be part of a session presented by Sebastian Bergmann at PHP|Tek, showing how if someone knew your database name and password, and you uploaded Habari and hadn't installed it yet nor uploaded a config.php file, your site could be subject to their whim. It's a pretty slim security hole, but today's release takes care of it adequately for now, with a full fix due when version 0.7 is released.&lt;/p&gt;&lt;p&gt;&lt;a href="http://dist.habariproject.org/habari-0.6.2.zip"&gt;Download Habari 0.6.2&lt;/a&gt;, and enjoy.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=oxcQIglqKpA:bb3M_l41Dts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=oxcQIglqKpA:bb3M_l41Dts:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=oxcQIglqKpA:bb3M_l41Dts:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=oxcQIglqKpA:bb3M_l41Dts:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=oxcQIglqKpA:bb3M_l41Dts:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/oxcQIglqKpA" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/habari-062-released</feedburner:origLink></entry><entry><title>Quick Quips IV</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/z9CBRhbWmlw/quick-quips-iv" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-iv/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:quick-quips-iv/1242069425</id><updated>2009-05-11T15:17:32-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-11T15:17:32-04:00</app:edited><published>2009-05-11T15:17:32-04:00</published><category term="Asides" /><content type="html">&lt;p&gt;The government's approach to a successful economy&lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Spend more money than you take in.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=z9CBRhbWmlw:8aOZg0ApTh8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=z9CBRhbWmlw:8aOZg0ApTh8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=z9CBRhbWmlw:8aOZg0ApTh8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=z9CBRhbWmlw:8aOZg0ApTh8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=z9CBRhbWmlw:8aOZg0ApTh8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/z9CBRhbWmlw" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-iv</feedburner:origLink></entry><entry><title>The Next Step In Blog Domination</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/f5KHUobq-Ig/the-next-step-in-blog-domination" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/the-next-step-in-blog-domination/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:the-next-step-in-blog-domination/1239157100</id><updated>2009-04-07T22:26:00-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-07T22:26:00-04:00</app:edited><published>2009-04-07T22:26:00-04:00</published><category term="Habari" /><category term="ACL" /><category term="Blogging" /><content type="html">&lt;p&gt;The Habari Project has taken another step on it's road to dominating the world of blogging software with &lt;a href="http://habariproject.org/en/habari-06-released"&gt;the release of Habari 0.6&lt;/a&gt; on April 6, 2009.&lt;/p&gt;&lt;p&gt;In internet years, blog software is old. Some people say the age of blogging has come and gone. Tens of millions of blogs worldwide gives the lie to that. Blogging is an important part of the internet landscape, and blogging software is one of the most important pieces of internet software many people use.&lt;/p&gt;&lt;p&gt;The current dominant player is WordPress, which has recently released WordPress 2.7.1. It is used by millions, many of whom use the self-hosted version of the software. It is popular, in large part because of the number of themes and plugins that are available for it.&lt;/p&gt;&lt;p&gt;Set aside the themes and plugins and look at WordPress itself for a moment. What do you see? Open up the admin and you see the equivalent of a busy office, with people scurrying back and forth, intent on busy business that you haven't a clue what it means. Eventually, with hours of work, you begin to become familiar with the purpose of each widget, gadget, and menu item you see. You learn to weave your own path of busy business through the contents of the office. You learn to get your work done. Still, WordPress itself intrudes. You have learned to work with it, not make it work with you.&lt;/p&gt;&lt;p&gt;Open Habari's admin, on the other hand, and you see a clean, empty room. There's a spare couple of lines of text at the top, maybe a box, text in the the left hand of the title bar, and a link to your blog in the right hand of the title bar. As with WordPress, you are confused, not because the busyness of unknown gadgets present for unknown tasks, but because of the lack of gadgets for any tasks. You drift your mouse over the text in the left side of the title bar and a menu drops, a menu containing links to create posts, manage posts, manage comments, manage themes, etc. Each link takes you to a new room. There is no clutter. There are no unknown or unobvious gadgets and widgets. As you work, you learn to add the gadgets you want, to get your work done without Habari intruding. You learn to make Habari work with you, not you with it.&lt;/p&gt;&lt;p&gt;Now look at the back end. All blogging software has to have a place to store its data. WordPress gives you the choice of MySQL or, ... MySQL. As Henry Ford is reputed to have said, "You can have any color you want, as long as it's black."&lt;/p&gt;&lt;p&gt;Habari gives the choice of MySQL or SQLite, with beginning support for PostgreSQL. This choice is more important than you think. The vast majority of blogs are small, and get relatively few visitors, yet the use of MySQL as the database requires the user to learn to use, and manipulate a client-server database intended for large, heavily visited sites. An SQLite database, on the other hand, is a single, simple file stored in your filesystem. No arcane setup is needed. It Just Works. Backing up your database doesn't require special commands or a management interface. It requires downloading a copy of the file.&lt;/p&gt;&lt;p&gt;Then there are the number of sites you can run off an installation of WordPress. You can run one, or you can run one. Sure, there is WordPress MU, but have you tried to work with it. It isn't for the weekend warrior.&lt;/p&gt;&lt;p&gt;Habari, on the other hand, can run multiple independent domains or subdomains out of the box, simply, on one install. You don't need to be an expert to set it up. Make a subdirectory. Point your webserver at it, create a simple configuration file, and run the installer again. In under 10 minutes you're done (doing it all by hand). Here, for example, five sites are running on one Habari installation. When it's time to upgrade, copy the files once and you're done.&lt;/p&gt;&lt;p&gt;But back to the announcement of Habari 0.6.&lt;/p&gt;&lt;p&gt;One thing WordPress has had that Habari has lacked is the ability to safely support multiple groups of users with different rights. This is the main thing the new version of Habari brings to the table. It has a granular system of access control (ACL) that allows you to set up multiple groups with very specific rights. It is now safe to open up your Habari site to outside authors and editors. You can create private posts for that limited group of people you want to allow to read them. You can even start to commercialize your material by having subscriber only sections.&lt;/p&gt;&lt;p&gt;One more step on the path.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=f5KHUobq-Ig:__U2Qnljc_o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=f5KHUobq-Ig:__U2Qnljc_o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=f5KHUobq-Ig:__U2Qnljc_o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=f5KHUobq-Ig:__U2Qnljc_o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=f5KHUobq-Ig:__U2Qnljc_o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/f5KHUobq-Ig" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/the-next-step-in-blog-domination</feedburner:origLink></entry><entry><title>Group Permission Interactions In Habari's Access Control System</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/jlakXSYY0Kw/group-permission-interactions-in-habaris-access-control-system" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/group-permission-interactions-in-habaris-access-control-system/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:group-permission-interactions-in-habaris-access-control-system/1238498384</id><updated>2009-03-31T07:19:44-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-31T07:23:20-04:00</app:edited><published>2009-03-31T07:23:20-04:00</published><category term="Habari" /><category term="ACL" /><content type="html">&lt;p&gt;One of the things that is hard to do when designing a piece of software is predict the interactions which its features imply. A case in point is the access control list (ACL) capability that will in Habari's next release.&lt;/p&gt;&lt;p&gt;The purpose of ACL is to control what people are able to do and what posts they are able to see.&lt;/p&gt;&lt;p&gt;Owen Winkler has given an outline of how Habari's ACL system works in &lt;a href="http://redalt.com/blog/habari-permissions-system-overview"&gt;Habari Permissions System Overview&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As is described there, post permissions are based on the CRUD model. Can a user &lt;strong&gt;create&lt;/strong&gt;, &lt;strong&gt;read&lt;/strong&gt;, &lt;strong&gt;update&lt;/strong&gt; (edit) or &lt;strong&gt;delete&lt;/strong&gt; a post? To these are added the &lt;strong&gt;deny&lt;/strong&gt; permission, which denies access to a post whatever the other permissions on it.&lt;/p&gt;&lt;p&gt;All users who are not logged in to Habari belong to the anonymous group. This group is only able to read and comment on posts, whether entries or static pages. If a plugin adds a new content type to Habari, the plugin generally gives the anonymous group read access to the new content type.&lt;/p&gt;&lt;p&gt;Things become more interesting and complicated when considering users who are able to log in to Habari.&lt;/p&gt;&lt;p&gt;All logged in users are automatically added to the authenticated group. Out of the box, this group has the same access rights that the anonymous group has.They can read and comment on all post content types.&lt;/p&gt;&lt;p&gt;Habari comes with four post-related tokens out of the box.&lt;br&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Permissions to one's own posts&lt;/strong&gt; - which controls permissions to the posts which one creates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permissions to all posts&lt;/strong&gt; - which controls permissions to all posts of whatever content type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permissions to posts of type 'entry'&lt;/strong&gt; - which controls permissions to all posts with the content type entry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permissions to post of type 'page'&lt;/strong&gt; - which controls permissions to all static pages.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;One important characteristic of Habari's ACL system that may not be obvious is that permissions on a given post are additive. Logged in users can belong to different groups, each of which has different permissions on a given post. In deciding whether a user has access to a given post, the permissions from each group to which they belong are combined in such a way that they have the highest access level to the post from each group to which they belong.&lt;/p&gt;&lt;p&gt;Take the example of a user who belongs to a group called &lt;em&gt;authors&lt;/em&gt;. This group is able to do anything with their own posts of whatever content type, and their own posts only. They also belong to a group called &lt;em&gt;page editors&lt;/em&gt;. This group can read or edit any static page. They cannot, however, create or delete static pages. They cannot even read other content types.  Remember, out of the box this user also belongs to the &lt;em&gt;authenticated&lt;/em&gt; group, which can read all posts of whatever type.&lt;/p&gt;&lt;p&gt;Combining these permissions shows that, when logged in, the user will be able to create, edit, read, and delete their own posts (given by membership in the &lt;em&gt;authors&lt;/em&gt; group), read and edit all pages by all users (given by membership in the &lt;em&gt;page editors&lt;/em&gt; group), and read all posts of whatever type by all users (given by membership in the &lt;em&gt;authenticated&lt;/em&gt; group).&lt;/p&gt;&lt;p&gt;When creating groups and adding users to them, administrators need to take the interaction between the tokens allowed to each group into account.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=jlakXSYY0Kw:026JZdM8T5w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=jlakXSYY0Kw:026JZdM8T5w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=jlakXSYY0Kw:026JZdM8T5w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SagRising?a=jlakXSYY0Kw:026JZdM8T5w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SagRising?i=jlakXSYY0Kw:026JZdM8T5w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/jlakXSYY0Kw" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/group-permission-interactions-in-habaris-access-control-system</feedburner:origLink></entry><entry><title>How to Use Lighty in a Development Environment</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/g8OqHOOcnHo/how-to-use-lighty-in-a-development-environment" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/how-to-use-lighty-in-a-development-environment/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2009:how-to-use-lighty-in-a-development-environment/1233747086</id><updated>2009-02-04T06:31:26-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-06T18:51:48-05:00</app:edited><published>2009-02-04T07:49:49-05:00</published><category term="Habari" /><category term="PHP" /><category term="programming" /><category term="debugging" /><category term="Web servers" /><category term="lighttpd" /><content type="html">&lt;p&gt;It is a given that one needs to have a local server set up in order to develop and test PHP applications. Most people use Apache, either by installing Apache, PHP, and MySQL individually or by installing one of the LAMP, WAMP, or MAMP packages. Until recently, that was the route I took, using &lt;a href="http://www.apachefriends.org/en/xampp-windows.html"&gt;XAMPP Lite from Apache Friends&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Unfortunately, the latest release of XAMPP Lite, version 1.7.0, forced me to begin looking for an alternative. Until this version things worked relatively well. I was able to create, run, and test dynamic web applications, notably Habari, using both MySQL and SQLite for the database backend, and debug them using &lt;a href="http://xdebug.org/"&gt;XDebug&lt;/a&gt;, first using &lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/a&gt; with its DBGP plugin as a makeshift IDE, then using &lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; (which I've come to like a lot) as its PHP support improved.&lt;/p&gt;&lt;p&gt;When I upgraded to XAMPP Lite 1.7.0 my development productivity died. First, connecting to MySQL was an impossibility. Researching the issue, I found that other people were having the same problem. The fix was to download PHP from php.net and install the standard distributions libraries in place of the ones that came with XAMPP Lite. Second, I was unable to use XDebug. XDebug has always been problematic for me with XAMPP Lite. I was able to get it to work, but would still have frequent instances in which the loading of the XDebug extension killed Apache. With the latest version of XAMPP Lite, every load of XDebug killed Apache, causing me to have to give up any attempt to actually trace running code and use only var_dump() or Habari's Utils::debug() function to check variables at times I'd decide using my best guess as to where problems might lie. Needless to say, this quickly became intolerable.&lt;/p&gt;&lt;p&gt;I could have looked for another WAMP replacement for XAMPP Lite, but decided that since a lot of my issues revolved around the interaction of XDebug and Apache, it would be a good idea to look into other server software. I remembered talk that Habari could be installed on &lt;a href="http://www.lighttpd.net/"&gt;Lighty&lt;/a&gt;, the lighttpd server which is used by the likes of YouTube and Wikipedia, so I decided to give it a try.&lt;/p&gt;&lt;p&gt;Just as there are various WAMP packages, there are LIMP (horrible acronym by the way) packages combining lighttpd, MySQL, and PHP in a single installable package. The most notable of these for Windows is the &lt;a href="http://en.wlmp-project.net/"&gt;WLMP Project&lt;/a&gt;, but one further requirement I have is that, if at all possible, I'd like to have software that can be run from a flash drive as well as my computer's hard drive. That was the reason I was using XAMPP Lite instead of the full XAMPP package to begin with. I found such a package for lighttpd in &lt;a href="http://www.lighty2go.com/"&gt;Lighty2Go&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Installing Lighty2Go is easy. All you have to do is download the package and unpack it in the location of your choice using an archiver that is able to deal with the 7 Zip archiving format. Starting the lightppd and MySQL servers is accomplished by running the Start-Lighty2Go.exe executable that is located in the root of the package. This activates the servers and installs a menu in Windows' tray, which is identified by Lighty's paper airplane logo. You can verify that Lighty is up and running by navigating to http://localhost in your browser, where you'll see the Lighty2Go test page if all is well, which for me, it immediately was.&lt;/p&gt;&lt;p&gt;There are a couple of changes you have to make to get Lighty2Go to work with Habari and XDebug. The first of these requires editing Lighty2Go's configuration file, which is located at Lighty2Go/LighTPD/conf/lighttpd-l2g.conf. Lighty's configuration is somewhat different than Apache's. Most notably, from what I've been able to find out. all configuration has to performed in this one file or files which it includes. Overriding it's settings from the equivalent of individual .htaccess files in ad hoc directories isn't possible. Within this main configuration file similar functions to those used in Apache's configuration are possible, though.&lt;/p&gt;&lt;p&gt;The first change you'll have to make is to ensure that url rewriting is enabled by uncommenting the line that says "mod_rewrite" in the server.modules section. Like Apache, Lighty uses the &lt;strong&gt;#&lt;/strong&gt; symbol for comments, so just delete that symbol from the appropriate line.&lt;/p&gt;&lt;p&gt;The next thing you'll want to do is enable virtual hosting for Lighty. Lighty has several ways to do this, but the following has been the simplest for me.&lt;br&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Decide where you want to keep your web documents. I just added a /www subdirectory to Lighty2Go's HTDOCS directory in which to keep my personal web documents and scripts. You could also put your web documents somewhere completely different since you can set the document root in your vhost configuration. This way was simplest for me though, because I can just transfer the entire directory structure between my hard drive and flash drive.&lt;/li&gt;
&lt;li&gt;Create a file in the same directory as Lighty2Go's configuration file. I just named it lighttpd-vhost.conf.&lt;/li&gt;
&lt;li&gt;Add this line somewhere in lighttpd-l2g.conf
&lt;pre&gt;include var.l2gDir + "/LightTPD/conf/lighttpd-vhost.conf"&lt;/pre&gt;
I added it right after the section labelled &lt;strong&gt;virtual hosts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Open up lighttpd-vhost.conf. Add a section similar to this for each vhost you want to have:
&lt;pre&gt;
$HTTP["host"] == "www.sagrising.loc" {
    server.document-root = var.l2gDir + "/HTDOCS/www"
    dir-listing.activate = "disable"
	url.rewrite = (
		"^/(.*)\.(.+)$" =&gt; "$0",
		"^/(.+)/?$" =&gt; "/index.php/$1"
	)
}
&lt;/pre&gt;
This code is doing four things. First, it tells you the name of the site. Second, it sets the document root for the site. Note the use of the variable var.l2gDir. This is set up by Lighty2Go's scripts and always points to Lighty2Go's root directory. It also illustrates that variables and simple scripting can be done in Lighty's configuration files. Lua has been often used for this. Third, it turns directory listing off. This isn't really an issue with a local install, but is a security measure for sites open to the web. Fourth is the rewrite rule. Note the difference from the rewrite rule given on Habari's wiki on the &lt;a href="http://wiki.habariproject.org/en/Installation#Configuring_Lighttpd"&gt;Habari installation page&lt;/a&gt;. The rewrite rule listed there works, but if the directory structure of Habari ever changes, I believe there's a chance it could break. The rewrite rule listed above I found at Guy Rutenberg's &lt;a href="http://www.guyrutenberg.com/2008/05/24/clean-urls-permalinks-for-wordpress-on-lighttpd/"&gt;Clean URLs (Permalinks) for Wordpress on Lighttpd&lt;/a&gt;. I know little about regex expressions, but my understanding of this is that the first line allows static files to be found and loaded properly, while the second line allows posts to be found and loaded properly. All I really know is that to date, it has worked for me and doesn't depend on Habari having a certain directory structure.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;The las thing you need to do is configure PHP.&lt;br&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Open Lighty2Go's php.ini file. It is located at Lighty2Go/PHP/php.ini.&lt;/li&gt;
&lt;li&gt;Enable PDO by uncommenting the lines loading php_pdo.dll, php_pdo_mysql.dll, and php_pdo_sqlite.dll. While you're there, make sure php_curl.dll and php_mbstring.dll are also being loaded.&lt;/li&gt;
&lt;li&gt;Scroll down to the bottom of the file and add these lines to load XDebug
&lt;pre&gt;
[XDebug]
; Only Zend OR (!) XDebug
zend_extension_ts="/Lighty2Go/PHP/ext/php_xdebug.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/local_www/tmp"
xdebug.profiler_output_name = cachegrind.out.%t.%p
&lt;/pre&gt;
Save the fle and close it.&lt;/li&gt;
&lt;li&gt;If you haven't already done so, get XDebug and unpack it. Rename the dll to php_xdebug.dll and place it in Lighty2Go/PHP/ext.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;That's it. Restart Lighty2Go and navigate to the website you just enabled. It should pop right up for you.&lt;/p&gt;&lt;p&gt;I've had no issues using this setup since I installed it. Debugging in NetBeans worked out of the box for me, allowing me to step through code and check the values of variables without problem. As an added bonus, most WAMP packages take upward of 200MB of space. Lighty2Go uses under 100MB. Functionality without issues in half the space. I can live with that.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=8IvgUyV6"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=GzXd22H0"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=GzXd22H0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=J49srtL0"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=J49srtL0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/g8OqHOOcnHo" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/how-to-use-lighty-in-a-development-environment</feedburner:origLink></entry><entry><title>Quick Quips 3</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/_DSlZ9T4078/quick-quips-3" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-3/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:www.sagrising.loc,2009:quick-quips-3/1231981550</id><updated>2009-01-14T20:05:50-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-14T20:05:50-05:00</app:edited><published>2009-01-14T20:04:42-05:00</published><category term="Asides" /><content type="html">&lt;p&gt;I found this sign on my office door. I wonder if it's a message.&lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;Temporarily Out Of Service&lt;/em&gt;&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=ekql1zzY"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=E4QnH076"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=E4QnH076" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=l2ovsLdv"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=l2ovsLdv" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/_DSlZ9T4078" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-3</feedburner:origLink></entry><entry><title>Quick Quips 2</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/H3dslYPHYqs/quick-quips-2" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-2/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:quick-quips-2/1229639146</id><updated>2008-12-18T17:25:46-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-18T17:26:47-05:00</app:edited><published>2008-12-18T17:26:47-05:00</published><category term="Habari" /><category term="Asides" /><content type="html">&lt;p&gt;&lt;a href="http://twofishcreative.com/michael/blog/"&gt;michaeltwofish&lt;/a&gt; says &lt;a href="http://skippy.net"&gt;skippy&lt;/a&gt; is&lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;the man&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=9AftzxmH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=XnRVNqon"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=XnRVNqon" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=8U5sLABP"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=8U5sLABP" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/H3dslYPHYqs" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-2</feedburner:origLink></entry><entry><title>Electric Car Snake Oil?</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/iwsn3Ba7QtE/electric-car-snake-oil" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/electric-car-snake-oil/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:post/1229401484</id><updated>2008-12-15T23:24:44-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-16T08:07:01-05:00</app:edited><published>2008-12-16T08:07:01-05:00</published><category term="Green technology" /><content type="html">&lt;p&gt;I dislike snake oil. It's entirely too common in our world. It is especially endemic in times of 'crisis', such as we are experiencing now.&lt;/p&gt;&lt;p&gt;One of the current crises of the day is energy, which for some reason is the focus of a crisis every few decades. One of the proposed cures for the energy crisis and climate change is to begin using electric vehicles.&lt;/p&gt;&lt;p&gt;I'm not against electric vehicles. I'd love to have an electric car for my day to day use. They are less polluting than internal combustion cars. They have fewer parts and less to go wrong. An electric motor can run almost forever if properly maintained. For example, I have a movie projector with an electric motor that is over 60 years old, and still working well.&lt;/p&gt;&lt;p&gt;I &lt;strong&gt;am&lt;/strong&gt; against snake oil and misleading claims. A recent example is an article I read in Wired about a &lt;a href="http://blog.wired.com/cars/2008/12/three-drivetrai.html"&gt;new multi-fuel car Mercedes Benz is designing&lt;/a&gt;, which they are calling the &lt;a href="http://www.autoblog.com/2008/12/15/official-details-mercedes-benz-concept-bluezero-trio/"&gt;Concept BlueZero&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;On the face of it, the BlueZero sounds pretty cool. The same basic model car can be equipped either as a purely electric vehicle that has to be plugged into an external source to charge the batteries, an electric vehicle with a one liter liquid fuel motor as a charger, or as a fuel cell powered electric vehicle. I want to talk about the electric model.&lt;/p&gt;&lt;p&gt;In it's purely electric configuration the vehicle is to contain liquid cooled lithium-ion batteries with a capacity of 35KWH. It would have a range of around 240 miles according to the press release or 125 miles according to the Wired article, and a 70KW motor (approximately equivalent to 94HP). An efficient small car can easily get 40MPG. In energy terms, gasolene has around 125,000 BTU, which equates to around 36.6 KW.&lt;/p&gt;&lt;p&gt;Most internal combustion engines have an energy efficiency of around 20%. To be generous, assume the car getting 40MPG has an efficiency of 25%. That means it is using around 9.1KW of the energy in a gallon of gasolene to go 40 miles.&lt;/p&gt;&lt;p&gt;Compared to that, the BlueZero going 125 miles on 35KWH of electricity doesn't sound outrageous, since it equates to around 32.5MPG, which in terms of expense works out to an energy cost of $5.25 to go 125 miles if electricity is available at $0.15/KWH, whereas the efficient small internal combustion engine powered car costs $6.25 to go the same distance if gasolene only costs $2.00/gallon, which gives a slight dollar saving to the electric car. On the other hand, if gasolene costs $4.00/gallon like we recently experienced in the US, the internal combustion automobile would cost $12.50 to go that same 125 miles, resulting in quite an expense savings on the part of the electric car. That same $5.25 would take you 240 miles with the press release figures for the BlueZero, at the equivalent of over 62MPG.&lt;/p&gt;&lt;p&gt;The worrisome part comes in when talking about charging the BlueZero. To quote the Wired article:&lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Mercedes says they charge in four hours when plugged into a typical wall outlet.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Imagine that. You could plug the BlueZero into your living room receptacle and in four hours transfer 35KWH of electricity from your incoming power line to your car's batteries. 35KWH in four hours. 8.75KWH in an hour. In the US, where we have 110V power, this means 79.5 amps of electricity are coursing through the walls of your house. I don't know about your house, but mine uses wiring that will safely pass 15A, less than a fifth of the 79.5A. That turns a four charging time in 20 hours.&lt;/p&gt;&lt;p&gt;Mercedes Benz is a European company, though. In Europe electricity in the home is usually 220V. At that voltage only 39.7A would be travelling through your living walls to the typical wall socket to charge those car batteries in four hours. I don't know about you, but I doubt the typical European house is built to safely handle almost 40A of electricity travelling through its wiring.&lt;/p&gt;&lt;p&gt;To be accurate, the press release just says the battery can be charged in 3 - 4 hours. It says nothing about using a typical wall outlet. Still, that calls for circuitry that can safely pass 40 - 80 amps of electricity at normal voltages, which would require special wiring to be installed in your house to handle the charging. I wouldn't mind that. I just wish people would try to be accurate rather than misleading. We need truth, not snake oil.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=OtEJBNBK"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=K6hxMvhy"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=K6hxMvhy" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=pd6LbRGY"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=pd6LbRGY" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/iwsn3Ba7QtE" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/electric-car-snake-oil</feedburner:origLink></entry><entry><title>WordPress Free</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/UZvUYbiBYbQ/wordpress-free" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/wordpress-free/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:wordpress-free/1225980195</id><updated>2008-11-06T09:03:15-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-26T13:29:07-05:00</app:edited><published>2008-11-06T09:28:20-05:00</published><category term="Habari" /><category term="Plugins" /><category term="Blogging" /><content type="html">&lt;blockquote&gt;&lt;p&gt;Free at last.&lt;br&gt;Free at last.&lt;br&gt;&lt;/blockquote cite="Martin Luthor King, Jr."&gt;&lt;/p&gt;&lt;p&gt;For quite a while most of the sites I manage have been using Habari. All but one, my main blog, &lt;a href="http://www.shardsofconsciousness.com"&gt;Shards of Consciousness&lt;/a&gt;, which has remained on WordPress. Shards, like this site, has been sadly neglected, in no small part due to having to use both WordPress and &lt;a href="http://www.habariproject.org"&gt;Habari&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As of last night, that has changed and Shards has been migrated to use Habari, living on the same installation as most of my other sites. The one difference is that I've used MySQL for Shards' backend rather than SQLite, partly because Shards gets a lot more readers than my other sites, and partly to gain experience using it.&lt;/p&gt;&lt;p&gt;The issue that was holding me back from using Habari for Shards was the lack of podcasting support. As with most things, and thankfully so, podcasting isn't built into the core of Habari and creating a suitable plugin wasn't a high priority for most of us since most people &lt;strong&gt;don't&lt;/strong&gt; podcast. Habari being an open source project, in large part individuals work on what interests them, which is as it should be. &lt;a href="http://aymptomatic.net"&gt;Owen Winkler&lt;/a&gt;, with input from the community, had created the basic outline needed for podcasting, but an outline doesn't mean fully functional.&lt;/p&gt;&lt;p&gt;Finally, though, the Habari podcast plugin has reached a usable state. It has rough edges, particularly the player which lacks something visually and in terms of configurability, and stats, which are non-existent. On the other hand, creating a podcast is, as they say, &lt;em&gt;drop dead easy&lt;/em&gt;, with full support for iTunes. In particular, the plugin automatically calculates the podcast's size and time length, and is integrated in Habari's media silo, though you can also use audio files stored on other servers, such as &lt;a href="http://www.libsyn.com/index.php?&amp;amp;mode=logout&amp;amp;message="&gt;LibSyn&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Joy of joys, free at last!&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=k9KQQs0Y"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=IA1UeRL7"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=IA1UeRL7" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=LNaByh2t"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=LNaByh2t" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/UZvUYbiBYbQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/wordpress-free</feedburner:origLink></entry><entry><title>Quick Quips I</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/Ng2oPUh72Qw/quick-quips-i" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/quick-quips-i/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:quick-quips-i/1225254302</id><updated>2008-10-29T00:25:02-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-18T17:27:17-05:00</app:edited><published>2008-10-29T00:23:51-04:00</published><category term="Freedom" /><category term="Asides" /><content type="html">&lt;blockquote&gt;&lt;p&gt;If you're not having fun, you're doing it wrong.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=GBX8vpk3"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=260nqmPC"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=260nqmPC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=XTnSqdCu"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=XTnSqdCu" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/Ng2oPUh72Qw" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/quick-quips-i</feedburner:origLink></entry><entry><title>A Necessary Evil</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/xCeCsL7drsY/a-necessary-evil" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/a-necessary-evil/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:a-necessary-evil/1221451796</id><updated>2008-09-15T00:09:57-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-15T00:09:57-04:00</app:edited><published>2008-09-15T00:04:36-04:00</published><category term="Freedom" /><category term="politics" /><content type="html">&lt;p&gt;Government is a necessary evil. Mark that last word. While it may be necessary, it is never to be trusted or encouraged. No matter how a government begins, its goals end up being it's own survival and control over your behavior.&lt;/p&gt;&lt;p&gt;Remember that the next time someone says they want to hold political office.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=Qu8yVGLP"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=NJxUja2i"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=NJxUja2i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=wHUELopx"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=wHUELopx" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/xCeCsL7drsY" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/a-necessary-evil</feedburner:origLink></entry><entry><title>How to Have a Fresh, Hot Cup of Coffee</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/0wEjPNvIB-Q/how-to-have-a-fresh-hot-cup-of-coffee-1" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/how-to-have-a-fresh-hot-cup-of-coffee-1/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:how-to-have-a-fresh-hot-cup-of-coffee/1219765739</id><updated>2008-08-26T07:50:08-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-18T12:40:54-04:00</app:edited><published>2008-08-26T07:50:59-04:00</published><category term="environment" /><content type="html">&lt;p&gt;I love my coffee. Plain, black coffee. No cream. No sugar. No cappuccino. Just fresh, plain, black coffee.&lt;/p&gt;&lt;p&gt;At home I use a &lt;a href="http://melitta.com/"&gt;Melitta&lt;/a&gt; brewer. I heat water in a tea kettle. Pour it into the Melitta, then pour the coffee into an insulated carafe so it tastes fresh and hot, but not burnt, every cup.&lt;/p&gt;&lt;p&gt;That doesn't help when I'm at work. I work in a different location every day, most of which don't have a coffee brewer, but all of which have a microwave oven, so I used to keep a coffee cup at each location, and carry instant coffee with me. If you drink coffee, you know that no matter how famous the brand is, it doesn't taste like fresh coffee. As my wife would say, &lt;em&gt;How do you drink that stuff&lt;/em&gt;?&lt;/p&gt;&lt;p&gt;Fortunately, my wife loves me. She got me a 16oz french press coffee brewer. If you've never seen a french press, it consists of a decanter of some kind that has a lid with a plunger. Attached to the end of the plunger is a fine meshed screen.&lt;/p&gt;&lt;p&gt;Making coffee in a french press is easy. Put enough coffee in the decanter for the amount of water you'll be adding. Add water that is near boiling, then put the lid on. Let the grounds steep for a few minutes, then slowly lower the plunger. The screen traps the grounds at the bottom of the decanter. After letting the coffee sit for a minute more to let things settle, pour yourself a hot, fresh brewed cup of coffee.&lt;/p&gt;&lt;p&gt;When I first started using the french press I tried the normal, pre-ground coffee we use at home. That was a mistake. It is too fine for the mesh screen, so I ended up with somewhat 'chewy' coffee. Since I'd rather drink my coffee than eat it, I bought some whole beans and ground them in a hand-cranked, burr type grinder that we have at home. The first cup I made with the hand-ground coffee was heavenly. I haven't looked back.&lt;/p&gt;&lt;p&gt;So now I get fresh, hot, black coffee wherever I am. No more instant. No more &lt;em&gt;How do you drink that&lt;/em&gt;? Just caffeine pleasure.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=ykPO6459"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=1wvaCUzC"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=1wvaCUzC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=VTxGQWxZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=VTxGQWxZ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/0wEjPNvIB-Q" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/how-to-have-a-fresh-hot-cup-of-coffee-1</feedburner:origLink></entry><entry><title>John Edwards' Infidelity</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/EnvzCXlmoMw/john-edwards-infidelity" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/john-edwards-infidelity/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:john-edwards-infidelity/1218492311</id><updated>2008-08-26T05:19:07-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-26T05:19:07-04:00</app:edited><published>2008-08-11T14:20:38-04:00</published><category term="politics" /><content type="html">&lt;p&gt;As I was driving home from work today I listened to the news on &lt;a href="http://www.npr.org"&gt;National Public Radio&lt;/a&gt; (NPR) as I usually do. They were reading comments they had received from listeners about a story regarding the public announcement that yes, Senator John Edwards had an extra-marital affair.&lt;/p&gt;&lt;p&gt;As &lt;a href="http://www.npr.org/templates/story/story.php?storyId=93510023"&gt;one listener wrote&lt;br&gt;&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I am disappointed that you are making John Edwards' infidelity a major story.I would have thought that we were past the time when sexual conduct was still news.&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Sexual conduct in and of itself isn't news. Infidelity in a public figure is. These people are elected on the basis of promises they make to the voter. Infidelity to one's life partner is pretty much a guarantee that one will not keep troth with strangers.&lt;/p&gt;&lt;p&gt;So yes, unfaithfulness in a politician is news, especially when the unfaithfulness is denied when it is made a matter of public record. That shows the politician to be untruthful as well as unfaithful. All of us have made poor decisions at some point in our lives. That's part of learning and growing up. The decision isn't improved by lying about it. Compounding an error is a part of remaining a child.&lt;/p&gt;&lt;p&gt;Do you, as a voter, believed that you will be treated any better than a person's partner?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=0ESPAbEy"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=MPd94MnA"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=MPd94MnA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=cV1d27Rf"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=cV1d27Rf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/EnvzCXlmoMw" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/john-edwards-infidelity</feedburner:origLink></entry><entry><title>Arctic Ice 0.3.2 Released</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/1uvz4MKWnd0/arctic-ice-updated" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/arctic-ice-updated/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:arctic-ice-updated/1204113404</id><updated>2008-08-16T22:38:31-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-16T22:38:31-04:00</app:edited><published>2008-02-27T02:23:32-05:00</published><category term="Themes" /><content type="html">&lt;p&gt;I just uploaded a new version of Arctic Ice, a simple theme for Habari.&lt;/p&gt;&lt;p&gt;&lt;img src="http://sagrising.cockrumpublishing.com/user/sites/sagrising.cockrumpublishing.com/files/images/arctic_ice_0.3.2.png" alt="Arctic Ice Screenshot" style="height: 300px; width: 400px; padding: 15px 0;"&gt;&lt;/p&gt;&lt;p&gt;Arctic Ice is a minimalist white and blue two-column theme that features:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Recent posts in the sidebar&lt;/li&gt;
&lt;li&gt;Recent comments in the sidebar&lt;/li&gt;
&lt;li&gt;Tags in the sidebar.&lt;/li&gt;
&lt;li&gt;Titles based on the title of the current page&lt;/li&gt;
&lt;li&gt;Search engines are told whether to index the page or not in the header. Only the home page, individual pages, and single post pages are allowed to be indexed.&lt;/li&gt;
&lt;li&gt;A built in site map that is automatically generated. Just create an empty page with the title "Sitemap", and you find it added to the menubar.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Current changes to Arctic Ice include:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Different markers on sublists in entries&lt;/li&gt;
&lt;li&gt;Simplified comment form&lt;/li&gt;
&lt;li&gt;Improved comment color scheme&lt;/li&gt;
&lt;li&gt;Fixed: Submit buttons were changing colors in Firefox when they received focus&lt;/li&gt;
&lt;li&gt;Fixed: Validation error on comment list&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.cockrumpublishing.com/files/arctic_ice-0.3.2.zip" title="Download Arctic Ice" onclick="javascript:urchinTracker ('/downloads/arctic_ice'); "&gt;Download Arctic Ice&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=ZNvTA9uZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=SCur14fQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=SCur14fQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=ctsYDyWJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=ctsYDyWJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/1uvz4MKWnd0" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/arctic-ice-updated</feedburner:origLink></entry><entry><title>Using jQuery To Style Labels</title><link rel="alternate" href="http://feedproxy.google.com/~r/SagRising/~3/BDbyptv6ZYE/using-jquery-to-style-labels" /><link rel="edit" href="http://sagrising.cockrumpublishing.com/using-jquery-to-style-labels/atom" /><author><name>Richard Cockrum</name><uri>http://sagrising.cockrumpublishing.com</uri></author><id>tag:sagrising.cockrumpublishing.com,2008:using-jquery-to-style-labels/1218222885</id><updated>2008-08-08T11:33:30-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-08T11:33:30-04:00</app:edited><published>2008-08-08T11:33:30-04:00</published><category term="Plugins" /><category term="Javascript" /><content type="html">&lt;p&gt;One of the plugins for &lt;a href="http://www.habariproject.org/en/"&gt;Habari&lt;/a&gt; that I use on a regular basis is the markup plugin, which allows you to add Html tags to your content as your write through the use of a toolbar rather than having to add the markup by hand.&lt;/p&gt;&lt;p&gt;The markup plugin has always had one minor irritant, though. Habari's publish page is well labeled. The title area has a label. The content area has a label. The tags area has a label. For each of these, when the field doesn't have the focus the label is in the field. Move the focus to the field, or write something in the field, and the label moves above the field. It's a nice indicator of where the focus is, and where the content is.&lt;/p&gt;&lt;p&gt;Unfortunately, the markup plugin doesn't take this label into account. When you go to your blank publish page to write a post, the content label appears &lt;strong&gt;under&lt;/strong&gt; the toolbar - not an especially helpful place for it to be.&lt;/p&gt;&lt;p&gt;I'm not a javascript programmer. I barely know PHP. :)  But I wanted to fix this minor irritant, so I got to start learning. Habari uses &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; as it's javascript workhorse. One of the tasks for which it is used is moving the labels around on the publish page.&lt;/p&gt;&lt;p&gt;A unique thing about jQuery is that almost everything begins in it's $(document).ready() function. &lt;br&gt; I dug through Habari's javascript code and found this snippet that controlled the movement of the labels:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;
// Move labels into elements. Use with usability-driven care.
$('label.incontent').each(function(){

	var ctl = '#' + $(this).attr('for');
	if($(ctl).val() == '') {
		$(ctl).addClass('islabeled');
		$(this).addClass('overcontent');
	} else {
		$(ctl).addClass('islabeled'); 
		$(this).addClass('abovecontent'); 
	}
	
	$(this).click(function() {
		$(ctl).focus();
	})
});

$('.islabeled').focus(function(){
	$('label[for='+$(this).attr('id')+']')
	 	 .removeClass('overcontent')
	 	 .addClass('abovecontent').show(); 
}).blur(function(){
	if ($(this).val() == '') {
		$('label[for='+$(this).attr('id')+']')
	 	 .addClass('overcontent')
	 	 .removeClass('abovecontent'); 
	} else {
		$('label[for='+$(this).attr('id')+']')
	 	 .removeClass('overcontent')
	 	 .addClass('abovecontent');
	}
});

&lt;/pre&gt;&lt;p&gt;This code totally bewildered me, so I went off to jQuery's docs page, where I found two things that clarified it.&lt;br&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;$() creates a jQuery object. Almost &lt;em&gt;anything&lt;/em&gt; can become a jQuery object. A css class. An html item with an id. An html item with an attribute.A set of html items. These are called &lt;strong&gt;selectors&lt;/strong&gt; and jQuery has a series of functions to manipulate and choose between them.
&lt;/li&gt;
&lt;li&gt;A large number of jQuery's functions return a jQuery object, so you can chain together several functions.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;So what this code is doing is&lt;br&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Looping through all the labels with a class of &lt;em&gt;incontent&lt;/em&gt;. For each one, find the text field it labels. Add the &lt;em&gt;islabeled&lt;/em&gt; class to the control. If the control contains text, add the &lt;em&gt;abovecontent&lt;/em&gt; class to the label. if not, add the &lt;em&gt;overcontent&lt;/em&gt; class to the label. Looking in the css file shows that the &lt;em&gt;overcontent&lt;/em&gt; class moves the label into the text field, while the &lt;em&gt;abovecontent&lt;/em&gt; class moves the label above. the text field.&lt;/li&gt;
&lt;li&gt;When the focus changes on the page, toggle the label classes between &lt;em&gt;overcontent&lt;/em&gt; and &lt;em&gt;abovecontent&lt;/em&gt; as necessary, depending on whether the text field is receiving or losing the focus and whether it contains text.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Since it uses jQuery, the markup plugin already has a $(document).ready() function. My first thought was to use the jQuery css() function to change the margins in the content fields label, so it was actually in the content field and not under the toolbar.&lt;br&gt;&lt;/p&gt;&lt;pre&gt;
$('label[for=content].overcontent').css('margin-top', '30);
$('label[for=content].overcontent').css( 'margin-left', '5px;');
&lt;/pre&gt;&lt;p&gt;This failed miserably. The label appeared where it was supposed to when the text box was empty, but the css change also affected the label when it had the &lt;em&gt;abovecontent&lt;/em&gt; class and when text was in the content field, so the label rarely appeared where it belonged.&lt;/p&gt;&lt;p&gt;So I asked myself what my actual goal was. Answer: to move the label. Now, it is accepted practice  to use css to position elements on a web page. Normally, this css is in a separate style sheet. However, html elements can have a &lt;strong&gt;style&lt;/strong&gt; attribute, which will override whatever is in the page's style sheets. Using the style attribute tends to be frowned upon, but it is possible, syntactically correct, and jQuery has a function perfect for this purpose - the attr() function, which you can use to add any attribute to an element. What I ended up with was this:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;
$('label[for=content].overcontent')
 	 .attr('style', 'margin-top:30px;margin-left:5px;');
$('#content').focus(function(){
	$('label[for=content]').removeAttr('style'); 
}).blur(function(){
	if ($('#content').val() == '') {
		$('label[for=content]')
 	 	 	 .attr('style', 
	 	 	     'margin-top:30px;margin-left:5px;'); 
	} else {
		$('label[for=content]')
 	 	 	 .removeAttr('style');
	}
});
&lt;/pre&gt;&lt;p&gt;When the page loads, the content field's label has a style attribute added to it that moves the label into the proper area of the content field. Whenever the content field gets the focus, the style attribute is removed from the label, so it can move where it is supposed to go. When the content field loses the focus, if it doesn't contain text, the style attribute is added back to the label so it can move back down into the field. If it doesn't contain text, the style is removed from the label, in case it was on it.&lt;/p&gt;&lt;p&gt;This isn't a perfect piece of code. It still doesn't feel right using the style attribute. But it serves the purpose of removing a minor irritant from the use of the plugin. More important, it shows that even a tyro can learn to use jQuery for practical purposes.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SagRising?a=2gcOHqzV"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=3ZdNa16s"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=3ZdNa16s" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SagRising?a=EhooVo9K"&gt;&lt;img src="http://feeds.feedburner.com/~f/SagRising?i=EhooVo9K" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SagRising/~4/BDbyptv6ZYE" height="1" width="1"/&gt;</content><feedburner:origLink>http://sagrising.cockrumpublishing.com/using-jquery-to-style-labels</feedburner:origLink></entry></feed>
