<?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>Sun, 19 May 2013 18:57:06 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Anthony Ferrara: Our Failure As An Industry]]></title>
      <guid>http://www.phpdeveloper.org/news/19554</guid>
      <link>http://www.phpdeveloper.org/news/19554</link>
      <description><![CDATA[<p>
<i>Anthony Ferrara</i> has a new post to his site today describing what he sees as a <a href="http://blog.ircmaxell.com/2013/05/our-failure-as-industry.html">failure in our industry</a> - letting security become an after-thought to the development process.
</p>
<blockquote>
In the April issue of the <a href="http://www.phparch.com/">PHPArch magazine</a> (also published on her blog), Elizabeth Tucker Long wrote a really interesting editorial piece coining a concept she called Security-Driven-Development. She (quite correctly) identified a problem in the current development community where security has become an after-thought (if it's thought of at all). This isn't a new concept, in fact it's a concept that I and many others have been preaching for quite a while now. However I've been coming to realize that I've had it wrong the whole time. And I think the entire industry is getting it wrong today.
</blockquote>
<p>
He talks some about the current state of web application development and how, even with more powerful technologies than ever, we still fall short in security testing. He suggests that the current way of doing things - treating security testing as a "throw it over the wall" or "someone else's job" problem - needs to stop. Security needs to be integrated with development and he suggests that managers and developers of open source projects should take the lead.
</p>
Link: http://www.lornajane.net/posts/2013/setting-multiple-headers-in-a-php-stream-context]]></description>
      <pubDate>Tue, 07 May 2013 09:19:34 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara: Failure Is Always An Option - Programming With Anthony]]></title>
      <guid>http://www.phpdeveloper.org/news/19390</guid>
      <link>http://www.phpdeveloper.org/news/19390</link>
      <description><![CDATA[<p>
<i>Anthony Ferrara</i> has posted another video in his "Programming with Anthony" series, this time pointing out that <a href="http://blog.ircmaxell.com/2013/03/failure-is-always-option-programming.html">failure is always an option</a>.
</p>
<blockquote>
A few days ago, I posted a video about how to become a better developer. There were a few interesting comments made, but one in particular from the <a href="http://www.reddit.com/r/PHP/comments/1b69sg/becoming_a_better_developer_anthony_ferrara/">Reddit thread</a>peaked my interest. So I decided to do a reply. 
</blockquote>
<p>
You can watch the video either <a href="http://blog.ircmaxell.com/2013/03/failure-is-always-option-programming.html">in his blog</a> or over <a href="http://youtu.be/a1tPbfu-fLY">on Youtube</a>. He's also included the some of the contents of the Reddit post and a <a href="http://abstrusegoose.com/249">funny (relevant) comic</a> about learning "C++ in 21 days".
</p>]]></description>
      <pubDate>Mon, 01 Apr 2013 09:03:19 -0500</pubDate>
    </item>
    <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>
  </channel>
</rss>
