<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   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:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>It's Fixed in the Next Release - It's a Code, Code World</title>
    <link>http://www.ambitonline.com/nextrelease/</link>
    <description>Observations on Everything</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.0.1 - http://www.s9y.org/</generator>
    <pubDate>Tue, 11 Nov 2008 14:42:31 GMT</pubDate>

    <image>
        <url>http://www.ambitonline.com/nextrelease/templates/competition/img/s9y_banner_small.png</url>
        <title>RSS: It's Fixed in the Next Release - It's a Code, Code World - Observations on Everything</title>
        <link>http://www.ambitonline.com/nextrelease/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Joomla 1.5.8 is... is what??</title>
    <link>http://www.ambitonline.com/nextrelease/archives/107-Joomla-1.5.8-is...-is-what.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/107-Joomla-1.5.8-is...-is-what.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=107</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Shortly after the &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=231&amp;amp;entry_id=107&quot; title=&quot;http://www.joomla.org/announcements/release-news/5219-joomla-158-released.html&quot;  onmouseover=&quot;window.status=&#039;http://www.joomla.org/announcements/release-news/5219-joomla-158-released.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;release of &quot;Joomla!&quot; 1.5.8&lt;/a&gt;, I found myself in this &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=232&amp;amp;entry_id=107&quot; title=&quot;http://www.techcebu.net/2008/11/joomla-158-released.html&quot;  onmouseover=&quot;window.status=&#039;http://www.techcebu.net/2008/11/joomla-158-released.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;release announcement on techcebu.net&lt;/a&gt;. It appears to be a bad case of double-translation, from English to Italian (or perhaps Hebrew) and back to English again. The text was just too hilarious to not repost.&lt;br /&gt;
&lt;br /&gt;
11Nov JOOMLA 1.5.8 RELEASED&lt;br /&gt;
&lt;br /&gt;
Joomla 1.5.8 Released&lt;br /&gt;
&lt;br /&gt;
The Joomla Project is entertained to foretell the unmediated availability of Joomla 1.5.8 [Wohnaiki]. This promulgation contains a sort of fault fixes and digit moderate-level section fixes. It has been around digit months since Joomla 1.5.7 was liberated on Sept 9, 2008. The Development Working Group’s content is to move to wage regular, regular updates to the Joomla community. &lt;br /&gt;
Download&lt;br /&gt;
Click here to download Joomla 1.5.8 (Full package) »&lt;br /&gt;
Click here to encounter an update package. »&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instructions&lt;br /&gt;
&lt;br /&gt;
    &lt;strong&gt; New installation and technical requirements&lt;br /&gt;
    &lt;/strong&gt; Upgrade from an existing Joomla 1.5 version&lt;br /&gt;
    &lt;strong&gt; Migration from Joomla! 1.0.x&lt;br /&gt;
&lt;br /&gt;
Want to effort intend Joomla? Try the online demo. Documentation is acquirable for beginners.&lt;br /&gt;
Release Notes&lt;br /&gt;
&lt;br /&gt;
Check the Joomla 1.5.8 Post-Release Notes to wager if there are essential items and adjuvant hints unconcealed after the release.&lt;br /&gt;
&lt;br /&gt;
View instance release notes for Joomla 1.5.7 or release notes for Joomla 1.5.6.&lt;br /&gt;
Security&lt;br /&gt;
&lt;br /&gt;
    &lt;/strong&gt; Two moderate-level section issues were immobile in this release:&lt;br /&gt;
          o Default filtering for content&lt;br /&gt;
          o Filtering for Web Link descriptions&lt;br /&gt;
&lt;br /&gt;
For additional information, visit the Joomla Security Center.&lt;br /&gt;
Components&lt;br /&gt;
&lt;br /&gt;
    &lt;strong&gt; Articles: Remove brackets around Last Updated fellow and time, Start Publishing fellow corrections for another than UT1 00:00, impact counts precise for Articles, adding a expanse after a draped telecommunicate address&lt;br /&gt;
    &lt;/strong&gt; E-mail addresses: Correctly draped when presented in Section and Category descriptions&lt;br /&gt;
    &lt;strong&gt; Categories: Edit picture aright shows for Articles without Title links, Print picture precise today on prototypal tender for Blog Layout&lt;br /&gt;
    &lt;/strong&gt;&lt;br /&gt;
      Sections: Plural and signifier modify correction, Category unification right ended, Router changes reverted to edition 1.5.6 so Article ID does not attach to the Article slug&lt;br /&gt;
    &lt;strong&gt; Frontpage: Article naming correction, rectified sort of Links&lt;br /&gt;
    &lt;/strong&gt; Contacts: Image pass rebuke when Image Directory is configured&lt;br /&gt;
    &lt;strong&gt; RSS Feed: Corrected spelling of Category in Category feed&lt;br /&gt;
    &lt;/strong&gt; User: Added isInternal checking on referer values&lt;br /&gt;
    &lt;strong&gt; Weblinks: Language strings&lt;br /&gt;
&lt;br /&gt;
Modules&lt;br /&gt;
&lt;br /&gt;
    &lt;/strong&gt;&lt;br /&gt;
      Feed: Target concept validation, module progress correction&lt;br /&gt;
    &lt;strong&gt; Login: ItemID is cured on redirect&lt;br /&gt;
    &lt;/strong&gt; Menu: Changing Menu Link Type today functions properly, Section Language string, Article Reset fix working&lt;br /&gt;
    &lt;strong&gt; Related Items: Keyword matched functions aright and filters characters appropriately&lt;br /&gt;
    &lt;/strong&gt; Stats: Corrected Time&lt;br /&gt;
    &lt;strong&gt; Sections: No dominance constant entireness correctly&lt;br /&gt;
    &lt;/strong&gt; Search: Form validates aright for Transitional xHTML&lt;br /&gt;
