Last week when I was in Kathmandu, Nepal I did a talk at Prime College, the college where I did my bachelor (undergraduate) and my Plus 2. The talk was about "Things I wished I knew while doing my bachelor / undergraduate".


This talk was about how to use your bachelor to craft your tech career. I started with what I have done and some examples of where my friends have reached. Then I focused on things to consider for selecting and doing projects for technical subjects in bachelor study.
Exactly a week ago, I was in Kathmandu, Nepal my hometown where I attended the 12th edition of PHP Developers Meetup organized by PHP Developers Nepal at Leapfrog Technology, Hattiban, Lalitpur.


The talk on Message Queue (Rabbit MQ and Symfony 2)

Not only did I attend the event I also presented a talk on "Message Queues - A basic overview" where I talk about how we are using Rabbit Mq at Namshi. There was no code examples, it was a plain experience sharing of how we use Rabbit Mq with Symfony 2 with the RabbitMq Budle. There was a good overview of how and where we use Rabbit Mq for scalability and reliability.
What is common between Google, Facebook, Microsoft, Twitter and Linked in? If you are looking for the answer its Git the Distributed Version Control System (DVCS) that has simplified software revision control. Its major features are speed and performance combined with ease of use provided you know the basic git concepts.

If you are new to git you should read some getting started tutorials or if you have used SVN you should read migrating to git. For the audience of this post, I assume that you are already using git for some time and are familiar with concepts like commit, push a branch, pull changes from remote repository, merging a branch to "master" and similar daily things that git users normally do.

Git is a lot more popular than SVN or Mercurial. If you take check Google trends in the past 5 years (July 2009 - July 2014) in Internet and Telecom category, git it twice or move as popular as the other two:

"I found out that you guys just build an amazing mobile app for your e-commerce venture, I heard you are using Symfony 2 for your back-end APIs. How did you make it that fast?" This is not very different that what I was asked some months back. The answer is we use a Service Oriented Architecture (SOA) where all back-end service follow the REST architecture to communicate with all the clients. The client can be built in any language as longs a they can do HTTP calls. Lets look at what Symfony 2 bundles you can use to build a similar scalable, fast and cacheable REST APIs.

I assume that you have some experience with Symfony 2 including how to use composer to download dependent libraries/bundles.

What is REST

REST, short form for Representational state transfer is a resource based client and server communication protocol which is stateless and cacheable. It is an abstraction over HTTP communication where emphasis is given on uniform interface to make the communication structured and consistent. This video describes the constraints of REST and explains what it is or read a simpler one.
A software engineer tells to a colleague in his team "Man, it is working on your machine, but why is it not working on mine?", then they both find out that one has Ubuntu 12.04 LTS with PHP 5.3 and the other software engineer on which the code is working is Ubuntu 14.04 with PHP 5.5 after some investigation. If you have ever faced this or similar problem its high time to switch to a portable and a reproducible virtual development environment shared among all team members. This is a context where Vagrant comes into play.


If you have stack that involves many applications like PHP, Nginx, PHP-Fpm, Mysql, Rabbit MQ, Redis etc then making sure your team (even a small one with 3-4 members) have the same version for all above software will surely be a pain you don't want to take care of.
This post is going to be developer's perspective on using Vagrant as a virtualized development environment with minimal mention and coverage of the devOps and system side of Vagrant.

More posts can be found in the archive.

Stay Connected

Follow me on LinkedIn for new posts, engineering insights, and tech takes — straight from the trenches.

Follow on LinkedIn  →