<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator>Persumi - Level up your writing and blogging with AI</generator>
  <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
  <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
  <link href="http://persumi.com/u/fredwu/tech/e/blog/t/php"/>
  <link href="http://persumi.com/u/fredwu/tech/e/blog/t/php/feed/rss"/>
  <link rel="self" href="http://persumi.com/u/fredwu/tech/e/blog/t/php/feed/atom"/>
  <author>
    <name>Fred Wu</name>
    <email>ifredwu@gmail.com</email>
    <uri>http://persumi.com/u/fredwu</uri>
  </author>
  <subtitle/>
  <id>http://persumi.com/u/fredwu/tech/e/blog/t/php</id>
  <title>Blog (php) - Fred Wu&apos;s Tech</title>
  <updated>2026-05-01T10:56:48.226859Z</updated>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
&lt;strong&gt;TL;DR - PHP is still a useful tool, but as a PHP developer, have you started playing with other useful tools? Here’s my story.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
Today Jeff Atwood’s new piece “&lt;a href=&quot;http://www.codinghorror.com/blog/2012/06/the-php-singularity.html&quot;&gt;The PHP Singularity&lt;/a&gt;“ and Marco Arment’s “&lt;a href=&quot;http://www.marco.org/2012/06/29/php-addiction&quot;&gt;PHP Addiction&lt;/a&gt;“ have started another round of heated discussion on PHP.&lt;/p&gt;
&lt;p&gt;
As someone who started his career as a PHP developer, I feel like sharing my thoughts from a different perspective.&lt;/p&gt;
&lt;p&gt;
I began my career as a freelancer - since JavaScript and PHP were the two programming languages I learnt at school, they naturally became my weapon of choice for freelancing work.&lt;/p&gt;
&lt;p&gt;
At that time I knew very little about software development. My desire was simple: I liked making websites, therefore I decided I was going to do it for a living.&lt;/p&gt;
&lt;p&gt;
Over the years I came across many people who shared a similar background - people who do not have a strong (or any) computer science / software engineering background, were making websites.&lt;/p&gt;
&lt;p&gt;
Compared to most software developers, the &lt;strong&gt;intention&lt;/strong&gt; of doing programming for me was different. I had no intention (or awareness) to &lt;strong&gt;create maintainable software&lt;/strong&gt; , instead I simply wanted to &lt;strong&gt;create an end product that works&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
Was I wrong? According to the market, no. There are many clients who want affordable websites, just like there are many people who want affordable Android phones. On one end you have Android phones that compete with the iPhone and take time to get released, on the other end you have Android phones that use readily available, often less desirable components and are quick to market. Each serves its purpose and fulfils customer demands.&lt;/p&gt;
&lt;p&gt;
As I kept developing websites and educating myself, I became more and more interested in software development. That’s when I started reading books like “&lt;a href=&quot;http://www.apress.com/9781590599099/&quot;&gt;PHP Objects, Patterns, and Practice&lt;/a&gt;“. But even then, my knowledge was still extremely limited, and my desire at that time was to &lt;strong&gt;increase my PHP knowledge&lt;/strong&gt; and &lt;strong&gt;become a better developer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
For the first desire I made it happen by reading more books and articles, but for the second desire - I thought I made it happen, but in reality I didn’t because I did not correctly identify my weakness. It wasn’t just about the depth of knowledge, but also the breadth.&lt;/p&gt;
&lt;p&gt;
Spending most of my time writing PHP made me too comfortable in a little corner. The discovery of tools such as &lt;a href=&quot;http://codeigniter.com/&quot;&gt;CodeIgniter&lt;/a&gt; made me feel good about being a competent web developer. After all, I was doing quite a fine job churning out websites.&lt;/p&gt;
&lt;p&gt;
In 2006 I discovered Ruby on Rails, but that did not have too much impact on me, because &lt;strong&gt;I was not yet capable to tell the differences it has compared to PHP (frameworks)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
In my mind, PHP and Ruby are both scripting languages that can be used for developing websites and web applications. Although the statement is true, not knowing the specifics made me very ignorant. It is almost like not knowing the difference between travelling from one continent to another by an airplane and by a ship - either will get you to the destination, right?&lt;/p&gt;
&lt;p&gt;
And this is exactly why my first ruby program looked just like a PHP program.&lt;/p&gt;
&lt;p&gt;
It was (and still is) an interesting and rewarding journey to slowly discover why my Ruby code sucked.&lt;/p&gt;
&lt;p&gt;
So I started reading on design patterns, &lt;a href=&quot;http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882&quot;&gt;software craftsmanship&lt;/a&gt; and &lt;a href=&quot;http://pragprog.com/book/btlang/seven-languages-in-seven-weeks&quot;&gt;other programming languages&lt;/a&gt;. And I was lucky enough to be surrounded by &lt;a href=&quot;http://envato.com/#about-envato&quot;&gt;many brilliant developers&lt;/a&gt; who taught me how to write better code.&lt;/p&gt;
&lt;p&gt;
At that point, my intention for learning more about software development had shifted from simply making an end product, to making an end product that can be maintained.&lt;/p&gt;
&lt;p&gt;
And that &lt;a href=&quot;https://github.com/fredwu&quot;&gt;changed everything&lt;/a&gt;. From a PHP developer who just wanted to churn out websites quickly, to a developer who wanted to use software development to create &lt;em&gt;value&lt;/em&gt; - in the sense of both business value and technical value.&lt;/p&gt;
&lt;p&gt;
An important thing to remember is though, &lt;strong&gt;it’s not about Ruby&lt;/strong&gt; , and it certainly &lt;strong&gt;is not about looking down on PHP&lt;/strong&gt;. Rather, the point is to see whether or not there’s something out there that might enable you to look at things differently, and do things differently, for better or for worse.&lt;/p&gt;
&lt;p&gt;
PHP for some is a &lt;em&gt;double-clawed hammer&lt;/em&gt;, but there is no doubt in my mind that for some others it is a near perfect tool, for now at least. Having said that, &lt;strong&gt;many other kids have started playing with all sorts of toys, why haven’t you?&lt;/strong&gt; :)&lt;/p&gt;
]]&gt;</content>
    <published>2012-06-29T19:03:00.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/php-devs-have-you-started-playing-with-more-toys"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/php-devs-have-you-started-playing-with-more-toys</id>
    <title>PHP Devs: Have You Started Playing with More Toys?</title>
    <updated>2012-06-29T19:03:00.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