&lt;br /&gt;
Legacy&lt;br /&gt;
&lt;br /&gt;
    &lt;strong&gt; Return evidence additional for Legacy Menu Check&lt;br /&gt;
&lt;br /&gt;
Templates&lt;br /&gt;
&lt;br /&gt;
    &lt;/strong&gt; Beez: Lengthened E-mail Content Popup, Search fix today entireness when pressed, countersign set entireness correctly, corrections to Beez HTML folders, User info tender corrected&lt;br /&gt;
    &lt;strong&gt; JA_Purity: Added absent module strings&lt;br /&gt;
&lt;br /&gt;
Administrator&lt;br /&gt;
&lt;br /&gt;
    &lt;/strong&gt; Console: Added “Welcome to Joomla!” aggregation and Joomla Security RSS feeds to Administrator Console&lt;br /&gt;
    &lt;strong&gt; Installation: Proper redaction of factor directories, choice entries for Templates and Languages are today precise for uninstall&lt;br /&gt;
    &lt;/strong&gt; Media Manager: Changed choice for newborn sites to alter Flash multi-file uploader cod to contradictoriness with Flash 10&lt;br /&gt;
    &lt;strong&gt; Installation: Remove unclear nonachievement communication most module files for spreading installations, Administrator Modules today aright uninstall INI files&lt;br /&gt;
    &lt;/strong&gt; Sample data: Updated programme feeds to saucer to liberated code accord sites, comprehensive corrections and updates to distribution content&lt;br /&gt;
&lt;br /&gt;
System&lt;br /&gt;
&lt;br /&gt;
    &lt;strong&gt; API: JFolder::files and JFolder::folders corrections for Search, absent Method additional to JRecordSet, Database Class aright quotes obloquy not using extend notation, JTableUser matches using the precise sort of fields&lt;br /&gt;
    &lt;/strong&gt; Cache: Correct undefinable uncertain in Cache Class&lt;br /&gt;
    &lt;strong&gt; Language file: Corrected wording, precise artefact of PDF fonts autarkical of module choices, individual module progress corrections in en-GB.ini&lt;br /&gt;
    &lt;/strong&gt; Menu: Performance improvements for sites with some schedule items&lt;br /&gt;
    &lt;strong&gt; Users: Temporary Users are today healthy to logout, bonded prescript crapper today be utilised when redaction statement details&lt;br /&gt;
    &lt;/strong&gt; Added PHP 4 sympathy for isInternal checking&lt;br /&gt;
&lt;br /&gt;
Statistics&lt;br /&gt;
&lt;br /&gt;
Statistics for the 1.5.8 promulgation period:&lt;br /&gt;
&lt;br /&gt;
    &lt;strong&gt; Joomla 1.5.8 contains:&lt;br /&gt;
          o 71 issues immobile in SVN&lt;br /&gt;
          o 26 commits&lt;br /&gt;
    &lt;/strong&gt; Tracker state resulted in a gain modification of 4 astir issues:&lt;br /&gt;
          o 65 newborn reports&lt;br /&gt;
          o 130 closed&lt;br /&gt;
          o 66 immobile in SVN&lt;br /&gt;
    * At the instance the 1.5.8 promulgation was packaged, the tracker had 114 astir issues:&lt;br /&gt;
          o 44 open&lt;br /&gt;
          o 44 confirmed&lt;br /&gt;
          o 24 pending&lt;br /&gt;
&lt;br /&gt;
Joomla! Bug Squad&lt;br /&gt;
&lt;br /&gt;
Thanks to the Joomla Bug Squad for their sacred efforts work reports, sterilisation problems, and applying patches to Joomla. If you encounter a fault with Joomla, find discover more aggregation here on how to inform the bug.&lt;br /&gt;
&lt;br /&gt;
Active members of the Joomla Bug Squad during this terminal promulgation wheel include: Ian MacLennan and Mark Dexter co-leads; Airton Torres, river Zijlstra, Akarawuth Tamrareang, Alan Langford, suffragist Ferrara, Amy Stephen, saint Eddie, Elin Waring, Ercan Ozkaya, Charl camper Niekerk, Gergo Erdosi, Hannes Papenberg, Jennifer Marriott, Jens-Christian Skibakk, Jonah Braun, carpenter LeBlanc, Kevin Devine, Marijke Stuivenberg, Mati Kochen, Mickael Maison, Robin Muilwijk, prophet Moffatt, Shantanu Bala, Toby Patterson, and Wilco Jansen.&lt;br /&gt;
&lt;br /&gt;
A hearty recognize to the newest members of the Joomla Bug Squad: Dan Walker, Eduardo Diaz, and Tibor Toth. 
    </content:encoded>

    <pubDate>Tue, 11 Nov 2008 08:06:10 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/107-guid.html</guid>
    
</item>
<item>
    <title>&quot;IBM May Quit Technology Standards Bodies&quot; WSJ Screams</title>
    <link>http://www.ambitonline.com/nextrelease/archives/106-IBM-May-Quit-Technology-Standards-Bodies-WSJ-Screams.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/106-IBM-May-Quit-Technology-Standards-Bodies-WSJ-Screams.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=106</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=106</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Some days I wonder about the entire field of journalism. The quoted phrase above is from an article headline in the Wall Street Journal (September 23, 2008, &lt;em&gt;they don&#039;t deserve an actual link&lt;/em&gt;). The headline is not inaccurate, but it is close to the most ludicrously sensational interpretation of the facts that is possible.&lt;br /&gt;
