Rewriting FoodScaper

FoodScaper is Social Networking website dedicated for restaurant and food enthusiasts.

After a couple of months of developing our website, we launched FoodScaper. FoodScaper launched due to our need to discover restaurants and menus in greater Manila.

I have been a Ruby on Rails developer for more than 2 years now. Most projects I have worked with was coded in Ruby on Rails 2.3 to  3.x. I code PHP on the side and sometimes if there is a need for a PHP developer, I was the one called upon to handle the project.

I have chosen to rewrite most of FoodScaper from Ruby on Rails to PHP.

PHP is a good language. I would be first to admit that are there a lot of downs in the PHP language. The thing is that it does the job fine. This can be said for most languages.

While I coding FoodScaper, I have missed a lot of testing tools from the Ruby community:
  • RSpec
  • Cucumber
  • Capybara
To my knowledge, PHPUnit is the best testing tool in the PHP community and I feel there is an immediate need to have more just unit testing here.

However, the cost of deploying a Ruby on Rails website is really what got me rewriting FoodScaper to PHP. As of now, an instance from Webbynode or Linode with an allotted 500MB memory costs around 20USD per month. My host right now could handle FoodScaper and a few more websites without running out of memory.

In the end it was cost. I know about the phrase, "Developers are more expensive than hardware". The thing is, right now, I am both the developer and the one paying. 

I believe FoodScaper is going to be a great website and having a good language (not the best) by my side is the best option for me. I’m going to try really hard to make it successful, and I felt in order to do that I need to at least sustain it and pipeline costs to marketing.

 Exploring Microframeworks

I have been recently playing with the microframeworks, Silex and Slim, the full stack framework, CakePHP and the relatively cool framework that is Yii for several projects. I admit that exploring these frameworks, especially Silex and Slim, have been awesome experiences and I intend to learn these frameworks to grow my skills.

My frameworks of choice have always been either Kohana which I have worked since version 2.3.4 to 3.0 and CodeIgniter from versions 1.6.1 to 2.1.3. I have used CakePHP and Yii for some projects but I never really grasped the ideas behind CakePHP until I now. Yii, just like CakePHP is a full stack framework but is much easier to learn than CakePHP. This is probably is the real reason(not because CakePHP is slow) why Yii is being advocated by a lot of PHP developers today.

Silex

Silex is a microframework that I have reading and learning about in the last few days. My first impression was that Silex is nothing more than a routing framework and glue framework. With Silex you will decide how to structure your application. While you may find some Silex applications with the same structure, there will be just be a few as compared to applications built with CakePHP, CodeIgniter, Yii and the others which enforces / favors structure and convention.

Slim

Along with Silex, I have been using Slim, a micro framework developed by Josh Lockhart. So far, I have been liking this better than Silex. The two microframeworks have almost the same concepts. The following reason are why I like Slim better:

Silex also doesn't have a way to render php files out of the box. You would need to create your Output Control implementation to do this or use Twig, which is very much supported by Silex. In my case, I like flexibility. I need not learn another templating engine to use Slim. With Slim, you can use Twig or any templating engine you want but also use plain old PHP files as view files.

Silex makes heavy use of Symfony Components. Silex could get complex pretty quickly.

Take note that Silex's heavy use of Symfony components is not a bad thing. With Silex, you won't be scouring the internet for how to integrate Twig, Swiftmailer, Form Validation and many others. Symfony components can easily be integrated to Symfony which makes it a more `complete` framework than Slim.

As I finish typing, I just deployed the Slim framework version of my application.