<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Wed, 23 May 2012 04:36:00 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Paul Reinheimer's Blog: The Danger of Hooks]]></title>
      <guid>http://www.phpdeveloper.org/news/17383</guid>
      <link>http://www.phpdeveloper.org/news/17383</link>
      <description><![CDATA[<p>
<i>Paul Reinheimer</i> has a recent post to his blog talking about <a href="http://blog.preinheimer.com/index.php?/archives/370-The-Danger-of-Hooks.html">the danger of "hooks"</a> in your development - the functionality several frameworks and other tools come with to allow you to add functionality to the core without having to change the main source.
</p>
<blockquote>
I ran into hooks rather simultaneously with two very different frameworks: Code Igniter and Lithium. In both cases I was using a rather nifty hook to handle ensuring that users were properly authenticated and authorized before accessing a page. [...] One day, while messing around, I accidentally turned off the hook configuration within Code Igniter (actually I clobbered a file, and restored the wrong one). Then, things came crashing down in a horrible cacophony of... actually they didn't. Everything kept working: that was the problem.
</blockquote>
<p>
He shows two solutions he came up with to be sure that his hooks were executed - one for Lithium and the other for CodeIgniter. The Lithium one uses a "_remap" method and the CodeIgniter example uses the magic "__invoke" method to check for an "AUTH_CHECKED" constant that's only defined as a part of his hooks.
</p>
<blockquote>
I'm no longer entirely dependent on one configuration option or file for my security to function. Should it fail, I've got a secondary check in place; this example of defence in depth allows me to be comfortable with the hooks security system once more.
</blockquote>]]></description>
      <pubDate>Thu, 12 Jan 2012 09:12:18 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[php|architect: Why Software Fails]]></title>
      <guid>http://www.phpdeveloper.org/news/16971</guid>
      <link>http://www.phpdeveloper.org/news/16971</link>
      <description><![CDATA[<p>
On the php|architect site today there's an opinion piece from <i>Marco Tabini</i> with his thoughts on <a href="http://www.phparch.com/2011/10/opinion-why-software-fails/">why software fails</a> - not why the project itself fails, but why the software fails to be useful.
</p>
<blockquote>
This is a much more common problem than engineers and architects are willing to admit. Far too often I see someone in charge of writing a piece software worry about how a product works without paying so much as a passing thought to whether it actually works the way people expect it to. The truth is that we are, by and large, stuck in a reality where software somehow equates with automation.
</blockquote>
<p>
He goes on to talk about how easy it is for us, as developers, to forge head with features and software that may not be useful to the masses. We worry more about solving a problem that may or may not actually be there. He illustrates with the example of a to-do list, providing the automation to make list tracking easier, but no guidance of how the user can make use of it effectively.
</p>]]></description>
      <pubDate>Mon, 10 Oct 2011 10:48:10 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[H&aring;vard Eide's Blog: ChaosMonkey]]></title>
      <guid>http://www.phpdeveloper.org/news/16873</guid>
      <link>http://www.phpdeveloper.org/news/16873</link>
      <description><![CDATA[<p>
<i>H&aring;vard Eide</i> has a new post sharing a tool he's created (based on some ideas presented in <a href="http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html">this netflix blog post</a>) for testing a web service. Specifically, his tool helps you test a web service developed with the <a href="http://www.slimframework.com/">Slim</a> framework.
</p>
<blockquote>
I just pushed a example on how to create a <a href="https://github.com/haavardeide/ChaosMonkey>ChaosMonkey</a> with the <a href="http://www.slimframework.com/">Slim framework</a> to github. The idea is that whenever you create a webservice with the Slim framework (which is really simple) you rarely test for failure, the ChaosMonkey class will help you to do just that. When initialized with the <a href="https://github.com/haavardeide/ChaosMonkey/blob/master/ChaosMonkey/Chaos/AbsoluteChaos.php">AbsoluteChaos</a> plugin it will randomly kill the webservice with exceptions, garbage to the output, or just run the service for you without failure at all.
</blockquote>
<p>
His plugin does a lot of things right now, but it's easy to extend with your own failure types - like his suggested "networkSleep" or something that could kill the connection to MySQL. He includes a <a href="http://eide.org/2011/09/18/chaosmonkey/">code snippet in the post</a> of how to hook Slim and ChaosMonkey together for some testing fun.
</p>]]></description>
      <pubDate>Mon, 19 Sep 2011 09:11:26 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[IT World: Lost programming skills]]></title>
      <guid>http://www.phpdeveloper.org/news/16769</guid>
      <link>http://www.phpdeveloper.org/news/16769</link>
      <description><![CDATA[<p>
On IT World there's an interesting article about the programming skills that <a href="http://www.itworld.com/print/190213">seem to be lost in today's coders</a> and how what they may not know might hurt them in the end.
</p>
<blockquote>
Some of these skills aren't likely to be needed again, any more than most of us need to know how to ride a horse or (sigh) drive a manual-transmission vehicle. But other skills and "lessons learned" may still or again prove relevant, whether developers are banging their heads against legacy systems, coding for new mobile and embedded devices... or other devices and applications we haven't yet thought of. [...] Here's what some industry veterans and seasoned coders think the younger generation doesn't know ... but should.
</blockquote>
<p>
He's broken it up into a few different sections - one dealing with the lack of general hardware knowledge by a good section of the today's developers, another noting that programming is not the same as software engineering (yes, really). He also touches on the lacking idea of "thinking before coding" and how planning for errors has become less and less of an importance.
</p>]]></description>
      <pubDate>Thu, 25 Aug 2011 08:50:42 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Slawek Lukasiewicz's Blog: Throwing Exception with Type Hinting Failed]]></title>
      <guid>http://www.phpdeveloper.org/news/16699</guid>
      <link>http://www.phpdeveloper.org/news/16699</link>
      <description><![CDATA[<p>
<i>Slawek Lukasiewicz</i> has a helpful hint posted to his blog today about handling type hinting failures in a what he sees as a "more correct" way than just throwing an error - <a href="http://www.leftjoin.net/2011/08/throwing-exception-when-type-hinting-failed">throwing an exception</a> when the hinting criteria's not met.
</p>
<blockquote>
One of the most annoying behavior of PHP type hinting feature is triggering error instead of throwing exception when instance type is invalid.
</blockquote>
<p>
By default, a failure generates a "catchable error" that, thanks to the <a href="http://www.php.net/manual/en/function.set-error-handler.php">custom error handling</a> methods PHP includes, can be correctly handled. He includes a snippet of code that defines the errorHandler method that checks the error type for E_RECOVERABLE_ERROR  and throws the exception (an ErrorException) if found.
</p>]]></description>
      <pubDate>Wed, 10 Aug 2011 09:58:57 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Andrew Johnstone's Blog: Memcached multigets - ubuntu vs debian]]></title>
      <guid>http://www.phpdeveloper.org/news/16467</guid>
      <link>http://www.phpdeveloper.org/news/16467</link>
      <description><![CDATA[<p>
<i>Andrew Johnstone</i> came across an interesting problem when he tried to use memcached multigets with a large number of keys - it was <a href="http://ajohnstone.com/achives/memcached-multigets-ubuntu-vs-debian/">throwing failures</a>, but only when he tried it on Ubuntu.
</p>
<blockquote>
I Spent a little while yesterday investigating why memcached causes problems with multigets returning results and ended up comparing debian vs ubuntu. [...] A larger number of keys than 200 causes memcached to fail to return valid responses, additionally the key length greatly varies the number items you can pull back within a single multiget on Ubuntu, Debian implementation of memcached is able to handle all requests regardless of key length size.
</blockquote>
<p>
He includes the code for his brief test and the output of the test runs on both Ubuntu and Debian systems. They clearly show the failures on the Ubunut side, with it throwing errors about "memcached_oi_read" and a zero length value returned to recv().
</p>]]></description>
      <pubDate>Tue, 14 Jun 2011 12:07:29 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Cal Evans' Blog: Only YOU can prevent web failures]]></title>
      <guid>http://www.phpdeveloper.org/news/14447</guid>
      <link>http://www.phpdeveloper.org/news/14447</link>
      <description><![CDATA[<p>
<i>Cal Evans</i> has a reminder to all of the businesses out there that have sites and use web site hosting services - <a href="http://blog.calevans.com/2010/04/30/only-you-can-prevent-web-failures/">only you can prevent web failures</a> and potentially alienate customers. 
</p>
<blockquote>
Last night I wrote the info@ email address on a website and asked a questions about their product. They politely responded with two links to their website. This morning however, when I went to visit them, I was greeted with the message above. It's now three hours later and the site is still "experiencing difficulties". [...] This problem can be prevented by business owners insisting on - and paying for - "Best Practices" in their software vendors.
</blockquote>
<p>
He offers a few suggestions to businesses to help prevent this sort of (catastrophic?) failure for their businesses including having a rollout and rollback plan and having a good set of tests to make doubly sure things work before the code even meets the public. 
</p>]]></description>
      <pubDate>Mon, 03 May 2010 09:37:20 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Keith Casey's Blog: Software Development Failures?]]></title>
      <guid>http://www.phpdeveloper.org/news/13090</guid>
      <link>http://www.phpdeveloper.org/news/13090</link>
      <description><![CDATA[<p>
In <a href="http://caseysoftware.com/blog/software-development-failures">this new post</a> to his blog <i>Keith Casey</i> looks at a metric he considers a true failure at measuring the success of a piece of software - lines of code.
</p>
<blockquote>
While the obvious implication of the article is that organizations are not properly equipped/trained/prepared to tackle these large software development projects and therefore eventually fail.  Especially early in my career, I tried to tackle problems and ideas that simply weren't reasonable or were considered ridiculously complex and far beyond my skills.  This is a common problem on software development teams with little real-world experience or hubris in their own skills or both...
</blockquote>
<p>
He doesn't see the Lines of Code (LOC) metric as particularly useful and backs it up with a few reasons including the overwhelming complexity of large codebases, duplication in functionality from place to place and the amount of "cruft" code that can accumulate in older, less used parts of the code.
</p>]]></description>
      <pubDate>Fri, 21 Aug 2009 14:34:17 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevBots Blog: Improving IT from Within]]></title>
      <guid>http://www.phpdeveloper.org/news/13069</guid>
      <link>http://www.phpdeveloper.org/news/13069</link>
      <description><![CDATA[<p>
On the DevBots blog recently <i>Darby Felton</i> posted <a href="http://devbots.com/blog/improving-it-from-within/">a few suggestions</a> of things that could be done to help improve IT organizations from the inside and promote a more healthy environment for everyone involved.
</p>
<blockquote>
Lately I have been thinking about a few aspects of the information technology industry. Particularly, regarding software development, I am concerned that the following characteristics remain pervasive and detrimental to our industry: far too many software development projects ultimately fail, we tend to lack clear, rigorous standards and credentials that other industries typically employ, and our [lack of] adherence to ethics and professional conduct leaves much to be desired.
</blockquote>
<p>
He addresses each of these, pointing out that a good number of IT environments have fallen into these issues and steps need to be taken to: reduce the failure rate of projects, hone down the staff to those that will turn out the best possible product and will uphold a good set of standards/ethics while they do.
</p>]]></description>
      <pubDate>Wed, 19 Aug 2009 10:08:40 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: Handling MySQL Data Set Failures in PHP 5]]></title>
      <guid>http://www.phpdeveloper.org/news/11309</guid>
      <link>http://www.phpdeveloper.org/news/11309</link>
      <description><![CDATA[<p>
DevShed continues their look at custom exception handling in PHP5 application with this <a href="http://www.devshed.com/c/a/PHP/Handling-MySQL-Data-Set-Failures-in-PHP-5/">third part</a> of their series, a look at handling exceptions from MySQL calls.
</p>
<blockquote>
Having already introduced you to the main subject of this article series, it's time to summarize the topics that were discussed in the last article, in case you haven't read it yet. In that particular tutorial I explained how to implement a fully-functional customized exception system with PHP 5, which came in handy for handling a number of specific exceptions thrown by a basic MySQL abstraction class.
</blockquote>
<p>
They create a custom MySQL exception class that sits on top of their MySQL abstraction layer (and Result handling class) and catches exceptions thrown from sample queries.
</p>]]></description>
      <pubDate>Wed, 29 Oct 2008 13:35:39 -0500</pubDate>
    </item>
  </channel>
</rss>