&lt;br /&gt;
This is what the &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=225&amp;amp;entry_id=106&quot; title=&quot;http://www.marketwire.com/press-release/Ibm-NYSE-IBM-902622.html&quot;  onmouseover=&quot;window.status=&#039;http://www.marketwire.com/press-release/Ibm-NYSE-IBM-902622.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;actual IBM press release&lt;/a&gt; has to say on the point: &quot;The tenets of IBM&#039;s new policy are to: Begin or end participation in standards bodies based on the quality and openness of their processes, membership rules, and intellectual property policies.&quot;&lt;br /&gt;
&lt;br /&gt;
Thus an equally useless headline might be &quot;IBM May Join Technology Standards Bodies.&quot; I thought Journalism was supposed to add value for the reader, but it seems that even for otherwise reputable organizations, it&#039;s really all about sensational headlines that add value to the advertising department. &quot;Reputable&quot; in this context is now officially meaningless. Sad.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve noticed a lot of general criticism of standards processes over the past few weeks, and I think this release from IBM is largely responsible for firing up the discussion. For the most part, the criticism is justified. It seems that standards processes are either needlessly academic and somewhat out of touch with reality, or deeply buried in corporate politics and patent complications, which has a tendency to result in crappy standards. IBM&#039;s policy release sort of touches on this with another tenet: &quot;Collaborate with standards bodies and developer communities to ensure that open software interoperability standards are freely available and implementable.&quot; The problem with this is that IBM seems to want to set itself up as some benign intermediary between the standards process and the people who need to use the standards. Call me silly, but it seems more appropriate that the &lt;strong&gt;developer communities should be an integral part of the standards process, not some second-hand &quot;collaborative resource&quot;&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
The essence of the problem is funding. Participation in the standards process isn&#039;t cheap. Not only does membership cost, but participants typically absorb the costs of time, travel, and communications. Standards bodies need a funding model that ensures accessibility based on merit and relevance, rather than dollars. I don&#039;t know what that model is, but is can&#039;t be based on revenue from selling standards documents, either. The prospect of having to pay real money in order to ensure compliance with a standard is, in most cases, equally ridiculous and stupid.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 06 Oct 2008 08:06:45 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/106-guid.html</guid>
    
</item>
<item>
    <title>In Search of an Application Framework: PHP GTK Python XULRunner</title>
    <link>http://www.ambitonline.com/nextrelease/archives/103-In-Search-of-an-Application-Framework-PHP-GTK-Python-XULRunner.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/103-In-Search-of-an-Application-Framework-PHP-GTK-Python-XULRunner.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=103</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=103</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Lately I&#039;ve been thinking about starting yet another project. This one needs a rich GUI that runs as a thin client, as well as more limited support for a web browser (or so I thought initially). I&#039;ve gone through a bit of an eye-opening exercise while looking at the implementation, and I thought I&#039;d record the line of exploration just in case someone else is looking at the same sort of problem. Maybe this will save a little time.&lt;br /&gt;
&lt;br /&gt;
The original idea was to replace an interesting but quirky application that will remain nameless. It&#039;s a fairly large project that implements its own thin client. As I started looking at it, I realized that a lot of what it does is more related to providing the application framework than the application itself. Sometimes I still suffer from the closed-source way of thinking, and I soon began listing requirements for my own framework. A few minutes into defining my XML markup for laying out simple interfaces, I remembered that there is already a pretty good standard for that: &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=212&amp;amp;entry_id=103&quot; title=&quot;http://www.mozilla.org/projects/xul/&quot;  onmouseover=&quot;window.status=&#039;http://www.mozilla.org/projects/xul/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;XUL&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
At the time I was thinking of using &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=213&amp;amp;entry_id=103&quot; title=&quot;http://www.gtk.org&quot;  onmouseover=&quot;window.status=&#039;http://www.gtk.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;GTK+&lt;/a&gt; for the GUI. I&#039;ve grown somewhat fond of various GTK+ applications that I&#039;ve installed over the years. These applications have offered nice rich interfaces and have been pretty reliable. A lot of them are written in &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=214&amp;amp;entry_id=103&quot; title=&quot;http://www.python.org&quot;  onmouseover=&quot;window.status=&#039;http://www.python.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;Python&lt;/a&gt;, and the bridge between GTK+ and Python, &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=215&amp;amp;entry_id=103&quot; title=&quot;http://www.pygtk.org&quot;  onmouseover=&quot;window.status=&#039;http://www.pygtk.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&gt;&gt;PyGTK&lt;/a&gt; seems stable and well documented. On the other hand, Python is a little quirky and at this point I can churn out PHP code faster than anything else, perhaps &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=216&amp;amp;entry_id=103&quot; title=&quot;http://gtk.php.net&quot;  onmouseover=&quot;window.status=&#039;http://gtk.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;PHP-GTK&lt;/a&gt; is the way to go.&lt;br /&gt;
&lt;br /&gt;
The search is for something that lets me bridge XUL and GTK, be it in PHP or Python. This leads me to &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=217&amp;amp;entry_id=103&quot; title=&quot;http://php-gtk.eu/apps/gul2&quot;  onmouseover=&quot;window.status=&#039;http://php-gtk.eu/apps/gul2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;Gul&lt;/a&gt;, a fairly complete implementation of XUL for PHP-GTK.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s try adding the GTK to PHP. I go to the PHP-GTK site and try to figure out whether to download the binary package or the binary extensions package, read confusing and incomplete install notes, search about a bit, and as best I can tell, the easiest way to run PHP-GTK on Windows is to install a complete copy of PHP with the GTK extensions. This truly fails the cross-platform and easy-to-install tests &amp;mdash; I can manage it, but an end user? No way. Then I take a look at Gul 2.0: lots of procedural code that relies on passing things through obscure globals with two characters. Next!&lt;br /&gt;
&lt;br /&gt;
On to Python. Searches for XUL and Python lead, at best, to half-developed projects dating from 2004. Not good. Now the thinking is that maybe a fairly basic XUL module for Python won&#039;t be that much work. I look more deeply into XUL. Obviously, it&#039;s pretty capable, after all it&#039;s the base for Firefox and Thunderbird. But this makes the scope of a full implementation quite a lot bigger than I&#039;d like.&lt;br /&gt;
&lt;br /&gt;
Maybe there&#039;s something in &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=218&amp;amp;entry_id=103&quot; title=&quot;http://developer.mozilla.org/en/docs/XULRunner&quot;  onmouseover=&quot;window.status=&#039;http://developer.mozilla.org/en/docs/XULRunner&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;XULRunner&lt;/a&gt;. Wow. It doesn&#039;t take much looking around to realize that XULRunner is pretty compelling. It&#039;s obviously got the GUI with a full XUL implementation. It&#039;s got scripting in Javascript, Python, even Java. It has network interfaces and support for XML-RPC and SOAP. It&#039;s extensible: all the features that make it easy to plug extensions into Firefox are part of XULRunner. It&#039;s got localization and custom skins. It&#039;s got an integrated web browser. That&#039;s about 90% of the core requirements and several bonuses right there.&lt;br /&gt;
&lt;br /&gt;
Now the kicker: if you have Firefox 3.x installed, then you have XULRunner installed. Firefox knows how to do its own updates, which means the framework updates seamlessly too. Perfect. &lt;br /&gt;
&lt;br /&gt;
So that&#039;s it. Forget GTK+, nice as it is. XULRunner is a fantastic way to do GUI application development.&lt;br /&gt;
&lt;br /&gt;
Now all I need is a good way to map objects back to a relational database... 
    </content:encoded>

    <pubDate>Sun, 03 Aug 2008 21:48:27 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/103-guid.html</guid>
    