Today &lt;a href=&quot;http://www.alexhudson.com/2012/03/24/a-fond-farewell-to-zend-framework/&quot;&gt;an interesting blog post on Zend Framework&lt;/a&gt; has made to the Hacker News front page. I have to agree with the author - Zend Framework is an over-engineered piece of software.&lt;/p&gt;
&lt;p&gt;
A few years ago I was working full time as a PHP developer. Naturally, I had experimented with lots of frameworks, including &lt;a href=&quot;http://cakephp.org/&quot;&gt;CakePHP&lt;/a&gt;, &lt;a href=&quot;http://codeigniter.com/&quot;&gt;CodeIgniter&lt;/a&gt;, &lt;a href=&quot;http://kohanaframework.org/&quot;&gt;Kohana&lt;/a&gt;, &lt;a href=&quot;http://www.yiiframework.com/&quot;&gt;Yii&lt;/a&gt;, &lt;a href=&quot;http://www.symfony-project.org/&quot;&gt;Symfony&lt;/a&gt; and obviously, &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Over the years, I had developed many projects primarily using CodeIgniter and later on, Kohana. There was one project that was larger in scale compared to an average PHP project (whatever that means), so I decided to use Zend Framework to take advantage of its component-based structure.&lt;/p&gt;
&lt;p&gt;
The result? &lt;strong&gt;It was dreadful.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
At that time there wasn’t any built-in or quick n’ easy way of bootstrapping a Zend Framework project, so we had to cook up our own. The documentation was absolutely horrible despite its completeness viewed from a distance - to find anything useful, Google is more likely to provide you with the answer, even from the results on the documentation site. And of course, the framework felt so heavy and long-winded. &lt;strong&gt;It, felt, Java.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
In terms of the code structure, Zend Framework is almost the complete opposite of CakePHP - no offense to the CakePHP developers and users, but if you take a look at each framework’s source code, you’ll know what I mean.&lt;/p&gt;
&lt;p&gt;
Having layers and layers of structures might appeal to certain users (Enterprise baby!), but does anyone still remember back in the day, how Zend was announcing/marketing the Zend Framework?&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Extreme simplicity!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
That’s right, Zend Framework was marketed as an extremely simple to use web framework. In fact, we can still &lt;a href=&quot;http://andigutmans.blogspot.com.au/2005/10/zend-framework-post-is-too-long-so.html&quot;&gt;read Andi Gutsmans’ post on this topic&lt;/a&gt;. Let me quote the relevant part (emphasis mine):&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
As some know, our ultimate goal for the framework is what we call “ &lt;strong&gt;Extreme Simplicity&lt;/strong&gt; “. Some might have heard me use that term in some of the talks regarding PHP, and I’d like to bring this concept over to the framework. &lt;strong&gt;I believe this is what the PHP spirit is all about&lt;/strong&gt; and the idea behind it is that it’s possible to create very simple &amp; easy-to-use languages&amp;frameworks which still remain powerful and flexible.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Can anyone, including the Zend Framework developers, honestly say that Zend Framework is an extremely easy to use framework?&lt;/p&gt;
&lt;p&gt;
I guess at the end of the day, in order to market PHP and Zend Framework as ‘enterprise-ready’ with &lt;a href=&quot;http://www.zend.com/services/training/course-catalog/zend-framework&quot;&gt;trainings&lt;/a&gt; and &lt;a href=&quot;http://www.zend.com/services/certification/framework/&quot;&gt;certifications&lt;/a&gt;, something has to give.&lt;/p&gt;
]]&gt;</content>
    <published>2012-03-25T12:09:00.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/zend-framework-from-extreme-simplicity-to-enterprise"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/zend-framework-from-extreme-simplicity-to-enterprise</id>
    <title>Zend Framework - From Extreme Simplicity to Enterprise!</title>
    <updated>2012-03-25T12:09:00.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
