<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:cc="http://web.resource.org/cc/"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>blogZero</title>
    <link>http://loadaveragezero.com/app/s9y/</link>
    <description>Web Development Community News, Culture and Commentary, Tools and Techniques</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:" />

    <image rdf:resource="http://loadaveragezero.com/img/blogzero.gif" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/168-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/167-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/166-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/165-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/164-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/163-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/162-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/161-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/160-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/159-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/158-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/157-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/156-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/155-guid.html" />
        <rdf:li resource="http://loadaveragezero.com/app/s9y/index.php?/archives/152-guid.html" />
</rdf:Seq>
    </items>
</channel>

<image rdf:about="http://loadaveragezero.com/img/blogzero.gif">
        <url>http://loadaveragezero.com/img/blogzero.gif</url>
        <title>RSS: blogZero - Web Development Community News, Culture and Commentary, Tools and Techniques</title>
        <link>http://loadaveragezero.com/app/s9y/</link>
        <width>96</width>
        <height>52</height>
    </image>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/168-guid.html">
    <title>WordPress: Whoa!</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/168-WordPress-Whoa!.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/app/wp/wp-content/uploads/2008/11/wordpress-sm.jpg&quot; class=&quot;right&quot; alt=&quot;wordpress&quot; title=&quot; WordPress &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/wordpress.png&quot; class=&quot;icon&quot; alt=&quot;icon&quot; title=&quot; WordPress &quot; /&gt;
After my incredibly &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/167-Texpattern-Doh!.html&quot; title=&quot; Texpattern: D'oh! &quot;&gt;frustrating&lt;/a&gt; experience installing and configuring &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Blogware#textpattern:cms&quot; title=&quot; drx: Programming: Languages: PHP: Blogware: Textpattern &quot;&gt;Textpattern&lt;/a&gt;, I decided to give WordPress a shot. Talk about night and day. You would either have to have years of experience working with Textpattern, or be a complete masochist, to even consider going with that package.
&lt;/p&gt;

&lt;p&gt;Neither of which includes me. After downloading the archive, creating a directory for it, unpacking the software, creating a MySQL database complete with credentials, running the installer, a little fiddling with rewrite rules&amp;#8212;I had WordPress up and running with friendly URLs in 10 minutes. Okay, maybe not the famous &lt;a href=&quot;http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install&quot;&gt;5-minute&lt;/a&gt; install, but I'm cautious and don't like to make mistakes that come back to haunt me later.&lt;/p&gt;

&lt;h3&gt;Themes&lt;/h3&gt;

&lt;p&gt;The default theme is okay, or you can go with the &quot;classic&quot; interface via the base install. Both one of which are a big improvement over Textpattern's default (boy, TP sure is the whipping boy around here lately). Anyway, I shopped around for a nice theme and quickly settled on &lt;a href=&quot;http://wordpress.org/extend/themes/inove&quot;&gt;iNove&lt;/a&gt; which is slick out of the box, and I discovered later really easy to tweak. Right off the bat I was impressed with this guy's skills. Little things like using &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/154-Google-Code-Ajax-Libraries-API.html&quot; title=&quot; Google Code: Ajax Libraries API &quot;&gt;Sprites&lt;/a&gt; for icons and other imagery, make a &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#greyhound:rules&quot; title=&quot; drx: Programming: Development Tools: High Performance Web Sites &quot;&gt;big difference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Plugins&lt;/h3&gt;

&lt;p&gt;Plugins are a joy to work with. They're easy to install, and if you go with crowd favorites you're bound to find one that is well-documented, smartly coded and doesn't interfere with WordPress itself or other plugins. Thus far I've installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://urbangiraffe.com/plugins/ajax-calendar/&quot;&gt;Ajax Calendar&lt;/a&gt; &amp;#8212; replaces WP calendar with one that doesn't page refresh&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://akismet.com/&quot; title=&quot; Automattic Kismet &quot;&gt;Akismet&lt;/a&gt; &amp;#8212; blocks trackback and comment spam&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dagondesign.com/articles/sitemap-generator-plugin-for-wordpress/&quot;&gt;Dagon Sitemap Generator&lt;/a&gt; &amp;#8212; fully customizable sitemaps&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.arnebrachhold.de/redir/sitemap-home/&quot;&gt;Google XML Sitemaps&lt;/a&gt; &amp;#8212; for Google indexing, not users as above&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/highslide4wp/&quot;&gt;Highslide&lt;/a&gt; &amp;#8212; zoom image thumbnails with many options&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.michelf.com/projects/php-markdown/&quot;&gt;Markdown&lt;/a&gt; &amp;#8212; lightweight markup language for easier authoring of posts&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://txfx.net/code/wordpress/page-links-to/&quot;&gt;Page Links To&lt;/a&gt; &amp;#8212; easily create links that are external to WP or offsite&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lesterchan.net/portfolio/programming/php/&quot;&gt;PageNavi&lt;/a&gt; &amp;#8212; advanced paging navigation&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/wp-recentcomments/&quot;&gt;RecentComments&lt;/a&gt; &amp;#8212; display recent comments in your sidebar&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fairyfish.net/2007/09/12/wordpress-23-related-posts-plugin/&quot;&gt;Related Posts&lt;/a&gt; &amp;#8212; create related posts links via tags&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.idunzo.com/projects/clean-archives/&quot;&gt;SRG Clean Archives&lt;/a&gt; &amp;#8212; search engine friendly archive listings&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wordpress.org/extend/plugins/wp-syntax/&quot;&gt;WP-Syntax&lt;/a&gt; &amp;#8212; source code syntax highlighting via &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#geshi:highlighter&quot; title=&quot; drx: Programming: Development Tools: Generic Syntax Highlighter &quot;&gt;GeSHi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Administration&lt;/h3&gt;

&lt;p&gt;Like any admin interface, it takes some getting used to. But I found the learning curve fairly shallow and was soon up to speed. Configuring your sidebar is really nice. You select items on the left side to place on the right, and using Ajax you can order them however you want by drag and drop. One thing that had me puzzled at first was the four sidebar sections: north, south, east and west. At first I pictured the entire page, but then realized your sidebar is dived into top, middle and bottom, with the middle having a left (west) and a right (east). Makes perfect sense now.&lt;/p&gt;

&lt;p&gt;Configuring the menu bar was also a little strange. These are referred to as &quot;pages&quot; rather than &quot;posts.&quot; You can put anything you want into them or use a plugin such as the sitemap generator mentioned above. The interface for adding content to these pages is almost the same as regular posts, but you can disable things like commenting and such so they appear as, well, normal content. Or you can &quot;perma&quot; link any of them to some other page, as I did in the case of my Contact option.&lt;/p&gt;

&lt;p&gt;I fiddled with the theme stylesheet quite a bit to get things the way I wanted. It's easy to do right from the admin interface by selecting the Design tab then the Theme Editor. I also added a Blogroll OPML link next to my RSS feed at the top of the sidebar. But that involved a little PHP coding, adding a third icon to the &lt;a href=&quot;http://loadaveragezero.com/app/wp/wp-content/themes/inove/img/feeds.gif&quot;&gt;feeds Sprite&lt;/a&gt; and again, modifying the CSS. I also fiddled with some other icon sprites, but I won't go into that here.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;There are still a few little things that perturb me, for instance, when WordPress magically reformats my raw content when I select &quot;Edit post&quot; from the public side. My advice is to use the admin interface for fixing typos and such. I would also prefer a post preview that doesn't involve opening a new window (or tab if you have your browser configured that way). I can understand the rationale behind it, and I'm sure I could come up with a better solution. That really is the power of open-source software, if you have the skills you can make it do anything you want. Plus, using a scripting language like PHP makes it all that much easier. Especially when the code is well written and documented. Serendipity is a nightmare, at least this old version I'm still using.&lt;/p&gt;

&lt;p&gt;But not for long! I will announce when I plan on moving over to the &lt;a href=&quot;http://loadaveragezero.com/app/wp/&quot; title=&quot; blogZero [beta] &quot;&gt;new blog&lt;/a&gt; permanently.&lt;/p&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>ajax</dc:subject>
<dc:subject>blogroll</dc:subject>
<dc:subject>blogware</dc:subject>
<dc:subject>feed</dc:subject>
<dc:subject>markdown</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>opml</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>plugin</dc:subject>
<dc:subject>rss</dc:subject>
<dc:subject>spam</dc:subject>
<dc:subject>tagging</dc:subject>
<dc:subject>theme</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Commentary</dc:subject>
    <dc:date>2008-11-23T13:42:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=168</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=168</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/167-guid.html">
    <title>Texpattern: D'oh!</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/167-Texpattern-Doh!.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/tp-doh!.gif&quot; class=&quot;right&quot; alt=&quot;textpattern&quot; title=&quot; Textpattern: Do'h! &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/textbook.gif&quot; class=&quot;icon&quot; alt=&quot;hammer&quot; title=&quot; Do'h! &quot; /&gt;
I had such high hopes for Textpattern, I really did. I was sold on the slick looking admin interface, the tons of templates to choose from (or themes or whatever they call them). The nice, clean layout of the Web site. The tons of resources&amp;#8212;an almost complete &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/165-MediaWiki-Installation-Friendly-URLs.html&quot; title=&quot; MediaWiki Installation: Friendly URLs &quot;&gt;MediaWiki&lt;/a&gt; documentation site&amp;#8212;plenty of users. Bloody wankers! I was duped!
&lt;/p&gt;

&lt;h3&gt;Cut and Paste?&lt;/h3&gt;