</item>
<item>
    <title>Why I Love Open Source</title>
    <link>http://www.ambitonline.com/nextrelease/archives/102-Why-I-Love-Open-Source.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/102-Why-I-Love-Open-Source.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=102</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=102</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Every user of an application has run into small but irritating characteristics of that application. Most of the time, they can be easily ignored. But sometimes they are part of a repetitive task, and then they become problematic. They have a disproportionate effect on both productivity and the user&#039;s overall impression of the application.&lt;br /&gt;
&lt;br /&gt;
Just about every enterprise makes nice noises about how they listen to their customers and how customer service is important to them, but the odds are very low that comments about small irritations will result in code changes. This is partially because most companies don&#039;t actually care as much about customer service as they pretend to, and partially because tracking these small things and then sorting through them, removing duplicates, and distilling them down to something that can be easily understood is a very complex and expensive task. Most of the time the effort involved simply doesn&#039;t justify the results.&lt;br /&gt;
&lt;br /&gt;
This is something that always attracted me to open source. As a developer, the odds are pretty good that I can find a fix for that thing that irritates me. Then I can change the code to fix my version. If the irritation is idiosyncratic &amp;mdash; basically if I&#039;m the only one who doesn&#039;t like it the way it is &amp;mdash; then that&#039;s where the process ends, and I&#039;m happy.&lt;br /&gt;
&lt;br /&gt;
The first credo of open source is that you try to give back to the community. So even as a non-developer there is an incentive to find the bug tracker or support forum for the project and to suggest a change. Sometimes that works[1], but a lot of the time good comments and patches simply fall through the cracks. After all, if tracking details like this is difficult for a for-profit corporation, it&#039;s not going to be any easier for a project run by volunteers!&lt;br /&gt;
&lt;br /&gt;
What is really satisfying is getting sufficiently involved in a project to be able to have a direct influence on it, as I am with &quot;Joomla!&quot;. It&#039;s great to be able to identify a minor irritation, to fix it, and to get it to a production release. This has been my experience twice in recent weeks. I&#039;ve implemented small changes to the system that make it just a little easier to use[2, 3]. Not only will I enjoy the product more as a result, I&#039;ll have the satisfaction of knowing that thousands of systems administrators out there might think just for a moment, &quot;oh, &lt;strong&gt;they&lt;/strong&gt; fixed that &amp;ndash; great!&quot;&lt;br /&gt;
&lt;br /&gt;
It is an interesting experience. These small tweaks and fixes that I get to make aren&#039;t the biggest contribution I make to the project in terms of lines of code or hours of work, but they&#039;re tangible and real. The direct impact on the user is visible and easy to understand. Implementing unit testing and contributing to the building of a &quot;Culture of Quality&quot; in the project are more complex and significant contributions, but they&#039;re also more abstract. The small tweaks are actually kind of fun, and it&#039;s nice to know that here and there, &lt;strong&gt;they&lt;/strong&gt; is &lt;strong&gt;me&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;If you&#039;re an Eclipse user and noticed that v3.1 puts the entire file path in the window title... that was my suggestion. In the web development world where you can have many files called &quot;index.php&quot; open, this helps you quickly figure out where you are.&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Add a new module to a &quot;Joomla!&quot; site from version 1.5.4 onward, and the list of available modules is now sorted alphabetically down the columns, rather than split across rows. We still have an issue to sort out with international characters, but it&#039;s an improvement.&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Starting in version 1.5.5, all panes in the parameters block can be collapsed. Before this change, if you had a long list of parameters that ran off the screen, you would need to scroll down to the bottom in order to expand a panel below. Now you can collapse the long block, which lets you see the panels below, and then expand the one you want.&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt; 
    </content:encoded>

    <pubDate>Wed, 16 Jul 2008 19:08:41 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/102-guid.html</guid>
    
</item>
<item>
    <title>Web 2.0 and the One Page Web Site</title>
    <link>http://www.ambitonline.com/nextrelease/archives/101-Web-2.0-and-the-One-Page-Web-Site.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/101-Web-2.0-and-the-One-Page-Web-Site.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=101</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=101</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    I&#039;m busy working on my first major web site using &quot;&lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=202&amp;amp;entry_id=101&quot; title=&quot;http://www.joomla.org&quot;  onmouseover=&quot;window.status=&#039;http://www.joomla.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Joomla!&lt;/a&gt;&quot; 1.5. One of the things I did for the site was to install a simple component that provides an index of articles in a side panel. Simple enough, you click on the index link and it fetches the page with that article.&lt;br /&gt;