Similarly to &lt;a href=&quot;/blog/2010-06-03-rails-releasing-action-throttler-a-rails-plugin/&quot;&gt;Action Throttler for Rails&lt;/a&gt;, &lt;a href=&quot;http://github.com/fredwu/kthrottler&quot;&gt;KThrottler&lt;/a&gt; is an easy to use &lt;a href=&quot;http://kohanaframework.org/&quot;&gt;Kohana&lt;/a&gt; module to quickly throttle application actions based on configurable duration and limit.&lt;/p&gt;
&lt;p&gt;
Go &lt;a href=&quot;http://github.com/fredwu/kthrottler&quot;&gt;check out the code&lt;/a&gt; now! :)&lt;/p&gt;
]]&gt;</content>
    <published>2010-07-28T13:29:00.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/php-releasing-kthrottler-a-kohana-module-for-throttling-actions"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/php-releasing-kthrottler-a-kohana-module-for-throttling-actions</id>
    <title>[PHP] Releasing KThrottler, A Kohana Module for Throttling Actions</title>
    <updated>2010-07-28T13:29:00.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
A few days ago I discovered &lt;a href=&quot;http://www.padrinorb.com/&quot;&gt;Padrino&lt;/a&gt;, an excellent ruby framework built on top of &lt;a href=&quot;http://www.sinatrarb.com/&quot;&gt;Sinatra&lt;/a&gt;. What can be a better than experimenting with it? Build an actual website with it!&lt;/p&gt;
&lt;p&gt;
So last night I ported &lt;a href=&quot;http://wuit.com/&quot;&gt;Wuit.com&lt;/a&gt; from using vanilla PHP + &lt;a href=&quot;http://flourishlib.com/&quot;&gt;Flourish&lt;/a&gt; to using Padrino + &lt;a href=&quot;http://datamapper.org/&quot;&gt;DataMapper&lt;/a&gt; + &lt;a href=&quot;http://haml-lang.com/&quot;&gt;Haml&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
The entire porting experience was positive, albeit the website only has two pages.&lt;/p&gt;
&lt;p&gt;
I did encounter a strange problem with &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt; though - both &lt;code class=&quot;inline&quot;&gt;current_release&lt;/code&gt; and &lt;code class=&quot;inline&quot;&gt;latest_release&lt;/code&gt; were giving me strange results. In the end I had to modify my deployment recipe to overcome this.&lt;/p&gt;
&lt;p&gt;
For building small to medium sized projects, I think Padrino is an excellent choice, as it offers a more complete foundation than Sinatra, and is not as heavy as Rails.&lt;/p&gt;
]]&gt;</content>
    <published>2010-07-01T21:59:28.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/wuit-com-now-runs-on-padrino"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/wuit-com-now-runs-on-padrino</id>
    <title>Wuit.com Now Runs on Padrino</title>
    <updated>2010-07-01T21:59:28.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
