<?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>Tue, 21 May 2013 04:34:16 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[PHPMaster.com: Safely Deprecating APIs]]></title>
      <guid>http://www.phpdeveloper.org/news/19583</guid>
      <link>http://www.phpdeveloper.org/news/19583</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's an article with some good suggestions about <a href="http://phpmaster.com/safely-deprecating-apis/">ways to deprecate parts of an API</a> safely.
</p>
<blockquote>
Deprecation can happen for various reasons - perhaps an API is no longer useful and has reached its end-of-life, or the refactoring of code to improve its reusability and testability obsoletes particular methods. In this article I'll share with you some key points that you should follow when deprecating APIs so you can continue to grow your code and provide fair warning to those who depend on it.
</blockquote>
<p>They break it up into a few different steps:</p>
<ul>
<li>Prepare for Refactoring
<li>Employ the Single Responsibility Principle
<li>Communicate with your Users
<li>Remove the Old Code
</ul>
Link: http://phpmaster.com/safely-deprecating-apis]]></description>
      <pubDate>Tue, 14 May 2013 13:09:17 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lorna Mitchell: What Goes in Source Control?]]></title>
      <guid>http://www.phpdeveloper.org/news/19525</guid>
      <link>http://www.phpdeveloper.org/news/19525</link>
      <description><![CDATA[<p>
As developers, one of the best things you can do for a project is to use version control (or "source control") for your code. <i>Lorna Mitchell</i> suggest using it <a href="http://www.lornajane.net/posts/2013/what-goes-in-source-control">on a wider scale</a>, though. She sees it as a great place for all sorts of other things around a project too.
</p>
<blockquote>
Short answer: everything! However we need some good directory structures and source control configuration to make that a really practical answer, so this article is a quick outline of my usual advice for a good source control structure for a standard web project. The examples are for a PHP project but I'm sure you could apply this to your own language of choice, also.
</blockquote>
<p>
These "other things" she suggests that should end up in source control including things like:
</p>
<ul>
<li>The actual "web root" of your application
<li>Library code
<li>Build scripts
<li>Configuration files
<li>Database patches
<li>Tests (unit, functional, integration, etc)
</lu>
Link: http://www.lornajane.net/posts/2013/what-goes-in-source-control]]></description>
      <pubDate>Tue, 30 Apr 2013 10:31:26 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: How to progress my PHP skills?]]></title>
      <guid>http://www.phpdeveloper.org/news/19519</guid>
      <link>http://www.phpdeveloper.org/news/19519</link>
      <description><![CDATA[<p>
On Reddit.com a reader has asked the community what they think he needs to do to <a href="http://www.reddit.com/r/PHP/comments/1d32dr/how_to_progress_my_php_skills/">progress his PHP skills</a> past the "little bit" he's learned so far.
</p>
<blockquote>
Last summer I started learning a little bit of PHP, knowing HTML and CSS drove me towards wanting to learn some PHP for fun. I went through a pretty simple book, and made some simple websites (registration and message system, user submitted data, file uploads) using mostly tutorials which I tweaked a little bit. Since last summer I haven't learned anything new, but now that summer is coming along again I might be a bit bored, so I have been thinking of attempting to learn even more.
</blockquote>
<p>Suggestions included in the comments are things like:</p>
<ul>
<li>Learn about software architecture.
<li>Understand your environment. 
<li>I very highly suggest learning a PHP framework.
<li><a href="http://www.phptherightway.com">http://www.phptherightway.com</a>
<li>Start learning industry tools for PHP. It will all influence your coding style, and illustrate why some styles are considered best practices.
<li>To add to the other suggestions, I recommend becoming a regular contributor to one or more open source projects. 
<li>What helped me a lot was to write my own micro framework using OOP that I can now use for future websites and web applications.
<li>Come up with a 'complex' web site/application idea and get to it. Bonus points if you can launch it and make money off it (half kidding).
</ul>
<p>
You can read the full set of comments for more good suggestions <a href="http://www.reddit.com/r/PHP/comments/1d32dr/how_to_progress_my_php_skills/">here</a>.
</p>
Link: http://www.reddit.com/r/PHP/comments/1d32dr/how_to_progress_my_php_skills]]></description>
      <pubDate>Mon, 29 Apr 2013 10:22:47 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: Good guidance for shifting to OO from Procedural coding]]></title>
      <guid>http://www.phpdeveloper.org/news/19333</guid>
      <link>http://www.phpdeveloper.org/news/19333</link>
      <description><![CDATA[<p>
On Reddit.com there's a conversation kicked off by user <i>swiftpants</i> about making the move from procedural PHP programming to the world of object-oriented programming. They <a href="http://www.reddit.com/r/PHP/comments/1a9003/good_guidance_for_shifting_to_oo_from_procedural/">ask for advice</a> from the community for the next steps to take to make the jump.
</p>
<blockquote>
One thing I always have in the back of my head is that all my code is procedural and I should be making use of classes and ?? more. I have a very basic understanding of OO programming but I rarely implement it. Is there a good book or online guide that can get me on my way to OO programming in php. I am especially looking for feed back from self taught programmers. 
</blockquote>
<p>
There's lots of comments on <a href="http://www.reddit.com/r/PHP/comments/1a9003/good_guidance_for_shifting_to_oo_from_procedural/">the post</a> talking about everything from:
</p>
<ul>
<li><a href="http://www.killerphp.com/tutorials/object-oriented-php/">Introductory videos</a> from KillerPHP
<li>Reading lots of other people's (OOP) code
<li>That OOP is more about code reusing and simplicity (DRY) than abstraction.
<li>You can learn a lot by working with one of the MVC/OO frameworks. Download one and build something.
<li>The suggestion of <a href="http://phptherightway.com/">phptherightway.com</a>
</ul>
<p>
Have any other thoughts on the best ways to learn OOP in PHP? <a href="http://www.reddit.com/r/PHP/comments/1a9003/good_guidance_for_shifting_to_oo_from_procedural/">Share them here!</a>
</p>]]></description>
      <pubDate>Tue, 19 Mar 2013 12:33:29 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Brandon Savage: Making Conferences Better]]></title>
      <guid>http://www.phpdeveloper.org/news/19251</guid>
      <link>http://www.phpdeveloper.org/news/19251</link>
      <description><![CDATA[<p>
<i>Brandon Savage</i> has posted some <a href="http://www.brandonsavage.net/making-conferences-better">ideas about making conferences better</a> and how they can appeal to a wider (and maybe more inexperienced) level of developer.
</p>
<blockquote>
<a href="http://www.brandonsavage.net/the-reasons-to-attend-php-conferences/">I love PHP conferences</a>. I attended a lot of PHP conferences when I was a brand new developer. Zendcon, OSCON, php[tek], Wordcamp Baltimore, DC PHP and others were my stomping grounds. I learned a lot, and the conferences I attended were on the whole useful, beneficial and wonderful experiences. But I also felt challenged by the fact that conferences don't offer much for bringing up new developers with concrete information and training. This isn't necessarily the fault of conferences: it's impossible to truly impart a useful skill into a developer with only a 45 minute talk.
</blockquote>
<p>He includes four ideas in the post and talks some about the role of training at the events:</p>
<ul>
<li>Are conferences even the right place for training?
<li>Creating Different Tracks of Different Lengths
<li>Including Hands-On Training During Tutorial Days
<li>Offer Learning-Focused Hackathons
</ul>
<p>
He also notes that some of it is up to the developers to find a good fit for what they need and the skills they're looking to learn. There's other options out there besides just the usual conferences, too and, as <i>Brandon</i> states, "investing in your career is the most valuable thing you can do for yourself."
</p>]]></description>
      <pubDate>Thu, 28 Feb 2013 11:19:50 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[James Fuller: 2013 Programming Podcasts for the New Year]]></title>
      <guid>http://www.phpdeveloper.org/news/18985</guid>
      <link>http://www.phpdeveloper.org/news/18985</link>
      <description><![CDATA[<p>
In a new post <i>James Fuller</i> has shared a <a href="http://www.jblotus.com/2013/01/03/2013-programming-podcasts-for-the-new-year/">list of programming podcasts</a> he suggests you take a listen to as this new year starts off.
</p>
<blockquote>
I have a long drive to work, and one of the things I do to pass the time regularly is listen to podcasts in the car. I really enjoy programming podcasts and conference talk recordings, and it's a really great way to educate yourself on the go. I wanted to throw a shout out to some podcasts that I haven't previously mentioned on the blog and hopefully turn on a few new listeners.
</blockquote>
<p>He's included six different shows in the list, some with a slant towards certain languages, but still valuable for developers in others:</p>
<ul>
<li><a href="http://devhell.info/">/dev/hell</a>
<li><a href="http://robots.thoughtbot.com/">Giant Robots Smashing into other Giant Robots</a>
<li><a href="http://programmingthrowdown.blogspot.com/">Programming Throwdown</a>
<li><a href="http://javascriptjabber.com/">Javascript Jabber</a>
<li><a href="http://www.hanselminutes.com/">Hanselminutes</a>
<li><a href="http://herdingcode.com/">Herding Code</a>
</ul>]]></description>
      <pubDate>Thu, 03 Jan 2013 10:37:34 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara: Seven Ways To Screw Up BCrypt]]></title>
      <guid>http://www.phpdeveloper.org/news/18934</guid>
      <link>http://www.phpdeveloper.org/news/18934</link>
      <description><![CDATA[<p>
If you're going to be rolling your own user handling in your application, no doubt you've heard that something like bcrypt-ing your passwords is a good idea. Well, <i>Anthony Ferrara</i> <a href="http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html">has some suggestions</a> for you and shows you seven ways you can "screw up" when trying ti implement it.
</p>
<blockquote>
There are numerous articles on the web about how to properly use bcrypt in PHP. So this time, rather than write yet-another-how-to-use-bcrypt article, I'm going to focus on the mistakes that are commonly made when implementing bcrypt. 
</blockquote>
<p>Here's the list of seven ways (each has its own description in the post):</p>
<ul>
<li>Using A Non-Random Salt
<li>Using An Incorrect Random Source for Salt Generation
<li>Using Too Weak Of A Cost Parameter
<li>Using The Wrong PHP Version
<li>Using The Wrong Prefix
<li>Not Checking For Errors
<li>Not Using A Library
</ul>
<p>
He also includes two "bonus" things to consider: "Not Using A Timing Safe Comparison" and "Not Encoding The Salt Correctly".
</p>]]></description>
      <pubDate>Fri, 21 Dec 2012 12:20:04 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ben Ramsey: Writing an Effective Talk Proposal]]></title>
      <guid>http://www.phpdeveloper.org/news/18831</guid>
      <link>http://www.phpdeveloper.org/news/18831</link>
      <description><![CDATA[<p>
if you've ever considered contributing to a PHP (or any other technology conference) but weren't sure about how to even get started writing up a proposal for a session, you should check out <a href="http://benramsey.com/blog/2012/11/writing-an-effective-talk-proposal/">this recent post</a> from <i>Ben Ramsey</i> with a good guide (and some advice experienced speakers could use too).
</p>
<blockquote>
Earlier today, I was asked "Any tips on how to write a proposal for a major conf?" I've never shared tips on this, and since the calls for proposals for <a href="http://sunshinephp.com/">Sunshine PHP</a> and <a href="http://www.midwestphp.com/">Midwest PHP</a> both end tomorrow, I thought it would be a good idea to share my approach to writing conference proposals. Remember those <a href="http://en.wikipedia.org/wiki/Five_paragraph_essay">standard, five-paragraph essays</a> you used to write in high school? Remember how you thought they sucked and wouldn't provide any practical benefit to your life? Well, it turns out they do have some redeeming qualities.
</blockquote>
<p>
He suggests that this "five paragraph essay" format helps you not only come up with a more fleshed out, full idea but also can provide you with the abstract to submit to the conference (possibly the first paragraph). He mentions the need for a "hook" and finishing off with an opinion that's the basis of the talk. He also has a reminder of a few things - don't talk down, don't use negative language and try not to use absolutes.
</p>]]></description>
      <pubDate>Mon, 03 Dec 2012 10:25:32 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio's Blog: Dependency Injection in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/18070</guid>
      <link>http://www.phpdeveloper.org/news/18070</link>
      <description><![CDATA[<p>
On his Reflective Thought blog <i>Luis Atencio</i> takes a look at the current state of <a href="http://www.reflectivethought.net/2012/05/dependency-injection-in-php.html">dependency injection in PHP</a> and shares a simple refactor from non-DI to code that uses it as a service locator.
</p>
<blockquote>
If you have worked with frameworks such as Spring or Google Guice, you will understand the power and flexibility that dependency injection provides your humongous code base. [...] One quick drawback that I see is that the stateless nature of PHP makes things like object containers not very practical.
</blockquote>
<p>
He proposes a slightly different kind of dependency injection system, one more akin to what's provided in the Java world where annotation and reflection are components of the integration. He provides a code sample of how this would look and points to Java's JSR-330 standard for some of the annotation examples (like "@inject" or "@scope").
</p>]]></description>
      <pubDate>Sat, 09 Jun 2012 10:55:36 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: 10 Tips for Better Coding]]></title>
      <guid>http://www.phpdeveloper.org/news/18001</guid>
      <link>http://www.phpdeveloper.org/news/18001</link>
      <description><![CDATA[<p>
PHPMaster.com has a new post with <a href="http://phpmaster.com/10-tips-for-better-coding/">ten helpful tips</a> for you to consider using during your development. These tips can help to not only make your current development simpler but make for easier to maintain, stronger code in the future.
</p>
<blockquote>
Good code is maintainable, reusable, and testable. The following tips address how you and/or your development team can handle various coding tasks and how to keep everything as neat as possible. I will introduce you to some "best practices" that will help you write better code and help make you and your team happy and efficient.
</blockquote>
<p>Among the suggestions on the list, there's things like:</p>
<ul>
<li>Use a Coding Standard
<li>Refactor
<li>Use Meaningful Names
<li>Use Automated Build Tools
<li>Use a Testing Framework
</ul>
<p>
Links are provided in several of the tips to other resources/tools that can provide you with more information about how to use it in your development.
</p>]]></description>
      <pubDate>Thu, 24 May 2012 10:30:17 -0500</pubDate>
    </item>
  </channel>
</rss>