&lt;br /&gt;
The problem is that it&#039;s quite a page. There&#039;s a nice graphics-rich template that wraps the site, then there&#039;s the Javascript. A full copy of &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=203&amp;amp;entry_id=101&quot; title=&quot;http://www.mootools.net&quot;  onmouseover=&quot;window.status=&#039;http://www.mootools.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;mootools&lt;/a&gt; comes with every page. Sure the browser has most of this stuff cached, and Joomla has the actual page content cached, but still the browser has to do a lot of work to reload the page and recompile mootools, just to change a relatively small portion of the page. The user gets to watch as everything is (re)displayed, &lt;em&gt;most of it exactly the same as it was before the request&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
The obvious solution would be to have the index link send an AJAX request for the relevant content and then to simply repaint the area that needs to change, but that only works in this specific case and it deprives the CMS of the ability to update other parts of the page in response to the request or to other events at the server.&lt;br /&gt;
&lt;br /&gt;
I&#039;m big on generalizing ideas like this, so why not make the entire site a single page? The first time the browser requests something from the site, send the structure of the template, and most of the Javascript needed to run the site down to the browser. Then make every internal site link send an AJAX request. The server can respond with a list of the areas of the template that need to be updated, along with either the HTML or the data needed to perform the update.&lt;br /&gt;
&lt;br /&gt;
Now my index request could respond with a new menu, any updated news items, the content I requested, or even a completely new page layout. The client-side application then applies these updates, possibly issuing secondary requests. Only the data that&#039;s changed comes back from the server, and most of the Javascript loads just once with the first request, so the page updates much faster than it did before. Best of all, the user doesn&#039;t have to watch the template being regenerated, which is visually disturbing no matter how quick it is.&lt;br /&gt;
&lt;br /&gt;
Now the page is an application in itself, and the browser is playing the role of the operating system. The user gets a platform independent, end-device sensitive interface that can be rich, intuitive, and more interactive.&lt;br /&gt;
&lt;br /&gt;
It&#039;s an idea worth implementing. Not for this particular site, but it would be nice to build this capability right into Joomla! 
    </content:encoded>

    <pubDate>Tue, 24 Jun 2008 09:34:47 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/101-guid.html</guid>
    
</item>
<item>
    <title>Microsoft Security Fix Clobbers Two Million Password Stealers</title>
    <link>http://www.ambitonline.com/nextrelease/archives/100-Microsoft-Security-Fix-Clobbers-Two-Million-Password-Stealers.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/100-Microsoft-Security-Fix-Clobbers-Two-Million-Password-Stealers.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=100</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=100</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Normally I&#039;m no fan of the &quot;blog by repeating news&quot; style, but in this case I have to make an exception. The headline above is from a Computerworld Security article dated June 20, 2008. Discussing a recent upgrade to Microsoft&#039;s Malicious Software Removal Tool, this excerpt caught my attention:&lt;br /&gt;
 &lt;br /&gt;
&lt;blockquote&gt;One password stealer, called Taterf, was detected on 700,000 computers in the first day after the update. That&#039;s twice as many infections as were spotted during the entire month after Microsoft began detecting the notorious Storm Worm malware last September.&lt;br /&gt;
&lt;br /&gt;
&quot;These are ridiculous numbers of infections my friends, absolutely mind-boggling,&quot; wrote Matt McCormack, a spokesman with Microsoft&#039;s Malware Response Center, in a &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=204&amp;amp;entry_id=100&quot; title=&quot;http://blogs.technet.com/mmpc/archive/2008/06/20/taterf-all-your-drives-are-belong-to-me-1-one.aspx&quot;  onmouseover=&quot;window.status=&#039;http://blogs.technet.com/mmpc/archive/2008/06/20/taterf-all-your-drives-are-belong-to-me-1-one.aspx&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Friday blog posting&lt;/a&gt;.&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
This may be mind-boggling to someone who lives deep in Microsoft culture, but to everyone else, it&#039;s barely a surprise. The missing part of McCormack&#039;s quote should have been &quot;The Linux/Unix guys are right, Windows security still sucks at a deep structural level.&quot; Good thing regular doses of Microsoft Cool-Aid prevents that. 
    </content:encoded>

    <pubDate>Tue, 24 Jun 2008 09:06:48 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/100-guid.html</guid>
    
</item>
<item>
    <title>Firefox 3 is Ready, Bug 183689 Intact. Duh.</title>
    <link>http://www.ambitonline.com/nextrelease/archives/99-Firefox-3-is-Ready,-Bug-183689-Intact.-Duh..html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/99-Firefox-3-is-Ready,-Bug-183689-Intact.-Duh..html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=99</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=99</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    The good news is that Firefox 3, one of the best web browsers available, is set to release version 3 in a few days.&lt;br /&gt;