&lt;a href=&quot;http://haml-lang.com/&quot;&gt;Haml&lt;/a&gt; and &lt;a href=&quot;http://sass-lang.com/&quot;&gt;Sass&lt;/a&gt; are two extremely useful template engines. They are very popular amongst the Ruby and Rails community.&lt;/p&gt;
&lt;p&gt;
I am happy to release a module for &lt;a href=&quot;http://kohanaframework.org/&quot;&gt;Kohana v3&lt;/a&gt; that uses the &lt;a href=&quot;http://code.google.com/p/phamlp/&quot;&gt;PHamlP library&lt;/a&gt; to offer Haml/Sass support for Kohana.&lt;/p&gt;
&lt;p&gt;
Right now the module only supports Haml but I will be adding Sass support in the very near future.&lt;/p&gt;
&lt;p&gt;
Head over to GitHub to &lt;a href=&quot;http://github.com/fredwu/kohana-phamlp&quot;&gt;check out the source code&lt;/a&gt;. :)&lt;/p&gt;
]]&gt;</content>
    <published>2010-06-27T14:42:52.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/php-releasing-phamlp-module-for-kohana-use-haml-and-sass-with-kohana-3-0"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/php-releasing-phamlp-module-for-kohana-use-haml-and-sass-with-kohana-3-0</id>
    <title>[PHP] Releasing PHamlP Module for Kohana, Use Haml and Sass with Kohana 3.0!</title>
    <updated>2010-06-27T14:42:52.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