&lt;p&gt;Oh, at first everything seemed honky-dory. A straightforward install, if a little strange (that's when it started to dawn on me). First, you create a &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Databases/MySQL&quot; title=&quot; drx: Software: Databases: MySQL &quot;&gt;MySQL&lt;/a&gt; database, assign a user CREATE, READ, WRITE, etc., privileges. Okay, I've got no problem with that. Next, run the installer. It checks to make sure it can connect to the database, okay, then it spits out this code into a &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt; and tells you to cut-and-paste the code into a file called config.php. Cut-and-paste? Why not just create the damn file and write the settings to it? That's when the hair on my neck started to crawl. Oh, there would be more, much, much more cutting and pasting to come.&lt;/p&gt;

&lt;h3&gt;First Post&lt;/h3&gt;

&lt;p&gt;Okay, I get the sucker up and running. I fiddle with the settings to name my blog and so forth. I fix a few permissions problems on directories, no big deal. I create a quick dummy post, I click &quot;View site&quot; and what does it do? Tries to open another browser window. Ack! But of course I have my browser configured do redirect such nonsense to a new tab. Oh, there will be many more tabs in my future.&lt;/p&gt;

&lt;p&gt;The first problem I run into are &quot;friendly URLs.&quot; Which I prefer, so do users, so to search engines. Only I'm getting 404 errors. Oh god, here we go, I know what's next. Sure enough, there's an &lt;code&gt;.htaccess&lt;/code&gt; file sitting in the root of the install. I cannot stand application packages that blindly assume you have &lt;code&gt;mod_rewrite&lt;/code&gt; installed and &lt;code&gt;.htaccess&lt;/code&gt; enabled. Which I do, and I don't. The latter for a very good reason that I won't go into here. At any rate, I know what to do, I create a &lt;code&gt;&amp;lt;Directory&amp;gt;&lt;/code&gt; container for the package and set the rewrite rules in my &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Servers/Apache&quot; title=&quot; drx: Internet: WWW: Servers: Apache &quot;&gt;Apache&lt;/a&gt; config file, then restart the daemon. Viola, friendly URLs! I promptly delete the &lt;code&gt;.htaccess&lt;/code&gt; file regardless of &quot;Diagnostics&quot; telling me it's missing.&lt;/p&gt;

&lt;p&gt;So off I go to my &quot;View site&quot; tab. The presentation is basic, really basic. But I'm not worried about it, I can choose from one of the hundreds of themes out there or learn how to design one myself, right? I decide to go with the former. I find one, I download the archive. The documentation Wiki tells me to follow the instructions in the archive. Why this isn't standardized is a complete mystery to me.&lt;/p&gt;

&lt;h3&gt;Zip Files?&lt;/h3&gt;

&lt;p&gt;Who uses zip files? Folks, I knew Phil Katz. He died a lonely, pathetic alcoholic in a grubby motel room at the ripe old age of 37. Okay, okay, XPInstall files (.xpi) are zipped, JAR files, almost all Unix-like OSs have open-source zip and unzip... Actually, at the time, &lt;a href=&quot;http://wikipedia.org/wiki/PKZIP&quot;&gt;PKZIP&lt;/a&gt; was a pretty revolutionary piece of software, even if Katz stole most of his original code from SEA. At any rate, this was before you could even lay hands on a 56k modem so...&lt;/p&gt;

&lt;p&gt;Anyway, I open this archive with my trusty GUI interface for such things and after looking through the contents I find what must be the install instructions since the file is called Instructions.rtf. &lt;acronym title=&quot; Rich Text Format &quot;&gt;RTF&lt;/acronym&gt;? How about INSTALL.txt, or how about RTFM? Anyway, I'm reading the &quot;instructions&quot; and they tell me to cut-and-paste the contents of such-and-such a file into such-and-such &quot;folder&quot; (pages, styles, forms). What folders pages, styles, forms? Oh, dear lord, I think, it's time to study the database. Sure enough, CSS, forms and pages are all stored in the database instead of the filesystem. Worse, there seems to be no admin interface to deal with these things. So I open another tab to Google and start searching...and find a plugin called &lt;code&gt;mcw_templates&lt;/code&gt; which adds the ability to import and export pages, forms, and stylesheets to/from the database. Why this isn't built-in to the functionality of Textpattern to begin with is a compete mystery to me.&lt;/p&gt;

&lt;p&gt;It turns out the &quot;mcw&quot; in the plugin name is the author's initials, so I visit his &lt;a href=&quot;http://mikewest.org/archive/mcw-templates&quot;&gt;Web site&lt;/a&gt; and promptly discover that he no longer maintains the plugin and it is now on &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/155-gist.github.git.html&quot;&gt;GitHub&lt;/a&gt;. The former is a little unnerving, but the latter give me hope. But before I go traipsing off to GitHub I take the time to read over the instructions on installing and using it. Not encouraging: &quot;This plugin is beta in every sense of the word, as its only been tested on my 4.03 installation. It might work on other versions, but no promises!&quot; I have the latest Textpattern, v4.0.6, but hey, I'm a masochist so this doesn't stop me. He also states &quot;Regardless of where its been tested, this plugin messes around with your database. &lt;em&gt;Do not use it without backing up your database&lt;/em&gt;.&quot; Oh god, what have I gotten myself into? So I promptly back-up the DB, create the &lt;code&gt;_templates&lt;/code&gt; directory and make it world writable, then continue on to GitHub.&lt;/p&gt;

&lt;h3&gt;Uuencoded plugins?&lt;/h3&gt;

&lt;p&gt;When I get to the repository I find Mike's blurb on installing the plugin. I read it. It says to &quot;cut-and-paste the following data into the 'Install plugin' box&quot; under admin-&amp;gt;plugins. The data looks suspiciously like it's &lt;a href=&quot;http://wikipedia.org/wiki/Uuencoding&quot;&gt;uuencoded&lt;/a&gt; to me (actually, it turns out to be base64 encoded which is rife in this package). According to the Wiki, this technique is justified because it &quot;reduces the possibility of errors during transport,&quot; or some such nonsense. What transport? You mean between my clipboard and the plugins form? If anything, neophyte user error would be the biggest problem. Okay, so I paste in the data and click the submit button, which is labelled &quot;Upload.&quot; What upload? Oh god, my head is starting to pound. At any rate, the data is decoded then you can actually view the source before clicking &quot;Install&quot; to add the plugin. And don't forget, you then have to enable the damn thing by going back to your admin interface, clicking on the Plugins tab, finding it in the list (if you have more than one) and clicking &quot;No&quot; from the Active column. All very intuitive, not!&lt;/p&gt;

&lt;p&gt;Speaking of error-prone, does anyone remember the days when PCMag would publish those little &lt;a href=&quot;http://wikipedia.org/wiki/Debug_%28command%29&quot;&gt;debug&lt;/a&gt; .COM utilities? I sure do. In order to build them you had to painstakingly type in the data, byte by byte by byte, and then feed it to debug which would spit out the program (written in DOS assembler). Oh god, I haven't thought about that in years. You can even get the damn &lt;a href=&quot;http://www.amazon.com/gp/offer-listing/0553345265/ref=dp_olp_used?ie=UTF8&amp;amp;condition=used&quot; title=&quot; PC Magazine DOS Power Tools with Disk: Techniques, Tricks and Utilities &quot;&gt;book&lt;/a&gt; from an Amazon reseller for less than a dime (plus $4 shipping of course) if you want. Sigh, I digress.&lt;/p&gt;

&lt;p&gt;Okay, so the plugin is now installed. Now what? It turns out the semantics have magically changed and now the plugin (once active) is under the Extensions tab (much fist pounding...) and there it is, has its own tab and everything: &quot;Template Files.&quot; Great, now I can back-up the default template and (cough) install the new one. The former works pretty well, I name it &quot;default&quot; (go figure) and head back to my shell to see the results. Sure enough, under the _templates directory is &quot;default&quot; with pages, forms and css folders. Great, I take a look at these to comprehend what's next. It helps some, but this is when things get really ugly. I back up to the _templates directory and create a new folder for the theme that still sits waiting with baited breath over in my archive application. I continue to read the instructions, which go something like &quot;cut-and-paste the contents of this-and-that file into the other file...&quot; Which, like an idiot, I do: 3 stylesheets, 9 forms and 5 pages.&lt;/p&gt;

&lt;p&gt;Then, I am told to create a folder for the images used by this theme in the images directory. Which images directory? At the root? Or the txp_img directory in the textpattern folder? I'm hoping that images is the correct place so I upload away. But the instructions aren't complete yet. I have to create two new sections (search and archives). Done. Next, the theme requires two additional plugins. Being an old hat at this already I install away. After several hours, it appears, I'm ready to install the theme. Crossing my sore fingers after this tedious, error-prone process is complete, I go back to the admin interface to the Template Files extension tab. I check the dropdown and sure enough, there is the theme I labored so hard to create, and I import it. What does the plugin do first? Promptly backs up the old template theme once again and names it &quot;preimport-data.&quot; Sigh, now I have two copies of the default theme. But what the hell, you can never have enough back-ups, right?&lt;/p&gt;

&lt;h3&gt;Deprecated tags&lt;/h3&gt;

&lt;p&gt;So now I head back to my &quot;View blog&quot; tab and refresh. All seems well, until I start getting errors and warning from the engine about &quot;Textpattern Notice: tag is deprecated&quot; and &quot;Article tags cannot be used outside an article context.&quot; It turns out &quot;tags,&quot; and the pseudo-namespace &lt;code&gt;txp:&lt;/code&gt; are Textpattern's method of including dynamic content into your templates. Reminded me way too much of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP#smarty:engine&quot; title=&quot; Smarty Template Engine &quot;&gt;Smarty&lt;/a&gt;. The first example, it turned out, was simply a matter of changing the &lt;code&gt;sitename&lt;/code&gt; tag to &lt;code&gt;site_name&lt;/code&gt;. Only not so simple really, because you have to &lt;em&gt;edit the goddamn source code then reimport the templates back into the database&lt;/em&gt;. The second example I never found a fix for because after searching for it all I found were a shitload of sites that Google had indexed with the same exact error message.&lt;/p&gt;

&lt;h3&gt;All Your Desktop are Belong to Us&lt;/h3&gt;

&lt;p&gt;When I have a half dozen tabs running in my browser, one for my blog, one for my blog admin, one to the main Textpattern site, one to the documentation Wiki, one to the templates site, one to a forum site, one for GitHub, another for searching Google...you get the idea, there is something terribly wrong. On top of that, a shell window, a text editor window, a GUI zip file archiver app...you need a 40&quot; monitor just to install this damn thing.&lt;/p&gt;

&lt;p&gt;Textpattern, I've got one word for you: disappointed.&lt;/p&gt;

&lt;pre&gt;
app&gt; rm -rf tp
app&gt; mysql
mysql&gt; drop database tp
&lt;/pre&gt;

&lt;p&gt;Bye-bye Texpattern.
&lt;/pre&gt;&lt;/p&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>apache</dc:subject>
<dc:subject>blogware</dc:subject>
<dc:subject>debug</dc:subject>
<dc:subject>extension</dc:subject>
<dc:subject>github</dc:subject>
<dc:subject>mediawiki</dc:subject>
<dc:subject>mod_rewrite</dc:subject>
<dc:subject>plugin</dc:subject>
<dc:subject>smarty</dc:subject>
<dc:subject>template</dc:subject>
<dc:subject>uuencode</dc:subject>
<dc:subject>zip</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Commentary</dc:subject>
    <dc:date>2008-11-21T16:13:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=167</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=167</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/166-guid.html">
    <title>PHP Specificity Part VI: High Performance PHP</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/166-PHP-Specificity-Part-VI-High-Performance-PHP.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/performance.jpg&quot; class=&quot;right&quot; alt=&quot;performance&quot; title=&quot; High Performance PHP &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/bullet.gif&quot; class=&quot;icon&quot; alt=&quot;bullet&quot; title=&quot; Faster than a Speeding Bullet! &quot; /&gt; Okay, now we're getting somewhere! Still dissatisfied at my attempt to reduce the glut in the parent PHP category page, I took yet another look. Wouldn't you know it? There was a definite thread of resources in there relating to improving the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Performance&quot; title=&quot; drx: Programming: Languages: PHP: Performance &quot;&gt;performance&lt;/a&gt; of applications written in PHP. Not surprising given the growing complexity of the language itself, the applications written in it, and the myriad of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks&quot; title=&quot; drx:  Programming: Languages: PHP: Frameworks &quot;&gt;Frameworks&lt;/a&gt; available these days. The latter is especially critical, because with abstraction, underlying complexity, and growing feature sets, before you even start a project your code base is large. Very large. I'm not going to name names, you know who you are.
&lt;/p&gt;

&lt;h3&gt;Frameworks&lt;/h3&gt;

&lt;p&gt;I prefer the simple over the complex, the modular over the monolithic. Given the opportunity, I would go with something like &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#codeigniter:framework&quot;&gt;CodeIgnitor&lt;/a&gt;, which allows you to use the pieces you want and eliminate the rest. The same is true for templating engines. I've used &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP#smarty:engine&quot;&gt;Smarty&lt;/a&gt; of course, but it puzzles me why the developers would reinvent the wheel, so to speak, by adding an entirely new dynamic language syntax for templates, when PHP &lt;em&gt;already is a templating language&lt;/em&gt; (and a whole lot more). I'm a &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP#savant:template-system&quot;&gt;Savant&lt;/a&gt; man, call me an idiot.&lt;/p&gt;

&lt;h3&gt;Web Publishing&lt;/h3&gt;

&lt;p&gt;Now we're getting into that gray area I've mentioned before. Is &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Content_Management#drupal:CMS&quot;&gt;Drupal&lt;/a&gt; a framework, a &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Content_Management&quot;&gt;CMS&lt;/a&gt; or an application? In my mind, some of each. Wikis and blogware packages I consider applications. It certainly helps to be a developer to get the most out of them, but it isn't strictly necessary.&lt;/p&gt;

&lt;h3&gt;User or Developer?&lt;/h3&gt;

&lt;p&gt;And this is also the point where I change my stance on complexity and features. There are certainly faster and easier to use Wiki packages than &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis#mediawiki:wiki&quot;&gt;MediaWiki&lt;/a&gt;, but do they have all the power? As always there is a trade-off. I get frustrated with Firefox for instance, because it has become rather bloated and I have bloated it even more with lots of extensions. But as a developer, and a bit of a designer, I could not live without &lt;a href=&quot;http://loadaveragezero.com/drx/extensions#firebug:console&quot;&gt;FireBug&lt;/a&gt;, Web Developer, ColorZilla, and countless other tools. Christ, I'm not even sure how the hell I managed back in the bad old days of using telnet to test &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/Protocols/HTTP&quot; title=&quot; drx: Internet: Protocols: HTTP &quot;&gt;HTTP&lt;/a&gt; requests.&lt;/p&gt;

&lt;h3&gt;Simple vs. Complex&lt;/h3&gt;

&lt;p&gt;My own philosophy on programming goes like this, start with primitives and build complexity as you move up towards the more abstract and powerful&amp;#8212;without going too far. We can see this in the &lt;a href=&quot;http://wikipedia.org/wiki/OSI_model&quot;&gt;OSI layer model&lt;/a&gt;, and an even better example, the early days of Unix. When &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/C#lucent:development&quot; title=&quot; The Development of the C Language &quot;&gt;Dennis Ritchie&lt;/a&gt; got tired of working on the kernel in PDP assembler, he took the time to build the more abstract language C. Funny how all the scripting languages, tools, hell, pretty much everything, is written in C, but now days how many of us code in C anymore? Even many of the extensions written for languages like Perl, Python, and of course PHP, are written in C. And there is a damn good reason for this: Performance.&lt;/p&gt;

&lt;h3&gt;Extensibility&lt;/h3&gt;

&lt;p&gt;This concept, to me, is absolutely key to good software. Use a high-performance compiled language to build the tools and you're left with solutions that are both easy to apply and responsive. The best of both worlds.&lt;/p&gt;

&lt;h3&gt;Results&lt;/h3&gt;

&lt;p&gt;Okay, and now for the final tally. After fragmenting the PHP category into &quot;general&quot; (now around 50 resources) there are six sub-categories (for a total of around 50 also). Divide and conquer my friends.&lt;/p&gt;

&lt;h3&gt;Specific Navigation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Part I: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/160-PHP-Specificity-Part-I-Frameworks.html&quot;&gt;Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part II: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html&quot;&gt;Wikis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part III: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/162-PHP-Specificity-Part-III-Content-Management-Systems.html&quot;&gt;Content Management Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part IV: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/163-PHP-Specificity-Part-IV-Debugging.html&quot;&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part V: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/164-PHP-Specificity-Part-V-Blogware.html&quot;&gt;Blogware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part VI: Performance&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>blogware</dc:subject>
<dc:subject>cms</dc:subject>
<dc:subject>codeigniter</dc:subject>
<dc:subject>debug</dc:subject>
<dc:subject>drupal</dc:subject>
<dc:subject>extension</dc:subject>
<dc:subject>firebug</dc:subject>
<dc:subject>framework</dc:subject>
<dc:subject>http</dc:subject>
<dc:subject>mediawiki</dc:subject>
<dc:subject>module</dc:subject>
<dc:subject>performance</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>resources</dc:subject>
<dc:subject>smarty</dc:subject>
<dc:subject>template</dc:subject>
<dc:subject>unix</dc:subject>
<dc:subject>wiki</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>PHP</dc:subject>
    <dc:date>2008-11-20T11:23:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=166</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=166</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/165-guid.html">
    <title>MediaWiki Installation: Friendly URLs</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/165-MediaWiki-Installation-Friendly-URLs.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/MediaWiki.gif&quot; class=&quot;right&quot; alt=&quot;mediawiki&quot; title=&quot; MediaWiki &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/wikizero.gif&quot; class=&quot;icon&quot; alt=&quot;wikizero&quot; title=&quot; wikiZero &quot; /&gt;
Last week, while researching and &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html&quot; title=&quot; blogZero: PHP Specificity Part II: Wikis &quot;&gt;evaluating&lt;/a&gt; open-source software packages written in PHP, I naturally took the time to install some of them to see how difficult it was and note any problems I might encounter. One of these was of particular interest. &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis#mediawiki:wiki&quot; title=&quot; drx: Programming: Languages: PHP: Wikis: MediaWiki &quot;&gt;MediaWiki&lt;/a&gt; is the software that drives &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Innovators#wikipedia:wiki&quot; title=&quot; drx: Internet: WWW: Innovators: Wikipedia &quot;&gt;Wikipedia&lt;/a&gt; and the rest of the projects under the &lt;a href=&quot;http://wikipedia.org/wiki/Wikimedia_Foundation&quot; title=&quot; Wikipedia: Wikimedia Foundation &quot;&gt;Wikimedia Foundation&lt;/a&gt; umbrella.
&lt;/p&gt;

&lt;h3&gt;Goals&lt;/h3&gt;

&lt;p&gt;Some of the goals I had in mind when I set out on this little project were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow best practices.&lt;/li&gt;
&lt;li&gt;Virtualize the install so PHP scripts and other resources visitors should not have access to are hidden.&lt;/li&gt;
&lt;li&gt;Friendly URLs&amp;#8212;I don't want to see any .php extensions while browsing.&lt;/li&gt;
&lt;li&gt;Customize the install for my particular needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://loadaveragezero.com/img/bomb.gif&quot; alt=&quot;bomb&quot; title=&quot; sudo(8) &quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Root&lt;/h3&gt;

&lt;p&gt;For security reasons, and the threat of downtime from customers who don't know what they're doing, most hosting companies severely limit what you're capable of doing in a shared environment&amp;#8212;and of all things they're not going to give you root access or &lt;a href=&quot;http://www.freebsd.org/cgi/man.cgi?query=sudo&amp;amp;sektion=8&amp;amp;manpath=FreeBSD+7.0-RELEASE+and+Ports&quot; title=&quot; FreeBSD Man Pages: sudo(8) &quot;&gt;sudo(8)&lt;/a&gt; privileges. Even on a dedicated server this can be a sticky situation. In order to follow the instructions below, at some point you're going to need that capability to, for example, restart you're Web server daemon. If you're running &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Operating_Systems/Unix/Linux#ubuntu:linux&quot; title=&quot; drx: Software: Operating Systems: Unix: Linux: Ubuntu Linux &quot;&gt;Ubuntu&lt;/a&gt; or another Linux distribution, or &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Operating_Systems/Unix/Mac_OS_X&quot; title=&quot; drx:  Software: Operating Systems: Unix: Mac OS X &quot;&gt;Mac OS X&lt;/a&gt;, on a local development box, you should be all set. You should also be comfortable using a shell and know how to edit text files.&lt;/p&gt;

&lt;h3&gt;Download&lt;/h3&gt;

&lt;p&gt;First you need to grab the source code from the MediaWiki Web site. You'll find it on the &lt;a href=&quot;http://www.mediawiki.org/wiki/Manual:Downloading_MediaWiki&quot; title=&quot; MediaWiki: Manual: Downloading MediaWiki &quot;&gt;Downloading MediaWiki&lt;/a&gt; page. It comes in a &lt;a href=&quot;http://en.wikipedia.org/wiki/Tar_%28file_format%29&quot; title=&quot; Wikipedia: tar (file format) &quot;&gt;tarball&lt;/a&gt;&amp;#8212;make sure you get the latest stable version. Also make sure you meet all the &lt;a href=&quot;http://www.mediawiki.org/wiki/Manual:Installation_requirements&quot; title=&quot; MediaWiki: Manual: Installation requirements &quot;&gt;requirements&lt;/a&gt; before attempting the install. It helps to know which versions of PHP and MySQL you're running beforehand.&lt;/p&gt;

&lt;h3&gt;Upload and unpack&lt;/h3&gt;

&lt;p&gt;After you download the file, upload it to your Web server into the &lt;a href=&quot;http://httpd.apache.org/docs/2.0/mod/core.html#documentroot&quot; title=&quot; Apache HTTP Server: core: DocumentRoot Directive &quot;&gt;docroot&lt;/a&gt; of your site. At the time I did this the MediaWiki latest stable version was 1.13.2 (released 10-2-2008), and the name of the compressed archive reflects this: &lt;code&gt;mediawiki-1.13.2.tar.gz&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Fire-up your shell client and visit docroot. You can decompress and extract the source in one command:&lt;/p&gt;

&lt;pre&gt;$ tar xzvf mediawiki-1.13.2.tar.gz&lt;/pre&gt;

You'll see a whole flurry of activity as the package is creating its source tree and populating the directories with files. You'll be left with a directory, just off docroot, with the same basename as the archive. The first thing I did was rename it to something more manageable:

&lt;pre&gt;$ mv mediawiki-1.13.2 w&lt;/pre&gt;

There's no need for the archive any longer so get rid of it.

&lt;pre&gt;$ rm mediawiki-1.13.2.tar.gz&lt;/pre&gt;

Then change into the &lt;strong&gt;w&lt;/strong&gt; directory.

&lt;pre&gt;$ cd w&lt;/pre&gt;

&lt;h3&gt;Configuration&lt;/h3&gt;

&lt;p&gt;
The browser-based installer will want to write out a file called &lt;code&gt;LocalSettings.php&lt;/code&gt; in the &lt;strong&gt;config&lt;/strong&gt; directory. To forestall any permission problems make that directory world writable:
&lt;/p&gt;

&lt;pre&gt;$ chmod a+w config&lt;/pre&gt;

&lt;p&gt;
Now point your browser at the directory off docroot you just created: example.com/w/ and follow the instructions to set some basic options and create the database. In a bit you won't access the &lt;strong&gt;w&lt;/strong&gt; folder directly, since we are going to virtualize it and create friendly URLs. Two things to keep in mind: the virtual directory does not really exist in the sense you create it in your filesystem, and (this is important), do not use the same name for both. By MediaWiki convention this virtual directory is called &quot;wiki,&quot; which you should be familiar with from browsing around Wikipedia.
&lt;/p&gt;

&lt;p&gt;
When the installation is complete, copy the config file down to the &lt;strong&gt;w&lt;/strong&gt; directory and add a few lines.
&lt;/p&gt;

&lt;pre&gt;$ cp config/LocalSettings.php .&lt;/pre&gt;

&lt;pre&gt;
// docroot/w/LocalSettings.php

$wgScriptPath  = '/w';        // real path
$wgArticlePath = '/wiki/$1';  // virtual path
$wgUsePathInfo = true;
&lt;/pre&gt;

&lt;p&gt;These settings, and one more task with your Apache config file, will take care of ever having to access the &lt;strong&gt;w&lt;/strong&gt; path directly, and will give you the nice URLs we're after.&lt;/p&gt;

&lt;h3&gt;Apache&lt;/h3&gt;

&lt;p&gt;You're going to need to be root on the box to do at least one of the following steps. Since I have a &lt;code&gt;virtual.conf&lt;/code&gt; file for this site there was no need to edit &lt;code&gt;httpd.conf&lt;/code&gt; directly. Your mileage may vary. Either way, in the &lt;a href=&quot;http://httpd.apache.org/docs/2.0/mod/core.html#virtualhost&quot; title=&quot; Apache HTTP Server: core: &lt;VirtualHost&gt; Directive &quot;&gt;&lt;code&gt;&amp;lt;VirtualHost&amp;gt;&lt;/code&gt;&lt;/a&gt; container for your site you need to add an &lt;a href=&quot;http://httpd.apache.org/docs/2.0/mod/mod_alias.html#alias&quot; title=&quot; Apache HTTP Server: mod_alias: Alias Directive &quot;&gt;Alias&lt;/a&gt; to finish this job:&lt;/p&gt;

&lt;pre&gt;Alias /wiki /real/path/on/your/server/docroot/w/index.php&lt;/pre&gt;

It's probably a good idea to make sure your config file(s) have no errors, then restart Apache:

&lt;pre&gt;
$ apachectl configtest
Syntax OK
$ sudo apachectl graceful
Apache gracefully restarted
&lt;/pre&gt;

&lt;p&gt;Then point your browser at: example.com/wiki/ and if everything went well you'll see the MediaWiki &quot;Installed successfully&quot; message on the Main_Page. An even cleaner set-up would be to create a sub-domain of your site, say: wiki.example.com, and install everything in the docroot. But I'm not going to get into that here.&lt;/p&gt;

&lt;h3&gt;mod_rewrite&lt;/h3&gt;

&lt;p&gt;There are a number of &lt;a href=&quot;http://www.mediawiki.org/wiki/Manual:Short_URL/wiki/Page_title_--_Both_no_root_and_root_access#Apache_Rewrite_method&quot; title=&quot; MediaWiki: Manual: Short URL: Apache Rewrite method &quot;&gt;other solutions&lt;/a&gt; out there, many of them involving &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Servers/Apache#apache:mod_rewrite&quot; title=&quot; drx: Internet: WWW: Servers: Apache: mod_rewrite &quot;&gt;&lt;code&gt;mod_rewrite&lt;/code&gt;&lt;/a&gt;. Unless you understand regular expressions and have some experience using mod_rewrite, or enjoy pain of the voodoo variety, I recommend going the Alias route. Why hit a tack with a sledgehammer?&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;MediaWiki is a large program and it uses lots of system resources. If you're in the market for a simple Wiki and one only you will be using then consider &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis&quot; title=&quot; drx: Programming: Languages: PHP: Wikis &quot;&gt;shopping around&lt;/a&gt; for something less complicated. I went for Big Daddy for a couple of reasons. One, I wanted to gain the experience of installing it, and two, I wanted to have my own sandbox, so to speak, to better understand the system, and in particular, to improve my skills editing Wiki documents using their &lt;a href=&quot;http://wikipedia.org/wiki/Wikipedia:MARKUP#Wiki_markup&quot; title=&quot; Wikipedia: Wiki markup &quot;&gt;markup language&lt;/a&gt;. With that said, it was worth the effort.&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/books/0596519796.jpg&quot; class=&quot;right&quot; alt=&quot;book&quot; title=&quot; MediaWiki &quot; /&gt;
Although there is little to see or do, you can visit &lt;a href=&quot;http://loadaveragezero.com/app/wiki/Main_Page&quot; title=&quot; loadaverageZero: wikiZero &quot;&gt;wikiZero&lt;/a&gt; to see the results of a fairly fresh install. Also, if you're really planning on diving into this, and you're a dead-tree fan like me, O'Reilly published &lt;a href=&quot;http://www.amazon.com/o/tg/detail/-/0596519796/loadaverageze-20&quot; title=&quot; MediaWiki &quot;&gt;MediaWiki&lt;/a&gt; just last month. I took a look at it and read some third-party reviews. It's a keeper if you plan on using this software to any great extent.
&lt;/p&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>apache</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>markup</dc:subject>
<dc:subject>mediawiki</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>software</dc:subject>
<dc:subject>web server</dc:subject>
<dc:subject>wiki</dc:subject>
<dc:subject>wikipedia</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Wiki</dc:subject>
    <dc:date>2008-11-18T16:06:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=165</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=165</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/164-guid.html">
    <title>PHP Specificity Part V: Blogware</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/164-PHP-Specificity-Part-V-Blogware.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/gutenberg.jpg&quot; alt=&quot;gutenberg&quot; class=&quot;right&quot; title=&quot; PHP Blogware &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/wordpress.png&quot; class=&quot;icon&quot; alt=&quot;wordpress&quot; title=&quot; WordPress &quot; /&gt; This is the fifth and final installment of the Specificity series. In it I'll be taking a look at open-source &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Blogware&quot; title=&quot; drx: Programming: Languages: PHP: Blogware &quot;&gt;blogging&lt;/a&gt; systems written in PHP. The last post on debugging PHP was a bit of a departure, this one lands squarely back in the realm of targeted &lt;acronym title=&quot; Content Management System &quot;&gt;CMS&lt;/acronym&gt; applications.
&lt;/p&gt;

&lt;p&gt;What do I mean by targeted? Well, there are general-purpose CMS packages, and there are ones that are designed for a more specific role. But this gets confusing, because many cross over into other territory. Take for example &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#trac:project&quot; title=&quot; The Trac Project &quot;&gt;Trac&lt;/a&gt;. Is it a software documentation &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis&quot; title=&quot; drx: Programming: Languages: PHP: Wikis &quot;&gt;Wiki&lt;/a&gt;, a front end to &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#svn:subversion&quot;&gt;Subversion&lt;/a&gt;, or an issue &lt;a href=&quot;http://loadaveragezero.com/drx/tag/T#tracking&quot; title=&quot; drx: Resources tagged as tracking &quot;&gt;tracking&lt;/a&gt; package? Well, all three.&lt;/p&gt;

&lt;h3&gt;Blogware&lt;/h3&gt;

&lt;p&gt;But we should get back on track. The number of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Blogware#features&quot; title=&quot; Blogware Features &quot;&gt;features&lt;/a&gt; in a sophisticated blogging platform is remarkable. The guys who build these packages are very talented (for the most part) and work their butts off. And users new to blogging may find that the &lt;a href=&quot;http://wikipedia.org/wiki/Glossary_of_blogging&quot; title=&quot; Glossary of blogging &quot;&gt;jargon&lt;/a&gt; alone is overwhelming. But the cool thing about these packages is you can start with a simple one, and work your way up as you get comfortable. Lots of them have import/export features that allow you to move data from one to the other.&lt;/p&gt;

&lt;p&gt;If you're in the market for any of this software, take the time to do your homework. And remember you can always &lt;a href=&quot;http://www.opensourcecms.com/?option=com_content&amp;amp;task=category&amp;amp;sectionid=3&amp;amp;id=69&amp;amp;Itemid=1&quot; title=&quot; OpenSourceCMS: Try Before You Install: blogging systems &quot;&gt;try before you install&lt;/a&gt;, or go with a hosted solution so there's nothing to do except tweak your blog until you're satisfied. And if you're not, try something else!&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;There is no conclusion. I succeeded in nothing I set out to do. Instead of making any headway towards trimming the number of reviews in the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot;&gt;PHP&lt;/a&gt; category, I more or less only moved a handful and added a bunch of additional ones to the newly created sub-categories. I will probably take a closer look and do some more segmenting. At the very least I learned a lot about the topics covered in this series.&lt;/p&gt;

&lt;h3&gt;Specific Navigation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Part I: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/160-PHP-Specificity-Part-I-Frameworks.html&quot;&gt;Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part II: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html&quot;&gt;Wikis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part III: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/162-PHP-Specificity-Part-III-Content-Management-Systems.html&quot;&gt;Content Management Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part IV: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/163-PHP-Specificity-Part-IV-Debugging.html&quot;&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part V: Blogware&lt;/li&gt;
&lt;li&gt;Part VI: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/166-PHP-Specificity-Part-VI-High-Performance-PHP.html&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>blog</dc:subject>
<dc:subject>blogware</dc:subject>
<dc:subject>cms</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>php</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>PHP, Blog</dc:subject>
    <dc:date>2008-11-17T18:35:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=164</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=164</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/163-guid.html">
    <title>PHP Specificity Part IV: Debugging</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/163-PHP-Specificity-Part-IV-Debugging.html</link>
    <description>
&lt;p&gt;&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/spider.jpg&quot; alt=&quot;spider&quot; class=&quot;right&quot; title=&quot; PHP Debugging &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/xdebug.gif&quot; class=&quot;icon&quot; alt=&quot;debug&quot; title=&quot; PHP Debugging &quot; /&gt; Yes, I'm aware that a spider isn't &lt;a href=&quot;http://dev.landheer-cieslak.com/2008/04/version-1500-of-arachnida-released.html&quot; title=&quot; Arachnida: Embeddable HTTP/S Server v1.5 &quot;&gt;technically&lt;/a&gt; a bug, but the cool thing about spiders is they &lt;em&gt;eat&lt;/em&gt; bugs. This mechanical spider by Belgian sculptor &lt;a href=&quot;http://www.stephanehalleux.com/&quot;&gt;Stephane Halleux&lt;/a&gt; looks especially menacing.
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;But we're not here to talk about &lt;a href=&quot;http://wikipedia.org/wiki/Web_crawler&quot; title=&quot; Web Spider/Crawler/Robot &quot;&gt;spiders&lt;/a&gt;, we're here to talk about software &lt;a href=&quot;http://wikipedia.org/wiki/Image:H96566k.jpg&quot; title=&quot; Or are we? &quot;&gt;bugs&lt;/a&gt;, and more specifically, debugging &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot; title=&quot; Programming: Languages: PHP &quot;&gt;PHP&lt;/a&gt; code. In this fourth installment of the PHP Specificity series I'm going to break from the theme of content management packages momentarily and get into a topic that is not so dear to the programmer's heart. &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Debugging&quot; title=&quot; Programming: Languages: PHP: Debugging &quot;&gt;Debugging&lt;/a&gt; is a necessary evil and can be painful at times. But the reward, when it happens, is that &lt;a href=&quot;http://loadaveragezero.com/vnav/labs/PHP/eureka.php&quot; title=&quot; I have found it! &quot;&gt;eureka&lt;/a&gt; moment when you find the bug and squash it.&lt;/p&gt;

&lt;h3&gt;Options&lt;/h3&gt;

&lt;p&gt;I'm not sure what ever happened to &lt;a href=&quot;http://dd.cron.ru/dbg/&quot;&gt;DBG&lt;/a&gt;. The author seems to have abandoned the project, or at least stopped updating his Web site several years back. I know the product was rolled into the commercial NuSphere &lt;a href=&quot;http://www.nusphere.com/products/php_debugger.htm&quot; title=&quot; Php Debugger in NuSphere PhpED &quot;&gt;PhpED&lt;/a&gt; PHP &lt;acronym title=&quot; Integrated Development Environment &quot;&gt;IDE&lt;/acronym&gt;&amp;#8212;whether they took over the code base I'm not really sure. Another option is, or rather was, the &lt;acronym title=&quot; PHP Extension Community Library &quot;&gt;PECL&lt;/acronym&gt; package &lt;a href=&quot;http://pecl.php.net/package/apd&quot; title=&quot; Advanced PHP Debugger &quot;&gt;APD&lt;/a&gt; by &lt;a href=&quot;http://www.schlossnagle.org/~george/blog/&quot;&gt;George Schlossnagle&lt;/a&gt; (of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Performance#php:apc&quot; title=&quot; Alternative PHP Cache &quot;&gt;APC&lt;/a&gt; fame). But again, it seems to be dead in the water (the last update was in 2004).&lt;/p&gt;

&lt;h3&gt;Xdebug&lt;/h3&gt;

&lt;p&gt;Fortunately we have &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Debugging#xdebug:debugger&quot; title=&quot; Programming: Languages: PHP: Debugging: Xdebug &quot;&gt;Xdebug&lt;/a&gt;, by &lt;a href=&quot;http://loadaveragezero.com/drx/author/D#a727&quot;&gt;Derick Rethans&lt;/a&gt;. It has all the features you'd expect from an advanced debugger, and a built-in &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Performance#xdebug:profiler&quot; title=&quot; Programming: Languages: PHP: Performance:  Xdebug Profiler &quot;&gt;profiler&lt;/a&gt; to help you tackle performance issues. With output in &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/156-Cachegrind-your-Web-apps.html&quot; title=&quot; Cachegrind your Web apps &quot;&gt;Cachegrind&lt;/a&gt; format, once you're done running the profiler on your code, you can fire up your favorite &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/156-Cachegrind-your-Web-apps.html#viewers&quot; title=&quot; Cachegrind Viewers &quot;&gt;viewer&lt;/a&gt; to analyze the results.&lt;/p&gt;

&lt;p&gt;If you are an IDE fan, you might want to try the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Debugging#zendcom:pdt&quot; title=&quot; Eclipse PHP Development Tools &quot;&gt;Eclipse PDT&lt;/a&gt;, which supports both Xdebug and the Zend Debugger. Or, if you're old-school like me and a &lt;a href=&quot;http://loadaveragezero.com/drx/tag/V#vim&quot; title=&quot; Vim Resources &quot;&gt;Vim&lt;/a&gt; user, you can configure the editor to use Xdebug with the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Debugging#apaddedcell:vim-xdebug&quot; title=&quot; PHP Debugging in Ubuntu using Xdebug and Vim &quot;&gt;DBGp plugin&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Specific Navigation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Part I: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/160-PHP-Specificity-Part-I-Frameworks.html&quot;&gt;Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part II: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html&quot;&gt;Wikis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part III: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/162-PHP-Specificity-Part-III-Content-Management-Systems.html&quot;&gt;Content Management Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part IV: Debugging&lt;/li&gt;
&lt;li&gt;Part V: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/164-PHP-Specificity-Part-V-Blogware.html&quot;&gt;Blogware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part VI: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/166-PHP-Specificity-Part-VI-High-Performance-PHP.html&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>cachegrind</dc:subject>
<dc:subject>debug</dc:subject>
<dc:subject>eclipse</dc:subject>
<dc:subject>ide</dc:subject>
<dc:subject>performance</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>plgin</dc:subject>
<dc:subject>profiling</dc:subject>
<dc:subject>programming</dc:subject>
<dc:subject>vim</dc:subject>
<dc:subject>xdebug</dc:subject>
<dc:subject>zend</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>PHP</dc:subject>
    <dc:date>2008-11-15T15:37:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=163</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=163</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/162-guid.html">
    <title>PHP Specificity Part III: Content Management Systems</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/162-PHP-Specificity-Part-III-Content-Management-Systems.html</link>
    <description>
&lt;p&gt;&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/newspaper.jpg&quot; alt=&quot;newspaper&quot; class=&quot;right&quot; title=&quot; PHP Content Management Systems &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/newspaper.gif&quot; class=&quot;icon&quot; alt=&quot;newspaper&quot; title=&quot; PHP Content Management Systems &quot; /&gt; The third &lt;acronym title=&quot; PHP: Hypertext Preprocessor &quot;&gt;PHP&lt;/acronym&gt; sub-category I selected was &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Content_Management&quot; title=&quot; Programming: Languages: PHP: Content Management &quot;&gt;Content Management Systems&lt;/a&gt;, abbreviated &lt;acronym title=&quot; Content Management System &quot;&gt;CMS&lt;/acronym&gt;. There is a bit of a gray area between software that is considered a CMS, a &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis&quot; title=&quot; Programming: Languages: PHP: Wikis &quot;&gt;Wiki&lt;/a&gt; or &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Blogware&quot; title=&quot; Programming: Languages: PHP: Blogware &quot;&gt;Blogware&lt;/a&gt;. The whole genre is often referred to as Web publishing software, which makes sense. The one thing they all have in common is the ability to quickly and easily add content to a Web site without needing to understand every gory detail of a markup language like &lt;a href=&quot;http://loadaveragezero.com/app/drx/Data_Formats/Markup_Languages/HTML&quot; title=&quot; Data Formats: Markup Languages: HTML &quot;&gt;HTML&lt;/a&gt;. It certainly helps, but it isn't a requirement.
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;CMSs are generally more sophisticated than Wiki or Blogware packages. They typically target the newspaper industry or some other publishing organization with multiple employees that serve various roles. For instance writers, copy editors and on up the ladder.&lt;/p&gt;

&lt;h3&gt;Content&lt;/h3&gt;

&lt;p&gt;In all cases, the user normally adds content through a Web &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Clients/Browsers&quot; title=&quot; Internet: WWW: Clients: Browsers &quot;&gt;browser&lt;/a&gt; form in what is known affectionately as a &lt;a href=&quot;http://wikipedia.org/wiki/Sandbox_%28software_development%29&quot; title=&quot; Sandbox &quot;&gt;sandbox&lt;/a&gt;. I'm actually doing so right now as I create this blog post. Most offer a lightweight markup language making it easy to create links, headings, text formatting, and so on. Other features include content &lt;a href=&quot;http://loadaveragezero.com/app/drx/Data_Formats/Metadata&quot; title=&quot; Data Formats: Metadata &quot;&gt;metadata&lt;/a&gt; and automatic indexing of content making the entire site searchable by its readers. High-end, commercial CMS packages also allow the same content to go to print as well as the organization's Web site.&lt;/p&gt;

&lt;p&gt;With that said, I'm only going to list &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Open_Source&quot; title=&quot; Software: Open Source &quot;&gt;open-source&lt;/a&gt; packages&amp;#8212;the best-known of which is probably &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Content_Management#drupal:CMS&quot;&gt;Drupal&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Specific Navigation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Part I: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/160-PHP-Specificity-Part-I-Frameworks.html&quot;&gt;Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part II: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html&quot;&gt;Wikis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part III: Content Management Systems&lt;/li&gt;
&lt;li&gt;Part IV: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/163-PHP-Specificity-Part-IV-Debugging.html&quot;&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part V: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/164-PHP-Specificity-Part-V-Blogware.html&quot;&gt;Blogware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part VI: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/166-PHP-Specificity-Part-VI-High-Performance-PHP.html&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>blogware</dc:subject>
<dc:subject>browser</dc:subject>
<dc:subject>cms</dc:subject>
<dc:subject>drupal</dc:subject>
<dc:subject>html</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>sandbox</dc:subject>
<dc:subject>wiki</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>PHP</dc:subject>
    <dc:date>2008-11-15T12:01:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=162</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=162</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/161-guid.html">
    <title>PHP Specificity Part II: Wikis</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html</link>
    <description>
&lt;p&gt;&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/sunflowers.jpg&quot; alt=&quot;sunflowers&quot; class=&quot;right&quot; title=&quot; PHP Wikis &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/mediawiki.gif&quot; class=&quot;icon&quot; alt=&quot;mediawiki&quot; title=&quot; MediaWiki &quot; /&gt; The second sub-category I decided on to sub-divide my many PHP resources was &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis&quot; title=&quot; Programming: Languages: PHP: Wikis &quot;&gt;Wikis&lt;/a&gt;. I love wikis, they're easy to use, they're a great tool for documenting just about anything, and most of all, they're organic. Organic, as in always changing and growing, not as in food&amp;#8212;although I do eat lots of organic food. Hey, it's a lot better than eating your own &lt;a href=&quot;http://wikipedia.org/wiki/Eat_one's_own_dog_food&quot;&gt;dog food&lt;/a&gt;.
&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;The WikiWikiWeb&lt;/h3&gt;

&lt;p&gt;It's been over 10 since &lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/eyeglasses.gif&quot; class=&quot;icon&quot; alt=&quot;wikiwikiweb&quot; /&gt; &lt;a href=&quot;http://c2.com/~ward/&quot;&gt;Ward Cunningham&lt;/a&gt; came up with the wiki concept, and if you ask me, the guy was a genius. Ward, with co-author &lt;a href=&quot;http://wikipedia.org/wiki/Bo_Leuf&quot;&gt;Bo Leuf&lt;/a&gt;, built the very first Web-based wiki called WikiWikiWeb&amp;#8212;go figure!&lt;/p&gt;

&lt;h3&gt;Wikipedia&lt;/h3&gt;

&lt;p&gt;Despite the controversy, and probably because of it, Wikipedia consistently ranks in the top 10 most visited Web properties. I use it constantly, almost as much as Google. Hell, when you're searching for something one of the first links usually &lt;em&gt;is&lt;/em&gt; to Wikipedia (note the dog food link above). Although rarely, I'm even a &lt;a href=&quot;http://wikipedia.org/wiki/User:DClifton&quot;&gt;contributor&lt;/a&gt; myself.&lt;/p&gt;

&lt;h3&gt;MediaWiki&lt;/h3&gt;

&lt;p&gt;After submitting this post I took the time to install &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Wikis#mediawiki:wiki&quot;&gt;MediaWiki&lt;/a&gt; on my own server. To share the love, I wrote up an article on my experiences doing so, and added some tips on how to create &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/165-MediaWiki-Installation-Friendly-URLs.html&quot; title=&quot; MediaWiki Installation: Friendly URLs &quot;&gt;Friendly URLs&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Specific Navigation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Part I: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/160-PHP-Specificity-Part-I-Frameworks.html&quot;&gt;Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part II: Wikis&lt;/li&gt;
&lt;li&gt;Part III: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/162-PHP-Specificity-Part-III-Content-Management-Systems.html&quot;&gt;Content Management Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part IV: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/163-PHP-Specificity-Part-IV-Debugging.html&quot;&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part V: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/164-PHP-Specificity-Part-V-Blogware.html&quot;&gt;Blogware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part VI: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/166-PHP-Specificity-Part-VI-High-Performance-PHP.html&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>mediawiki</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>wiki</dc:subject>
<dc:subject>wikipedia</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>PHP, Wiki</dc:subject>
    <dc:date>2008-11-15T11:45:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=161</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=161</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/160-guid.html">
    <title>PHP Specificity Part I: Frameworks</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/160-PHP-Specificity-Part-I-Frameworks.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/mobius_strip.jpg&quot; alt=&quot;mobius&quot; class=&quot;right&quot; title=&quot; PHP Frameworks &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/redant.gif&quot; class=&quot;icon&quot; alt=&quot;redant&quot; title=&quot; PHP Frameworks &quot; /&gt; I'm not a big fan of either really long pages, or the paging of results. Who goes past the first &lt;acronym title=&quot; Search Engine Results Page &quot;&gt;SERP&lt;/acronym&gt; on Google? I do fairly often when drilling down, plus you can find some real gems if you don't give up so easily. But there is a damn good reason why Web site owners want to land on the first page given a certain set of keywords&amp;#8212;because most people don't even bother looking past the &lt;a href=&quot;http://www.seopedia.org/internet-marketing-and-seo/eye-tracking-analysis-of-user-behavior-in-websites-and-search-engines/&quot; 
title=&quot; Analysis of User Behavior in Websites and Search Engines &quot;&gt;first five&lt;/a&gt; links.
&lt;/p&gt;

&lt;p&gt;In my case, the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot; title=&quot; Programming: Languages: PHP &quot;&gt;PHP&lt;/a&gt; category of my Web Developer Resource Index was getting &lt;a href=&quot;http://www.urbandictionary.com/define.php?term=ginourmous&quot;&gt;ginourmous &lt;/a&gt;. I mean out of control, practically unusable. Not to mention the &lt;a href=&quot;http://www.uie.com/articles/download_time/&quot; title=&quot; The Truth About Download Time &quot;&gt;download time&lt;/a&gt;. Which is a real shame, considering it is one of the most popular pages on my site. Something had to be done I tell you!&lt;/p&gt;

&lt;p&gt;But rather than spending the time and effort to implement paging, I took another approach. And that was to get down to specifics. This was really a &lt;a href=&quot;http://loadaveragezero.com/app/drx#directory&quot; title=&quot; Understanding the Directory &quot;&gt;taxonomy&lt;/a&gt; problem, and the key was to break the page up into a top-level (general) category, and then divide the rest into sub-categories.&lt;/p&gt;

&lt;p&gt;The first of these was, as you might have guessed, PHP &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks&quot; title=&quot; Programming: Languages: PHP: Frameworks &quot;&gt;Frameworks&lt;/a&gt;. Now I'm not listing every PHP framework on the planet, there are some pretty good ones and there are some really bad ones. In addition, the page has links to articles and other resources. And I can add more without thinking &quot;oh crap, yet another PHP resource to add to a page that already has close to 100 of them!&quot;&lt;/p&gt;

&lt;h3&gt;Specific Navigation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Part I: Frameworks&lt;/li&gt;
&lt;li&gt;Part II: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/161-PHP-Specificity-Part-II-Wikis.html&quot;&gt;Wikis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part III: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/162-PHP-Specificity-Part-III-Content-Management-Systems.html&quot;&gt;Content Management Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part IV: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/163-PHP-Specificity-Part-IV-Debugging.html&quot;&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part V: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/164-PHP-Specificity-Part-V-Blogware.html&quot;&gt;Blogware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part VI: &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/166-PHP-Specificity-Part-VI-High-Performance-PHP.html&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>framework</dc:subject>
<dc:subject>google</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>resources</dc:subject>
<dc:subject>search</dc:subject>
<dc:subject>seo</dc:subject>
<dc:subject>serp</dc:subject>
<dc:subject>taxonomy</dc:subject>
<dc:subject>user-interface</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>PHP</dc:subject>
    <dc:date>2008-11-14T17:00:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=160</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=160</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/159-guid.html">
    <title>JavaScript Libraries</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/159-JavaScript-Libraries.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/library.jpg&quot; alt=&quot;library&quot; class=&quot;right&quot; title=&quot; JavaScript Libraries &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/books.gif&quot; class=&quot;icon&quot; alt=&quot;books&quot; title=&quot; JavaScript Libraries &quot; /&gt; What's this, no multi-page post today&amp;#8212;complete with code examples and links all over the place? Instead, I did some house cleaning, and added a new wing. JavaScript has been such a hot topic around here of late, and in the Web development community in general, that I took a look at my growing list of &lt;a href=&quot;http://loadaveragezero.com/app/drx&quot; title=&quot; drx: Web Developer Resource Index &quot;&gt;resources&lt;/a&gt; and discovered that indeed, the JavaScript category was in need of some pruning. Amongst the list, and in particular by studying the most popular &lt;a href=&quot;http://loadaveragezero.com/drx/tag/L#library&quot; title=&quot; Resources tagged as Library &quot;&gt;tags&lt;/a&gt;, I found that JavaScript &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript/Libraries&quot; title=&quot; Programming: Languages: JavaScript: Libraries &quot;&gt;libraries&lt;/a&gt; would make an excellent category to splinter off and reduce the weight in the parent folder. I know, I know, I need to implement paging. &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot; title=&quot; Programming: Languages: PHP &quot;&gt;PHP&lt;/a&gt; is another one that grew out of its clothes.
&lt;/p&gt;

&lt;p&gt;Speaking of implementing paging (and caching and a lot of other things on my todo list), I have been really busy behind the scenes fixing bugs and making other improvements to both this blog and loadaverageZero in general. Some of them my visitors may have noticed, some may not. But things are definitely on the upswing around here since health has improved.&lt;/p&gt;

&lt;p&gt;One thing that really has me puzzled is what to do with this blog. I'm running a rather old, and hacked to pieces, version of &lt;a href=&quot;http://www.s9y.org/&quot;&gt;Serendipity&lt;/a&gt;. I don't want to let go of the design, which I spent a lot of time on, yet on the same token it bothers me that my only recourse to block spammers and other miscreants was to disable &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/143-Comments-are-Closed.html&quot;&gt;comments&lt;/a&gt; and trackbacks. I'm not a big fan of &lt;a href=&quot;http://wikipedia.org/wiki/Captcha&quot;&gt;Captchas&lt;/a&gt;, I would prefer to go the &lt;a href=&quot;http://openid.net/&quot;&gt;OpenID&lt;/a&gt; route.&lt;/p&gt;

&lt;p&gt;Anyway, I'm starved and I haven't been to the &lt;a href=&quot;http://dc.metblogs.com/2006/09/22/a-tastee-story/&quot;&gt;diner&lt;/a&gt; for some good old eggs and bacon in ages...&lt;/p&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>blog</dc:subject>
<dc:subject>cache</dc:subject>
<dc:subject>captcha</dc:subject>
<dc:subject>comments</dc:subject>
<dc:subject>design</dc:subject>
<dc:subject>javascript</dc:subject>
<dc:subject>library</dc:subject>
<dc:subject>openid</dc:subject>
<dc:subject>serendipity</dc:subject>
<dc:subject>tagging</dc:subject>
<dc:subject>trackback</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Programming, JavaScript</dc:subject>
    <dc:date>2008-11-12T09:00:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=159</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=159</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/158-guid.html">
    <title>Open-source Server-side Web Application Frameworks</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/158-Open-source-Server-side-Web-Application-Frameworks.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/web_frameworks.png&quot; alt=&quot;frameworks&quot; class=&quot;right&quot; title=&quot; Web Application Frameworks &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/framework.gif&quot; class=&quot;icon&quot; alt=&quot;framework&quot; title=&quot; Frameworks &quot; /&gt; It just wouldn't be fair after my last &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/157-Client-Server-JavaScript-Hosted-Web-Application-Platforms.html&quot; title=&quot; Client-Server JavaScript Hosted Web Application Platforms &quot;&gt;post&lt;/a&gt; to ignore the tried-and-true server-side Web application frameworks. I am certainly familiar with all of them, though I haven't necessarily used every one in a production environment. PHP seems to be the best represented, or maybe it's just my bias considering I've spent more time using it as a Web development platform than some of the other languages. Python has several options, one of which is very popular and the other I find interesting. Perl only seems to have one viable Web framework, if there are others then I'm simply not aware of them. And of course we have Ruby, with Rails being perhaps the the most hyped out of the entire list. Would you expect anything less from the folks at &lt;a href=&quot;http://www.37signals.com/&quot;&gt;37signals&lt;/a&gt;?
&lt;/p&gt;

&lt;h3&gt;PHP&lt;/h3&gt;

&lt;p&gt;Being a Web scripting language from the get-go, there are countless &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot; title=&quot; Programming: Languages: PHP &quot;&gt;PHP&lt;/a&gt; frameworks to choose from. I'll concentrate on three, and list some others that I'm at least aware of.&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/drupal.gif&quot; class=&quot;icon&quot; alt=&quot;drupal&quot; title=&quot; Drupal &quot; /&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP#drupal:CMS&quot; title=&quot; Drupal &quot;&gt;Drupal&lt;/a&gt; is the big daddy of PHP frameworks, or is it a &lt;acronym title=&quot; Content Management System &quot;&gt;CMS&lt;/acronym&gt;? You decide. This extremely popular (insert your one word
description here) &quot;system&quot; has features galore, and a whole network of developers have grown up devoted to working with it. In my &lt;a href=&quot;http://groups.drupal.org/washington-dc-drupalers&quot; title=&quot; Washington, DC Drupalers &quot;&gt;neck of the woods&lt;/a&gt; at least, being a skilled Drupal developer is gold.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/codeigniter.gif&quot; class=&quot;icon&quot; alt=&quot;codeigniter&quot; title=&quot; CodeIgniter &quot; /&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#codeigniter:framework&quot; title=&quot; CodeIgniter &quot;&gt;CodeIgniter&lt;/a&gt; is definitely up my alley. It's light weight, fast, and stays out of your way. There are any number of class modules to choose from, and you can discard what you don't need to lighten the load even more. After seeing a presentation at the &lt;a href=&quot;http://www.phpdc.org/&quot;&gt;DC PHP Developers&lt;/a&gt; group a few months back I was intrigued and took a closer look at the package. The presentation, from two developers at &lt;a href=&quot;http://www.forumone.com/section/about/&quot; title=&quot; Forum One Communications &quot;&gt;Forum One&lt;/a&gt;, showcased the work they did on the &lt;a href=&quot;http://carma.org/&quot; title=&quot; Carbon Monitoring for Action &quot;&gt;CARMA&lt;/a&gt; Web site, and in particular the database backend that drives the mapping of global power plant emissions. &lt;a href=&quot;http://www.phpdc.org/files/dcphp_code_igniter_carma.ppt&quot;&gt;PPT&lt;/a&gt; slides are available if you're interested. Plus, if &lt;a href=&quot;http://lerdorf.com/resume/&quot; title=&quot; Rasmus Lerdorf &quot;&gt;Rasmus&lt;/a&gt; endorses CodeIgniter, I'm all ears.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/cakephp.gif&quot; class=&quot;icon&quot; alt=&quot;cakephp&quot; title=&quot; CakePHP &quot; /&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#cakephp:framework&quot; title=&quot; CakePHP &quot;&gt;CakePHP&lt;/a&gt; is another popular MVC application framework. Conceptually, it's similar to Ruby on Rails.
&lt;/p&gt;