&lt;br /&gt;
The weird news is that it&#039;s shipping with &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=219&amp;amp;entry_id=99&quot; title=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=183689&quot;  onmouseover=&quot;window.status=&#039;https://bugzilla.mozilla.org/show_bug.cgi?id=183689&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Bug 183689&lt;/a&gt; fully intact. Under mysterious (or at least elusive) circumstances, Firefox fails to close a file that the user uploads to a web site. The file is locked and unusable until Firefox is restarted.&lt;br /&gt;
&lt;br /&gt;
This has the ring of familiarity. Any user of Firefox 2.x who has lots of extensions installed will have noticed that it tends to get more and more sluggish over time. A quick look at the process will reveal that memory consumption continuously rises until the best thing to do is restart it.&lt;br /&gt;
&lt;br /&gt;
That&#039;s not really a problem that the Firefox developers had a lot of control over. If an extension is leaking memory, there&#039;s not much the core can do to stop it. In fact this is one of the major improvements in Firefox 3. A new, sophisticated memory manager now finds a lot of these unreferenced data structures and cleans them up. On my system, the memory footprint for Firefox 3 is nearly 200Mib smaller at start up, and if it grows, it doesn&#039;t grow very fast. That alone is reason to upgrade on &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=220&amp;amp;entry_id=99&quot; title=&quot;http://www.spreadfirefox.com/en-US/worldrecord/&quot;  onmouseover=&quot;window.status=&#039;http://www.spreadfirefox.com/en-US/worldrecord/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;June 17, 2008 &amp;ndash; Firefox Download Day&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The point of this digression is that I&#039;ve become used to Firefox losing track of resources. But losing a file handle? Really. Can that be too hard to find? Apparently the answer is &quot;yes&quot;, since &lt;strong&gt;Bug 183689 has been open since December, 2002!&lt;/strong&gt; There are some good reasons why the browser needs to keep track of the file, for example if you refresh the resulting page, the file is part of the Post data that needs to be re-sent.&lt;br /&gt;
&lt;br /&gt;
But eliminating memory leaks is hard, and it&#039;s easy to just rely on increasingly sophisticated garbage collection tools instead of finding the cause. Unfortunately, a garbage collector has no way of knowing that something it&#039;s cleaning up represents an open file, so the memory leak is fixed, but the file handle leak remains.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Five-plus years is far too long for a major bug to remain open&lt;/strong&gt;, even for an open source project. But don&#039;t go updating that bug! Despite the fact that there&#039;s no explanation that the issue is independent of the user&#039;s specific circumstances, any provision of additional information will be considered spam by Jonas Sicking, the fellow who has been assigned the bug. Considering that the bug seems difficult to reproduce, the contradiction is obvious. One would think that more examples might lead to the discovery of a pattern, but that seems to not be the case as far as Mr. Sicking is concerned.&lt;br /&gt;
&lt;br /&gt;
Hopefully he was just feeling a little stressed with a major release coming up so quickly, and his comment will be clarified or withdrawn. If not, I&#039;m guessing this one is going to remain open for quite some time to come.&lt;br /&gt;
&lt;br /&gt;
[Note: it has since been determined that an extension, LiveHTTPHeaders, is the culprit for this bug. My &quot;duh&quot; is withdrawn. My disdain for Mr. Sickling&#039;s response remains unchanged, however.] 
    </content:encoded>

    <pubDate>Sat, 14 Jun 2008 06:16:24 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/99-guid.html</guid>
    
</item>
<item>
    <title>Ubuntu is an African Word...</title>
    <link>http://www.ambitonline.com/nextrelease/archives/96-Ubuntu-is-an-African-Word....html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/96-Ubuntu-is-an-African-Word....html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=96</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    ...that means &quot;Gentoo is too hard for me.&quot;&lt;br /&gt;
&lt;br /&gt;
This line came from a chat with another developer, and I had to write it down. It has a lot of truth to it, as I watch my system compile the latest point release of KDE, while telling me I need to compile a new kernel and rewrite my MBR with the latest version of grub. Sigh.&lt;br /&gt;
&lt;br /&gt;
Maybe it&#039;s not so much &quot;too hard&quot;, but just &quot;too much trouble.&quot; Don&#039;t get me wrong, I love Gentoo. I&#039;ve made my Gentoo box do some really neat things, and most of the time I know I have the latest and greatest installed and ready to go.&lt;br /&gt;
&lt;br /&gt;
On the other hand, my &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=198&amp;amp;entry_id=96&quot; title=&quot;http://kubuntu.com/&quot;  onmouseover=&quot;window.status=&#039;http://kubuntu.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Kubuntu&lt;/a&gt; laptop is a lot easier to maintain, even if it&#039;s not right up there on the cutting edge. An Ubuntu maintenance update takes minutes; KDE will be compiled in 5 hours or so, and there will be manual steps to be done after that.&lt;br /&gt;
&lt;br /&gt;
Then there&#039;s the matter of &quot;not by me&quot; maintenance. If I put Gentoo into a production server, how long will it take me to train someone else to take care of it? What are the odds that they&#039;ll fail? If they quit, how easy will it be to find a replacement? It used to be that I planned to build a stable binary build on a stand-alone machine, then use it to send binary packages to production servers, but even that still needs someone willing to deal with Gentoo&#039;s quirks and complexities on the back end.&lt;br /&gt;
&lt;br /&gt;
Tossing Gentoo and moving to Ubuntu may be copping out, but it&#039;s a lot simpler. It&#039;s not the &quot;best&quot; solution from a bit-head&#039;s point of view, but from the management side, it&#039;s &quot;Keep It simple, Stupid&quot; in action.&lt;br /&gt;
&lt;br /&gt;
The biggest problem will be moving all the development tools and demos across. Switching distributions isn&#039;t something to be taken lightly. It&#039;s a job for when I have a few days to play... like that&#039;s about to happen. 
    </content:encoded>

    <pubDate>Fri, 23 May 2008 08:39:52 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/96-guid.html</guid>
    
</item>
<item>
    <title>&quot;Joomla!&quot; Goes PHP5</title>
    <link>http://www.ambitonline.com/nextrelease/archives/95-Joomla!-Goes-PHP5.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/95-Joomla!-Goes-PHP5.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=95</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    The decision to drop PHP4 support in the next version of Joomla was made yesterday.&lt;br /&gt;
&lt;br /&gt;
There&#039;s going to be some controversy over this one, but in my opinion, it&#039;s the right move. It&#039;s actually something I&#039;ve been (gently, I hope) lobbying for for months.&lt;br /&gt;
&lt;br /&gt;
Top reasons to move to PHP5:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;By the time 1.6 comes out, PHP4 will be completely unsupported.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;We can make Joomla run faster under PHP5.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;The only people this will cause a really serious problem for are lazy ISPs who haven&#039;t got their act together. Hosting providers who don&#039;t have PHP5 support in place by now probably have all sorts of other maintenance issues outstanding and deserve this pain, in my opinion.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;It makes my AP5L ACL code a candidate for use as a &quot;rights provider&quot; in the next release, which would makr my first really significant contribution to the project.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;PHP5 is a lot nicer to code in.&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;br /&gt;
Very happy. 
    </content:encoded>

    <pubDate>Mon, 12 May 2008 14:47:20 -0500</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/95-guid.html</guid>
    
</item>
<item>
    <title>Diagnostic Output Class Gets Even Niftier</title>
    <link>http://www.ambitonline.com/nextrelease/archives/80-Diagnostic-Output-Class-Gets-Even-Niftier.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/80-Diagnostic-Output-Class-Gets-Even-Niftier.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=80</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=80</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Shortly after finishing the PHP AP5L_Debug class, I encountered a nasty problem with an AJAX enabled page. Although it&#039;s possible to include diagnostic information in an AJAX response, the client side JavaScript has to figure out it&#039;s there and then figure out how to display it in a sensible way, which also means putting it on the page in some dynamic HTML, or extracting it in a debugger. That&#039;s just not fun.&lt;br /&gt;
&lt;br /&gt;
Or you can try setting up an XDEBUG connection, which seems like a lot of work for a couple of diagnostic messages, and if you&#039;re running on some shared hosting plan, you can probably forget about that anyhow.&lt;br /&gt;
&lt;br /&gt;
So I figured why not just route the diagnostics out through a socket and write the output on a console somewhere?&lt;br /&gt;
&lt;br /&gt;
So after a little work, AP5L_Debug now offers two variations.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;AP5L_Debug_Stdout just echoes the data to the output stream (well not quite: if no headers have been sent, it buffers the data and then writes everything on the first post-header output, or on an explicit flush).&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;AP5L_Debug_Udp sends the data to the address and port of your choice. There&#039;s also AP5L_Debug_Listener, which is a crude command line tool that reads data from the port and dumps the information to the console.&lt;br /&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
It worked like a charm. The diagnostics identified what was a pretty simple mistake, I fixed the code, and the problem was solved in no time.&lt;br /&gt;
&lt;br /&gt;
Also, since the diagnostics don&#039;t mess up the generated page, I can see using this technique even when there&#039;s no AJAX involved. That&#039;s more than welcome.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 09 Jan 2008 19:50:18 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/80-guid.html</guid>
    
</item>
<item>
    <title>AP5L Gets a Nifty Diagnostic Output Class</title>
    <link>http://www.ambitonline.com/nextrelease/archives/79-AP5L-Gets-a-Nifty-Diagnostic-Output-Class.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/79-AP5L-Gets-a-Nifty-Diagnostic-Output-Class.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=79</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=79</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    I just added a class to the &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=174&amp;amp;entry_id=79&quot; title=&quot;http://ap5l.googlecode.com&quot;  onmouseover=&quot;window.status=&#039;http://ap5l.googlecode.com&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;AP5L&lt;/a&gt; PHP library that does something I&#039;ve wanted for a long time.&lt;br /&gt;
&lt;br /&gt;
Most applications have a debug mode that shows developers what&#039;s going on under the hood, so that they can diagnose problems. The problem with these modes is always selectively controlling what gets displayed at runtime. Most of the time, debugging is an on/off switch. Turn it on and you get reams of information. Usually only a small part is relevant and you have to dig through it all to find the information you need.&lt;br /&gt;
&lt;br /&gt;
The AP5L_Debug class maintains an array of debug settings. The format of a setting is &quot;type@namespace::class::method&quot;. Any value can be associated with a setting. The setting mechanism allows simple fine-grained control over what gets written as diagnostics. Want to turn on all the diagnostics in MyClass? Simple. Do it with AP5L_Debug::getInstance() -&gt; setState(&#039;::MyClass&#039;, true); Only interested in the close function? AP5L_Debug::getInstance() -&gt; setState(&#039;::MyClass::close&#039;, true);&lt;br /&gt;
&lt;br /&gt;
The real joy of this is that the actual output statements remain very simple. Just use AP5L_Debug::getInstance() -&gt; write(&#039;My debugging message); Debug automatically figures out the class and method names, and looks for relevant settings. Namespaces will be implemented when they arrive in PHP 5.3.&lt;br /&gt;
&lt;br /&gt;
There&#039;s some more great features as well. Check out the comments at the beginning of the AP5L_Debug class.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 08 Jan 2008 16:24:00 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/79-guid.html</guid>
    
</item>
<item>
    <title>Elegant Runtime Configuration</title>
    <link>http://www.ambitonline.com/nextrelease/archives/78-Elegant-Runtime-Configuration.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/78-Elegant-Runtime-Configuration.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=78</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=78</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    While working on a unit test facility for the &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=169&amp;amp;entry_id=78&quot; title=&quot;http://www.joomla.org&quot;  onmouseover=&quot;window.status=&#039;http://www.joomla.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&quot;Joomla!&quot;&lt;/a&gt; project, one of the developers made me aware of functions in the &quot;Standard PHP Library&quot; that let you do some powerful things with class auto-loading.&lt;br /&gt;
&lt;br /&gt;
One of the biggest challenges with code libraries is making them easy to configure in a wide range of server environments. &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=170&amp;amp;entry_id=78&quot; title=&quot;http://pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR&lt;/a&gt; is a large, powerful set of packages that is useful in just about any application, but getting the installation right can be a real pain, particularly in shared hosting environments.&lt;br /&gt;
&lt;br /&gt;
The SPL allows an application to manipulate a stack of auto-load functions. So now to use AP5L, all you have to do is include the base AP5L.php file and then call AP5L::install(). The &quot;installer&quot; injects an auto-loader that recognizes all AP5L classes. Since the code for these classes is relative to the base AP5L.php, it can derive the appropriate file name from the class name with ease. If the class isn&#039;t part of AP5L, it simply passes it along to the next loader in the stack.&lt;br /&gt;
&lt;br /&gt;
AP5L::install() also has an option for a more traditional approach, adding the install path to PHP&#039;s include file path. However this leaves the application with the responsibility of including the class files before they&#039;re used. In highly tuned systems with performance optimizers there are some good reasons to load all classes in one shot, and this option makes that slightly easier. [If you&#039;re really interested in performance, the best easy thing to do is to merge everything into one big file, stripped of comments and whitespace, but that&#039;s another topic.] 
    </content:encoded>

    <pubDate>Mon, 07 Jan 2008 20:05:35 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/78-guid.html</guid>
    
</item>
<item>
    <title>RapidForm Refactored for AP5L</title>
    <link>http://www.ambitonline.com/nextrelease/archives/77-RapidForm-Refactored-for-AP5L.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/77-RapidForm-Refactored-for-AP5L.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=77</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    One day I needed a simple form for list subscription that needed a CAPTCHA image and I didn&#039;t want to go through the trouble of trying to crowbar it into any of the &quot;complex&quot; PEAR form packages.&lt;br /&gt;
&lt;br /&gt;
So I thought &quot;why not build something really simple and lightweight that will create and validate a simple form?&quot; I wanted three methods: create, validate, and save. Sweet, simple, easy to code.&lt;br /&gt;
&lt;br /&gt;
That might not have been the smartest thing I ever did. &lt;br /&gt;&lt;a href=&quot;http://www.ambitonline.com/nextrelease/archives/77-RapidForm-Refactored-for-AP5L.html#extended&quot;&gt;Continue reading &quot;RapidForm Refactored for AP5L&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 07 Jan 2008 18:08:57 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/77-guid.html</guid>
    
</item>
<item>
    <title>How to Completely Update an Eclipse Workspace</title>
    <link>http://www.ambitonline.com/nextrelease/archives/75-How-to-Completely-Update-an-Eclipse-Workspace.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/75-How-to-Completely-Update-an-Eclipse-Workspace.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=75</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=75</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    Over the years that I&#039;ve been using Eclipse, my main workspace has been accumulating bit rot. Older versions of plugins have left settings around, many small configuration details have been &quot;not quite right&quot;, and I never really figured out how to deal with the glitches, so I just tolerated them.&lt;br /&gt;
&lt;br /&gt;
But the Europa build, or PDT, or something in my configuration brought in &quot;Buckminster&quot;. In my workspace, Buckminster had an annoying habit of pausing for several seconds, dumping a bunch of error messages about deprecated constructs in some meta data file (to which I say &quot;it&#039;s your damn file, you deal with it&quot; to no avail).&lt;br /&gt;
&lt;br /&gt;
While trying to deal with a major annoyance in Eclipse, namely that settings for tabs/spaces are &lt;strong&gt;Workspace global&lt;/strong&gt; (duh), I gave in to this limitation and set up a new workspace and imported some of my tab based projects. &lt;br /&gt;&lt;a href=&quot;http://www.ambitonline.com/nextrelease/archives/75-How-to-Completely-Update-an-Eclipse-Workspace.html#extended&quot;&gt;Continue reading &quot;How to Completely Update an Eclipse Workspace&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 19 Dec 2007 09:50:14 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/75-guid.html</guid>
    
</item>
<item>
    <title>AP5L: The Abivia PHP5 Library Now Available</title>
    <link>http://www.ambitonline.com/nextrelease/archives/71-AP5L-The-Abivia-PHP5-Library-Now-Available.html</link>
            <category>It's a Code, Code World</category>
    
    <comments>http://www.ambitonline.com/nextrelease/archives/71-AP5L-The-Abivia-PHP5-Library-Now-Available.html#comments</comments>
    <wfw:comment>http://www.ambitonline.com/nextrelease/wfwcomment.php?cid=71</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ambitonline.com/nextrelease/rss.php?version=2.0&amp;type=comments&amp;cid=71</wfw:commentRss>
    

    <author>nospam@example.com (Alan Langford (developer blog))</author>
    <content:encoded>
    This is more a case of &quot;release prematurely, release often&quot; than anything else, but I&#039;ve just completed the move of my PHP5 libraries up to a &lt;a href=&quot;http://www.ambitonline.com/nextrelease/exit.php?url_id=165&amp;amp;entry_id=71&quot; title=&quot;http://code.google.com/p/ap5l/&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/ap5l/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Google Code repository&lt;/a&gt;, with a GPLv3 license attached.&lt;br /&gt;
&lt;br /&gt;
The primary reason for the release is to get the generic ACL code out in the wild.&lt;br /&gt;
&lt;br /&gt;
As the project description says, documentation is thin to nonexistent, and significant parts of the code are just straight copies of the equivalent PHP4 library. I&#039;ll be &quot;porting&quot; code as the opportunity arises. &lt;br /&gt;&lt;a href=&quot;http://www.ambitonline.com/nextrelease/archives/71-AP5L-The-Abivia-PHP5-Library-Now-Available.html#extended&quot;&gt;Continue reading &quot;AP5L: The Abivia PHP5 Library Now Available&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 04 Dec 2007 09:20:06 -0600</pubDate>
    <guid isPermaLink="false">http://www.ambitonline.com/nextrelease/archives/71-guid.html</guid>
    
</item>

</channel>
</rss>