The &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Rails&lt;/a&gt; deployment flow is really smooth thanks to the powerful (and easy to use) &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Capistrano not only works with Rails and other Ruby code bases, but also code bases in any programming languages, such as &lt;a href=&quot;http://php.net/&quot;&gt;PHP&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;
Here is an overview of what I did to get one of our PHP production sites up and running with Capistrano.&lt;/p&gt;
&lt;p&gt;
If you don’t already have &lt;a href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/a&gt; and &lt;a href=&quot;http://rubygems.org/&quot;&gt;Rubygems&lt;/a&gt; installed, install them!&lt;/p&gt;
&lt;p&gt;
After you got &lt;code class=&quot;inline&quot;&gt;ruby&lt;/code&gt; and &lt;code class=&quot;inline&quot;&gt;rubygems&lt;/code&gt;, install Capistrano and its related gems -&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;shell language-shell&quot;&gt;gem install capistrano-ext railsless-deploy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Now, navigate to your application’s directory and run &lt;code class=&quot;inline&quot;&gt;capify .&lt;/code&gt;, this will generate some necessary files for Capistrano to recognise your app.&lt;/p&gt;
&lt;p&gt;
Open up the generated &lt;code class=&quot;inline&quot;&gt;Capfile&lt;/code&gt; file and replace the content of the file with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;ruby language-ruby&quot;&gt;require &apos;rubygems&apos;
require &apos;railsless-deploy&apos;
load &apos;config/deploy&apos;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Okay, now we need to set up the actual deployment recipe in the &lt;code class=&quot;inline&quot;&gt;config/deploy.rb&lt;/code&gt; file. But before doing so, we need to set up our deployment server with proper user and deployment permission.&lt;/p&gt;
&lt;p&gt;
We chose to set up a new user called &lt;code class=&quot;inline&quot;&gt;deploy&lt;/code&gt; specifically for deployment purpose, for example -&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;shell language-shell&quot;&gt;useradd deploy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Then of course, we need the SSH keys for this deployment user, so switch to this user (&lt;code class=&quot;inline&quot;&gt;su deploy&lt;/code&gt;) and -&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;shell language-shell&quot;&gt;ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
We use &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt;, so simply copy the content of the public key (&lt;code class=&quot;inline&quot;&gt;~/.ssh/id_rsa.pub&lt;/code&gt;) and add it to the deploy keys section of the Github repository.&lt;/p&gt;
&lt;p&gt;
Don’t forget to also add GitHub to the &lt;code class=&quot;inline&quot;&gt;.ssh/known_hosts&lt;/code&gt; file, you can do this by manually cloning your repository on the deployment server.&lt;/p&gt;
&lt;p&gt;
Great! Now let’s do the last step - create the actual deployment recipe!&lt;/p&gt;
&lt;p&gt;
Open up &lt;code class=&quot;inline&quot;&gt;config/deploy.rb&lt;/code&gt; file and you will see some default deployment tasks. Everyone has different needs, so I’m going to paste our &lt;code class=&quot;inline&quot;&gt;deploy.rb&lt;/code&gt; file (masked with added comments) for your reference.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;ruby language-ruby&quot;&gt;set :user, &quot;deploy&quot;
set :application, &quot;YOUR_APPLICATION_NAME&quot;
set :domain, &quot;YOUR_APPLICATION_DOMAIN_NAME&quot;
set :repository, &quot;THE_ADDRESS_OF_THE_APPLICATION_REPOSITORY&quot;
set :deploy_to, &quot;/var/www/#{domain}&quot;
set :shared_path, &quot;#{deploy_to}/shared&quot;
set :use_sudo, false

set :scm, :git
set :branch, &apos;master&apos;
set :deploy_via, :remote_cache

role :web, &quot;ADDRESS_OF_YOUR_WEB_SERVER&quot;
role :app, &quot;ADDRESS_OF_YOUR_APP_SERVER&quot; # this can be the same as the web server
role :db, &quot;ADDRESS_OF_YOUR_DB_SERVER&quot;, :primary =&gt; true # this can be the same as the web server

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles =&gt; :app, :except =&gt; { :no_release =&gt; true } do
  run &quot;#{try_sudo} /etc/init.d/lsws reload&quot; # we use LiteSpeed Web Server
  end
end

# The task below serves the purpose of creating symlinks for asset files.
# Large asset files like user uploaded contents and images should not be checked into the repository anyway, so you should move them to a shared location.

task :create_symlinks, :roles =&gt; :web do
  run &quot;ln -s #{shared_path}/uploads #{current_release}/uploads&quot;
  run &quot;ln -s #{shared_path}/zb #{current_release}/zb&quot;
end

# Let&apos;s run the task immediately after the deployment is finalised.

after &quot;deploy:finalize_update&quot;, :create_symlinks&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
That’s it! Now you should be able to deploy your application by -&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;shell language-shell&quot;&gt;cap deploy:setup
cap deploy&lt;/code&gt;&lt;/pre&gt;
]]&gt;</content>
    <published>2010-06-21T04:45:00.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/deploy-php-websites-using-capistrano-and-git"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/deploy-php-websites-using-capistrano-and-git</id>
    <title>Deploy PHP Websites Using Capistrano (and Git)</title>
    <updated>2010-06-21T04:45:00.000000Z</updated>
  </entry>
</feed>