&lt;p&gt;Other PHP frameworks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#zend:framework&quot;&gt;Zend Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#horde:project&quot;&gt;The Horde Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#symfony:framework&quot;&gt;Symfony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#WASP:MVC&quot;&gt;WASP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Frameworks#yellowduck:framwork&quot;&gt;Yellow Duck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there are more. I'm not writing a book here folks!&lt;/p&gt;

&lt;h3&gt;Python&lt;/h3&gt;

&lt;p&gt;If PHP is more specific to Web development (some people consider it little more than a &lt;a href=&quot;http://www.php.net/history&quot; title=&quot; History of PHP &quot;&gt;templating language&lt;/a&gt;), then &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Python&quot; title=&quot; Programming: Languages: Python &quot;&gt;Python&lt;/a&gt;, like Perl, is more general purpose. In terms of Web frameworks, there is one standout, with a loyal&amp;#8212;some might say rabid&amp;#8212;following.&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/django.gif&quot; class=&quot;icon&quot; alt=&quot;django&quot; title=&quot; Django &quot; /&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Python#django:framework&quot; title=&quot; Django &quot;&gt;Django&lt;/a&gt;, first developed at Lawrence Journal-World (I lived in Lawrence, Kansas for many years!), and released to the public under a BSD license in 2005, has since become the Web application framework of choice in the Python community. Django, like everything Python, is based on the &lt;acronym title=&quot; Don't Repeat Yourself &quot;&gt;DRY&lt;/acronym&gt; principle, and everything is an object. You begin your project by defining a set of data models (which are Python classes of course), and build from there. The number of features are only limited by everything Python has to offer, which is a lot: an embedded HTTP server, friendly URLs based on regular expressions, an &lt;acronym title=&quot; Object Relational Mapping &quot;&gt;ORM&lt;/acronym&gt; connection to your database, page caching, input validation and sanitizing, tools to prevent XSS and CSRF attacks, authentication and sessions, RSS feeds, and much more.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/cherrypy.gif&quot; class=&quot;icon&quot; alt=&quot;cherrypy&quot; title=&quot; CherryPy &quot; /&gt;
&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Python#cherrypy:framework&quot; title=&quot; CherryPy &quot;&gt;CherryPy&lt;/a&gt; is another option for the Python developer. Like Django, it has a built-in HTTP server, or you can connect it to any &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Python#moinmoin:wsgi&quot; title=&quot; Web Server Gateway Interface &quot;&gt;WSGI&lt;/a&gt; compliant server (such as Apache 2). It has tools for caching, encoding, sessions, authorization, and lots more. Once again, anything Python can do...
&lt;/p&gt;

&lt;h3&gt;Perl&lt;/h3&gt;

&lt;p&gt;The Swiss Army knife of scripting languages. &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Perl&quot; title=&quot;  Programming: Languages: Perl &quot;&gt;Perl&lt;/a&gt; has a long history and a large user base. Where PHP tends to be monolithic, Perl, like Python, is built from a core language with a countless number of callable modules (aka &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Perl#CPAN:org&quot; title=&quot; Comprehensive Perl Archive Network &quot;&gt;CPAN&lt;/a&gt;). Like many other programmers, this is the language I started out with developing dynamic Web pages back in the days of CGI. Then mod_perl came along, and we have Mason and many other templating solutions. Whatever happened to eperl I wonder?&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/catalyst.gif&quot; class=&quot;icon&quot; alt=&quot;catalyst&quot; title=&quot; Catalyst &quot; /&gt; If Perl rules your world and you're shopping for a Web application framework, then look no further that &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Perl#catalyst:framework&quot; title=&quot; Catalyst &quot;&gt;Catalyst&lt;/a&gt;. Like Django, the feature-set is only limited by what's available in the form of CPAN modules. In other words, go nuts. Given the opportunity to work with this framework, I would jump right in.
&lt;/p&gt;

&lt;p&gt;There are no other &lt;em&gt;viable&lt;/em&gt; Perl frameworks for developing Web applications. At least that I'm aware of. Drop me a note if you disagree.&lt;/p&gt;

&lt;h3&gt;Ruby&lt;/h3&gt;

&lt;p&gt;The Ruby language itself I am not that familiar with, many people like to compare it to Python. You be the judge. But when it comes to Web application frameworks, if you haven't heard of Rails then you've had your head in a bucket of sand.&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/ror.png&quot; class=&quot;icon&quot; alt=&quot;ruby&quot; title=&quot; Ruby on Rails &quot; /&gt; The hype surrounding the release of this framework, which continues to this day, is astonishing. &lt;a href=&quot;http://www.rubyonrails.com/&quot; title=&quot; Ruby on Rails &quot;&gt;RoR&lt;/a&gt; began life as the backbone of the popular &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Innovators#basecamp:project-manageme&quot;&gt;Basecamp&lt;/a&gt; Web-based project management tool from 37signals. The &lt;a href=&quot;http://www.loudthinking.com/about.html&quot; title=&quot; David Heinemeier Hansson &quot;&gt;author&lt;/a&gt; released the framework to the development community in 2005. Like many modern frameworks, it is centered around the DRY principle and a MVC architecture. It also supports JavaScript/Ajax libraries which users of all 37signals products rave about. Simple, easy to use, rapid development and simple, easy to use results are the hallmarks of this system. Many of these same philosophies have been the basis of frameworks that followed.
&lt;/p&gt;

&lt;h3&gt;Related Reading&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/blogs/2008/08/29/rasmus-lerdorf-php-frameworks-think-again/&quot;&gt;Rasmus Lerdorf: PHP Frameworks? Think Again&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/blogs/2008/06/08/last-we-checked-php-is-a-framework/&quot;&gt;Last we checked, PHP IS a framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>cakephp</dc:subject>
<dc:subject>catalyst</dc:subject>
<dc:subject>cherrypy</dc:subject>
<dc:subject>codeigniter</dc:subject>
<dc:subject>cpan</dc:subject>
<dc:subject>django</dc:subject>
<dc:subject>drupal</dc:subject>
<dc:subject>framework</dc:subject>
<dc:subject>mvc</dc:subject>
<dc:subject>perl</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>python</dc:subject>
<dc:subject>rails</dc:subject>
<dc:subject>ruby</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Programming, Web</dc:subject>
    <dc:date>2008-11-11T04:33:24Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=158</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=158</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/157-guid.html">
    <title>Client-Server JavaScript Hosted Web Application Platforms</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/157-Client-Server-JavaScript-Hosted-Web-Application-Platforms.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/aptana_jaxer_freebase.gif&quot; alt=&quot;webapps&quot; class=&quot;right&quot; title=&quot; JavaScript Hosted Web Application Platforms &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/JS.gif&quot; class=&quot;icon&quot; alt=&quot;bug&quot; title=&quot; JavaScript Programming  &quot; /&gt; A few years back I mentioned being surprised that more developers weren't jumping on the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Clients/Browsers/Firefox#MDC:developer&quot; title=&quot; MDC: Mozilla Developer Center &quot;&gt;Mozilla framework&lt;/a&gt; &lt;acronym title=&quot; Rich Internet Application &quot;&gt;RIA&lt;/acronym&gt; bandwagon. The same technologies (HTML, JavaScript, Ajax, DOM, XBL, XPCOM, XUL, RDF, RSS, Chrome...) have been a boon when it comes to the plethora of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Clients/Browsers/Firefox&quot; title=&quot; Mozilla Firefox &quot;&gt;Firefox&lt;/a&gt; &lt;a href=&quot;http://loadaveragezero.com/drx/extensions&quot; title=&quot; Firefox Extensions &quot;&gt;extensions&lt;/a&gt;, but very few full-blown applications ever surfaced. &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Clients/Browsers/Firefox#faser:MAB&quot; title=&quot; Mozilla Amazon Browser &quot;&gt;MAB&lt;/a&gt; was one I always pointed out as a good example. I felt there was huge potential there, but for whatever reason it never took off (MAB has been discontinued due to changes in the Amazon Web Services backend).
&lt;/p&gt;

&lt;h3&gt;Hosted Applications&lt;/h3&gt;

&lt;p&gt;In the past year, it seems the latest rage in JavaScript development are so-called hosted JavaScript application frameworks. The general idea being you use the same language both in the client and on the server-side. On the server-side you have access to &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Databases#sqlite:engine&quot;&gt;SQLite&lt;/a&gt;, &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Databases/MySQL&quot;&gt;MySQL&lt;/a&gt; and other data sources such as XML stored on disk (or generated), and other resources&amp;#8212;just like you're used to with languages like PHP, Python, Perl, or Ruby&amp;#8212;and on the client-side you have access to the browser DOM, &lt;a href=&quot;http://loadaveragezero.com/app/drx/Data_Formats/Style_Sheets/CSS&quot;&gt;CSS&lt;/a&gt;, and so on, then glue it all together with XHR/JSON. Most of the offerings in this genre include browser-based IDEs for rapid application development, and you can fork off someone else's code to quickly generate a morphed version using your own concept. Though the technologies are open-source, most of these companies monetize their investment by hosting (and charging consumers for) the application, much like the cloud computing models (e.g. &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Design_and_Development/Developer_Resources#AWS:EC2&quot; title=&quot; Amazon Elastic Compute Cloud &quot;&gt;EC2&lt;/a&gt;, &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/WWW/Design_and_Development/Developer_Resources#AWS:S3&quot; title=&quot; Amazon Simple Storage Service &quot;&gt;S3&lt;/a&gt;) that are becoming increasingly popular.&lt;/p&gt;

&lt;p&gt;Although there are many similar RIA frameworks, some of them open-source and some of them not
(see below), I'm going to concentrate on the two that I found most interesting&amp;#8212;both of which are &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Open_Source&quot;&gt;open-source&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Jaxer&lt;/h3&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/aptana.gif&quot; class=&quot;icon&quot; alt=&quot;jaxer&quot; title=&quot; Aptana Jaxer &quot; /&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript#aptana:jaxer&quot;&gt;Jaxer&lt;/a&gt; is an open-source, client-server Ajax framework built from Mozilla's &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript#spidermonkey:C&quot;&gt;SpiderMonkey&lt;/a&gt; JavaScript engine. With it you can access data using built-in SQLite, or externally through a DB connection to MySQL. I'm not sure whether they have or are planning on supporting other RDBMSs such as &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Databases/PostgreSQL&quot;&gt;PostgreSQL&lt;/a&gt;. I would think a database abstraction layer would be handy. Naturally you also have file I/O and access to everything on the server end. On the client-side you have everything the browser has to offer: markup, DOM, CSS, and finally asynchronous XHR using JSON, or whatever you prefer, for sending data back in your response to the client.
&lt;/p&gt;

&lt;p&gt;A really slick feature of Jaxer is the ability to code JavaScript that runs on &lt;em&gt;&lt;strong&gt;both&lt;/strong&lt;/em&gt; sides of the equation. In other words, things like form input validation in the same language so you don't have to repeat the same functionality. Also of interest is their choice of going with SpiderMonkey, which supports JavaScript through &lt;a href=&quot;https://developer.mozilla.org/en/New_in_JavaScript_1%2E8&quot;&gt;version 1.8&lt;/a&gt;. Think you'll miss your favorite JavaScript library? Think again, you can easily access &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript/Libraries#jquery:library&quot;&gt;jQuery&lt;/a&gt;, &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript/Libraries#prototype:javascript&quot;&gt;prototype&lt;/a&gt;, and the many effects libraries. Does the &lt;acronym title=&quot; Same Origin Policy &quot;&gt;SOP&lt;/acronym&gt; restriction on Ajax between client and server frustrate you? Not any more, since the server-side code can access data from anywhere before transporting it back to the client. Only you can trust it. Because you know what you're doing, right?&lt;/p&gt;

&lt;p&gt;I have not seen any benchmarking done on the system, but when &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript#mozwiki:tracemonkey&quot;&gt;TraceMonkey&lt;/a&gt; rolls out performance should go way up. In case you can't tell, I'm pretty excited about this framework and the technology behind it.&lt;/p&gt;

&lt;h3&gt;Acre&lt;/h3&gt;

&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/freebase.gif&quot; class=&quot;icon&quot; alt=&quot;freebase&quot; title=&quot; Freebase Acre &quot; /&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript#freebase:acre&quot;&gt;Acre&lt;/a&gt; is a similar offering from the folks at &lt;a href=&quot;http://www.freebase.com/&quot;&gt;Freebase&lt;/a&gt;. &lt;a href=&quot;http://blog.freebase.com/2008/11/07/introducing-acre/&quot; title=&quot; Introducing Acre &quot;&gt;Just out of&lt;/a&gt; developer preview status is this &lt;a href=&quot;http://dev.freebaseapps.com/&quot; title=&quot; Freebase Apps &quot;&gt;new integrated&lt;/a&gt; Web application and hosting environment. Using a simple JavaScript templating language and their IDE (the &lt;a href=&quot;http://www.freebase.com/tools/appeditor&quot; title=&quot; Freebase App Editor &quot;&gt;app editor&lt;/a&gt;)  
you can create applications using templates, scripts, queries and static (e.g. CSS) files.
&lt;/p&gt;

&lt;p&gt;Unlike Jaxer, I was not able to find much in the way of details on how they implemented the system. However, to see what's possible I recommend taking a look at &lt;a href=&quot;http://fmdb.freebaseapps.com/&quot; title=&quot; Freebase Movie Database &quot;&gt;FMDB&lt;/a&gt;. My impression thus far is it has potential, but they need to beef up the documentation and offer more examples and tutorials.&lt;/p&gt;

&lt;h3&gt;Similar RIA Frameworks&lt;/h3&gt;

&lt;p&gt;If these guys are the new kids on the block, they certainly aren't alone. Offerings in the RIA arena have been around for a while. However, most of those listed below do not fit into the hosted application model.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.openlaszlo.org/&quot;&gt;OpenLaszlo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.adobe.com/products/flex/&quot;&gt;Adobe Flex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://silverlight.net/&quot;&gt;Silverlight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://appjet.com/&quot;&gt;AppJet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Other Interesting Links&lt;/h3&gt;

&lt;p&gt;As I find them, I will add more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript#MDC:SSJS&quot;&gt;Back to the Server: Server-Side JavaScript on the Rise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.craftymind.com/guimark/&quot;&gt;GUIMark&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>ajax</dc:subject>
<dc:subject>framework</dc:subject>
<dc:subject>javascript</dc:subject>
<dc:subject>jquery</dc:subject>
<dc:subject>json</dc:subject>
<dc:subject>mozilla</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>ria</dc:subject>
<dc:subject>spidermonkey</dc:subject>
<dc:subject>sqlite</dc:subject>
<dc:subject>template</dc:subject>
<dc:subject>xhr</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Programming, Web</dc:subject>
    <dc:date>2008-11-10T01:57:22Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=157</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=157</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/156-guid.html">
    <title>Cachegrind your Web apps</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/156-Cachegrind-your-Web-apps.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/valgrind.jpg&quot; alt=&quot;valgrind&quot; class=&quot;right&quot; title=&quot; Valgrind: Tool Suite &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/xdebug.gif&quot; class=&quot;icon&quot; alt=&quot;bug&quot; title=&quot; Xdebug: PHP Debugger and Profiler &quot; /&gt; Valgrind is a entire &lt;a href=&quot;http://valgrind.org/info/tools.html&quot; title=&quot; Valgrind: Tool Suite &quot;&gt;suite&lt;/a&gt; of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Open_Source&quot; title=&quot; Software: Open Source &quot;&gt;open-source&lt;/a&gt; &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools&quot; title=&quot; Programming: Development Tools &quot;&gt;tools&lt;/a&gt;, including basic debugging, profiling, and more advanced techniques such as threading, memory management, and leak detection. For the purposes of this article, I will focus on Cachegrind, and in particular within the domain of Web applications. Although there are a number of developers contributing to Valgrind, &lt;a href=&quot;http://articles.techrepublic.com.com/5100-10878_11-5136747.html&quot; title=&quot; Open Source Awards 2004: Julian Seward for Valgrind &quot;&gt;Julian Seward&lt;/a&gt; is the original designer and author.
&lt;/p&gt;

&lt;p&gt;Out of the three server-side &lt;a href=&quot;&quot; title=&quot;http://loadaveragezero.com/app/drx/Programming/Languages &amp;quot; Programming: Languages &quot;&gt;languages&lt;/a&gt; I am most familiar with, PHP seems to be the one that is best represented, with some Python&amp;#8212;but I found very little if any information on Perl.&lt;/p&gt;

&lt;h3&gt;What is Cachegrind?&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://valgrind.org/info/tools.html#cachegrind&quot;&gt;Cachegrind&lt;/a&gt; is an Intel CPU emulator and cache profiler that performs detailed simulations of the onboard I1, D1 and L2 caches and can accurately pinpoint the sources of cache misses in your code. It identifies the number of cache misses, memory references, and instructions executed for each line of source code. (paraphrased)&lt;/p&gt;

&lt;h3&gt;Xdebug&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Debugging#xdebug:debugger&quot;&gt;Xdebug&lt;/a&gt; is the tool of
choice for PHP developers when it comes to standard debugging, and the built-in &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Performance#xdebug:profiler&quot;&gt;profiler&lt;/a&gt; with Cachegrind output is also maturing. Typically the output is in a file named cachegrind.out.pid, which is plain text, but be careful with large, complex applications as it can grow to on the order of 500MB. The raw data is almost useless, to really analyze and visualize the results you need a parsing/graphing tool. There are several available depending on your platform and needs.&lt;/p&gt;

&lt;h3 id=&quot;viewers&quot;&gt;Viewers&lt;/h3&gt;

&lt;p&gt;Once you have your output you need an application to make sense of it. Listed below are solutions for &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Operating_Systems/Unix/Linux&quot; title=&quot; Software: Operating Systems: Unix: Linux &quot;&gt;Linux&lt;/a&gt; (or any Unix-like OS running &lt;a href=&quot;http://www.kde.org/&quot;&gt;KDE&lt;/a&gt;), Mac &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Operating_Systems/Unix/Mac_OS_X&quot; title=&quot; Software: Operating Systems: Unix: Mac OS X &quot;&gt;OS X&lt;/a&gt;, Windows, and even a browser-based solution from Google Code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/kcachegrind/&quot;&gt;KCachegrind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.maccallgrind.com/&quot;&gt;MacCallGrind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/wincachegrind/&quot;&gt;WinCacheGrind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Performance#google:webgrind&quot;&gt;Webgrind&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Related Reading&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://derickrethans.nl/files/phparch-xdebug-qa.pdf&quot;&gt;Debugging Questions and Xdebug Answers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://devzone.zend.com/article/3829-Cachegrind-less-profiling-with-Xdebug-2.0&quot;&gt;Cachegrind-less profiling with Xdebug 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.splitbrain.org/blog/2008-02/21-understanding_php_code_better_with_xdebug&quot;&gt;Understanding PHP code better with Xdebug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.drupal4hu.com/node/176&quot;&gt;How to cachegrind a tested Drupal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tools.cherrypy.org/wiki/Cachegrind&quot;&gt;CherryPy: Cachegrind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/blogs/2008/06/02/debugging-php/&quot;&gt;Debugging PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/spectator/&quot;&gt;Spectator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/blogs/2008/05/13/useful-in-browser-development-tools-for-php/&quot;&gt;Useful in-browser development tools for PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP/Debugging#FirePHP:debug&quot;&gt;FirePHP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>cachegrind</dc:subject>
<dc:subject>debug</dc:subject>
<dc:subject>emulator</dc:subject>
<dc:subject>kde</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>mac</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>optimization</dc:subject>
<dc:subject>osx</dc:subject>
<dc:subject>performance</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>profiling</dc:subject>
<dc:subject>python</dc:subject>
<dc:subject>unix</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Programming</dc:subject>
    <dc:date>2008-11-09T08:00:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=156</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=156</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/155-guid.html">
    <title>gist.github.git</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/155-gist.github.git.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/gist_github_git.gif&quot; alt=&quot;github&quot; class=&quot;right&quot; title=&quot; GitHub: Social Code Hosting &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/github.gif&quot; class=&quot;icon&quot; alt=&quot;git&quot; title=&quot; Git: Fast Version Control System &quot; /&gt; After being introduced to Git at a &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/149-BarCampDC2.html&quot; title=&quot; BarCampDC2: Epilogue &quot;&gt;BarCampDC2&lt;/a&gt; presentation I found the system intriguing and worthy of a closer look&amp;#8212;and in particular as an alternative to &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#svn:subversion&quot; title=&quot; Subversion &quot;&gt;SVN&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;Git&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#git:repo&quot; title=&quot; Git: Fast Version Control System &quot;&gt;Git&lt;/a&gt; is a distributed &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Open_Source&quot; title=&quot; Software: Open Source &quot;&gt;open-source&lt;/a&gt; version control system designed to handle large to small projects with speed and efficiency. It is especially popular within the open-source community, serving as a development platform for projects such as the &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Operating_Systems/Unix/Linux&quot; title=&quot; Software: Operating Systems: Unix: Linux &quot;&gt;Linux&lt;/a&gt; kernel, &lt;a href=&quot;http://www.rubyonrails.org/&quot; title=&quot; Ruby on Rails &quot;&gt;RoR&lt;/a&gt; and &lt;a href=&quot;http://www.x.org/wiki/&quot; title=&quot; X.org Project Wiki &quot;&gt;X.org&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;GitHub&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#github:hosting&quot; title=&quot; GitHub: Social Code Hosting &quot;&gt;GitHub&lt;/a&gt; provides pre-rolled, post-commit hooks with &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Development_Tools#lighthouse:tracking&quot; title=&quot;Active Reload: Hosted Issue Tracking &quot;&gt;Lighthouse&lt;/a&gt;
 and &lt;a href=&quot;http://loadaveragezero.com/app/s9y/index.php?/archives/93-Campfire-Conversations.html&quot; title=&quot; 37signals: Hosted Group Chat &quot;&gt;Campfire&lt;/a&gt; integration, as well as an innovative Web hook system for writing your own. Every repository comes with &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/Security#blowfish:openssh&quot; title=&quot; OpenSSH &quot;&gt;SSH&lt;/a&gt; support for pushing and pulling. Private repositories enjoy full &lt;a href=&quot;http://loadaveragezero.com/app/drx/Internet/Security#ssl:open&quot; title=&quot; OpenSSL Project &quot;&gt;SSL&lt;/a&gt; support.&lt;/p&gt;

&lt;h3&gt;Gist&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming#github:gist&quot; title=&quot;Gist: GitHub Paste Site &quot;&gt;Gist&lt;/a&gt; is a GitHub hosted &lt;a href=&quot;http://wikipedia.org/wiki/Pastebin&quot; title=&quot; Wikipedia: pastebin &quot;&gt;pastebin&lt;/a&gt; service with the usual features, including source code syntax highlighting, shared URLs, plus all the goodies you'd expect from a version control system. Pastes can be set to public or private, you can edit them both online and off, and you can fork them&amp;#8212;in essence treating each snippet as its own versioned project.&lt;/p&gt;

&lt;p&gt;The downside of allowing anyone to post to Gist is the usual assortment of spamming, robots, and phishing scams. One look at the &lt;a href=&quot;http://gist.github.com/gists&quot;&gt;recent gist&lt;/a&gt; list is all you need to find &quot;really cheap drugs.&quot; Sigh.&lt;/p&gt;

&lt;p&gt;Since Git uses &lt;a href=&quot;http://www.isi.edu/in-notes/rfc3174.txt&quot; title=&quot; rfc3174: Secure Hash Algorithm 1 &quot;&gt;SHA1&lt;/a&gt; as a checksum on files, one of the first things I did was write a simple &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot; title=&quot; Programming: Languages: PHP &quot;&gt;PHP&lt;/a&gt; command-line script which either generates the hash for a file, or compares the file to an existing hash. So I thought, what better snippet of code (even though it is a complete program) to use as my &lt;a href=&quot;http://gist.github.com/23018&quot; title=&quot; gist: 23018 &quot;&gt;first Gist&lt;/a&gt;? Update: now in &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Perl&quot; title=&quot; Programming: Languages: Perl &quot;&gt;Perl&lt;/a&gt; and &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Python&quot; title=&quot; Programming: Languages: Python &quot;&gt;Python&lt;/a&gt; too!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://loadaveragezero.com/img/gist_large.png&quot; title=&quot; gist: 23018 &quot;&gt;&lt;img src=&quot;http://loadaveragezero.com/img/gist_small.png&quot; alt=&quot;screenshot&quot; style=&quot;padding: 6px 0; border: 1px solid #aaa;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Forked Git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://git.or.cz/gitwiki/GitCheatSheet&quot;&gt;Git CheatSheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/blog&quot;&gt;GitHub Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/codesearch&quot;&gt;GitHub Public Code Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/github/&quot;&gt;GitHub Google Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/soc/2008/git/about.html&quot;&gt;Google Code Git Development Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.crunchbase.com/company/github&quot;&gt;GitHub Company Profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.crunchbase.com/product/gist&quot;&gt;Gist Product Profile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Related Reading&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/blog/118-here-s-the-gist-of-it&quot;&gt;Here's the Gist of it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://arstechnica.com/journals/linux.ars/2008/11/06/hunting-the-perfect-paste&quot;&gt;Fork you very much: Gist brings revision tracking to pastes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.techcrunch.com/2008/07/22/github-unites-version-control-with-the-pastie/&quot;&gt;GitHub unites Version Control with the Pastie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/blogs/2008/07/24/github-gist-is-pastie-on-steroids/&quot;&gt;GitHub Gist is Pastie on Steroids&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;GitHub Swag&lt;/h3&gt;

&lt;p&gt;Oh, I almost forgot:&amp;#8212;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://rubyrags.com/products/10&quot; title=&quot; Git yourself some Hub Swag &quot;&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/forkyou.png&quot; alt=&quot;t-shirt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>barcampdc</dc:subject>
<dc:subject>git</dc:subject>
<dc:subject>github</dc:subject>
<dc:subject>open-source</dc:subject>
<dc:subject>pastebin</dc:subject>
<dc:subject>programming</dc:subject>
<dc:subject>sha1</dc:subject>
<dc:subject>social network</dc:subject>
<dc:subject>ssh</dc:subject>
<dc:subject>ssl</dc:subject>
<dc:subject>subversion</dc:subject>
<dc:subject>svn</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Programming</dc:subject>
    <dc:date>2008-11-08T02:30:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=155</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=155</wfw:commentRss>
</item>
<item rdf:about="http://loadaveragezero.com/app/s9y/index.php?/archives/152-guid.html">
    <title>Python 2.6</title>
    <link>http://loadaveragezero.com/app/s9y/index.php?/archives/152-Python-2.6.html</link>
    <description>
&lt;p&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/monty_python.jpg&quot; alt=&quot;python&quot; class=&quot;right&quot; title=&quot; Python 2.6 &quot; /&gt;
&lt;img src=&quot;http://loadaveragezero.com/img/fav/drx/python.gif&quot; class=&quot;icon&quot; alt=&quot;python&quot; title=&quot; Python Programming &quot; /&gt; For someone with many moons of writing code in C and C-like &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages&quot; title=&quot; Programming: Languages &quot;&gt;languages&lt;/a&gt;, making the transition to Python was indeed a paradigm shift. But we're only human and as humans it's natural to be resistant to change. For instance, when I first started to study Python in earnest I found the notion of &lt;a href=&quot;http://books.google.com/books?id=nEJ-jcYF2fMC&amp;pg=PA206&amp;ei=XbQTSfzmHIqEywS56Pz1CQ&quot; title=&quot; Why Indentation Syntax? &quot;&gt;indentation as syntax&lt;/a&gt; rather odd. And where oh where are my parenthesis? What's this, no line termination semicolons? No curly braces around blocks of code? This is insanity!
&lt;/p&gt;

&lt;h3&gt;A Bit of History&lt;/h3&gt;

&lt;p&gt;Of the five programming languages I refer to most often, &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Python&quot; title=&quot; Programming: Languages: Python &quot;&gt;Python&lt;/a&gt; stands out as being unique in many regards. It's interesting to compare and contrast the why and the how they were developed&amp;#8212;and by whom.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/C#lucent:development&quot; title=&quot; The Development of the C Language &quot;&gt;C&lt;/a&gt; (and its descendants) ca. 1970 &amp;#8212; the oldest of the four, developed by &lt;a href=&quot;http://wikipedia.org/wiki/Kernighan_and_Ritchie&quot; title=&quot; Kernighan and Ritchie &quot;&gt;computer scientists&lt;/a&gt; at Bell Labs during the early stages of the evolution of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Software/Operating_Systems/Unix&quot; title=&quot; Software: Operating Systems: Unix &quot;&gt;Unix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/Perl#salon:joy-of-perl&quot; title=&quot; The Joy of Perl &quot;&gt;Perl&lt;/a&gt; ca. 1986 &amp;#8212; developed by a &lt;a href=&quot;http://wikipedia.org/wiki/Larry_Wall&quot; title=&quot; Larry Wall &quot;&gt;lingust&lt;/a&gt; turned system administrator (now a researcher and developer at O'Reilly). &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://books.google.com/books?id=nEJ-jcYF2fMC&amp;amp;pg=PA16&amp;amp;lpg=PA16&amp;amp;source=web&amp;amp;ots=3_uBK-9bpm&amp;amp;sig=rUgPwUYegZRcwewNA0AEXA-HD64&amp;amp;hl=en&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;resnum=1&amp;amp;ct=result&quot; title=&quot; Python is Engineering, not Art &quot;&gt;Python&lt;/a&gt; ca. 1990 &amp;#8212; developed by a mathematician turned &lt;a href=&quot;http://wikipedia.org/wiki/Guido_van_Rossum&quot; title=&quot; Guido van Rossum &quot;&gt;programmer&lt;/a&gt; (now working at Google).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP#phpdeveloper:decade&quot; title=&quot; A Decade of PHP &quot;&gt;PHP&lt;/a&gt; ca. 1995 &amp;#8212; developed by a systems design engineer turned &lt;a href=&quot;http://wikipedia.org/wiki/Rasmus_Lerdorf&quot; title=&quot; Rasmus Lerdorf &quot;&gt;programmer&lt;/a&gt; (now an infrastructure architecture engineer at Yahoo!).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/JavaScript#hesketh:history&quot; title=&quot; JavaScript: How Did We Get Here? &quot;&gt;JavaScript&lt;/a&gt; ca. 1995 &amp;#8212; developed by a &lt;a href=&quot;http://wikipedia.org/wiki/Brendan_Eich&quot; title=&quot; Brendan Eich &quot;&gt;programmer&lt;/a&gt; turned CTO at Mozilla.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Sitting on the Fence&lt;/h3&gt;

&lt;p&gt;Last month brought Python developers a step closer to the up-and-coming version 3.0, with the final production-ready release of &lt;a href=&quot;http://python.org/download/releases/2.6/&quot; title=&quot; Python 2.6 Release &quot;&gt;Python 2.6&lt;/a&gt;. It adds plenty of &lt;a href=&quot;http://docs.python.org/whatsnew/2.6.html&quot; title=&quot; What's New in Python 2.6 &quot;&gt;new features&lt;/a&gt;, modules, improvements and bug fixes. For the Python 2.6 and 3.0 release schedule, visit &lt;acronym title=&quot; Python Enhancement Proposal &quot;&gt;PEP&lt;/acronym&gt; &lt;a href=&quot;http://python.org/dev/peps/pep-0361/&quot; title=&quot; Python 2.6 and 3.0 Release Schedule &quot;&gt;361&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So what's the big deal? Developers are both excited and concerned&amp;#8212;3.0 promises to bring great things&amp;#8212;but &lt;a href=&quot;http://loadaveragezero.com/drx/author/G#a123&quot; title=&quot; Guido van Rossum &quot;&gt;Guido&lt;/a&gt; has made it clear that the new version will likely break some older scripts. It reminds me of &lt;a href=&quot;http://loadaveragezero.com/app/drx/Programming/Languages/PHP&quot; title=&quot; Programming: Languages: PHP &quot;&gt;PHP&lt;/a&gt; 4.x to 5, although, at least for me, the impact was minimal. And version 5, once it stabilized, was a big improvement in terms of &lt;acronym title=&quot; Object Oriented Programming &quot;&gt;OOP&lt;/acronym&gt;.&lt;/p&gt;

&lt;p&gt;By adding compatibility functions in the &lt;code&gt;future_builtins&lt;/code&gt; module, and a -3 switch which warns about usages that will become obsolete, Python 2.6 should mitigate the migration to version 3.0.&lt;/p&gt;

&lt;h3&gt;Related Reading&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://regebro.wordpress.com/2008/03/22/why-python-26-and-30-compatibility-would-be-a-very-good-thing/&quot;&gt;Why Python 2.6 and 3.0 compatibility would be a Very Good Thing&lt;/a&gt; (Lennart Regebro)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://it.slashdot.org/article.pl?sid=08/10/03/2127223&quot;&gt;Python 2.6 to Smooth the Way for 3.0, Coming Next Month&lt;/a&gt; (Slashdot)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://arstechnica.com/news.ars/post/20081003-python-slithers-into-the-future-with-2-6-release.html&quot;&gt;Python language slithers into the future with 2.6 release&lt;/a&gt; (Ars Technica)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linux.com/feature/150399&quot;&gt;Python 3.0 makes a big break&lt;/a&gt; (Linux.com)&lt;/li&gt;
&lt;/ul&gt;
    </description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><dc:subject>developer</dc:subject>
<dc:subject>history</dc:subject>
<dc:subject>javascript</dc:subject>
<dc:subject>languages</dc:subject>
<dc:subject>module</dc:subject>
<dc:subject>oop</dc:subject>
<dc:subject>perl</dc:subject>
<dc:subject>php</dc:subject>
<dc:subject>programming</dc:subject>
<dc:subject>python</dc:subject>
    <dc:publisher>blogZero</dc:publisher>
    <dc:creator>dwclifton@gmail.com (Douglas Clifton)</dc:creator>
    <dc:subject>Programming, Python, OOP</dc:subject>
    <dc:date>2008-11-07T01:43:00Z</dc:date>
    <wfw:comment>http://loadaveragezero.com/app/s9y/wfwcomment.php?cid=152</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://loadaveragezero.com/app/s9y/rss.php?version=1.0&amp;type=comments&amp;cid=152</wfw:commentRss>
</item>
<cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.0/"><cc:requires rdf:resource="http://web.resource.org/cc/Attribution" /><cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" /><cc:permits rdf:resource="http://web.resource.org/cc/Distribution" /><cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /><cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" /><cc:prohibits rdf:resource="http://web.resource.org/cc/CommercialUse" /><cc:requires rdf:resource="http://web.resource.org/cc/Notice" /></cc:License></rdf:RDF>