Skip to main content

Blog Posts

I write about software engineering technical articles around programming, best practises and trending tech stacks. Subscribe to my newsletter to make sure you don't miss anything.

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.
Bootstrapping a tech start up with limited financial resources is always a difficult task in hand. You have to find the right balance between the cost and the benefit of the money spent. As a new entrepreneur if you could get some great software for the price of 0 that would really expedite the tech related company bootstrapping process.

Introduction

In this context lets discuss about some free software that will really help you get some amazing benefits. I would like to keep this post as programming language agnostic as possible. Subsequently, I believe though you don't need to pay for the software a good web host will be necessary that provides shell and software installation access (like Amazon AWS or Linode) to install the software mentioned later in this post.

This post is going to cover software/SAAS for Project Management , group chat and notification, source code collaboration with version control (git), deployment automation and error/log monitoring of the deployed application.

More posts can be found in the archive.

Latest Posts

Side Projects

Read more on

Join the Newsletter

Receive exclusive content and links about software engineering and web development every month.

    We hate spam as much as you do. Unsubscribe at any time.