I am always curious what technologies companies are using and the reason behind choosing those technologies – just can’t help it but googling for hours until I reach to a satisfactory answer. I always thought Facebook just uses PHP, but when I stumbled upon this slide-deck, I understood other technologies that work along with PHP and let us stay connected with friends 24×7.
I am sure, there are other curious minds out there too. Like you. Yes, you are one of them, that’s why you are reading this post. Whenever, we see some cool application working, our first intuition is to get to know what’s running under the hood. As a web developer, my first action is to open developer tools whenever I see any such thing.
So, today, I am officially listing out the technology stack we are using for Gaurilla. Besides quenching curiosity, it will also serve as a guide to people willing to work at Owlgrin to evaluate themselves.
Most part of the application is written in PHP. I know it is the most hated language in the industry because of the inconsistency in it.
For example: “to” versus 2: ascii2ebcdic, bin2hex, deg2rad, strtolower, strtotime
Just google “php sucks” and you’ll know what I am saying. But at the same time, everyone knows working in PHP. Or, most of them. It is super-easy to get started with PHP. And sometimes, this super-easiness made people to use it in the wrong way. It is so easy to use the language that people mostly use it wrong way. By ‘wrong’, I mean mixing HTML with PHP.
But still, you can quickly find people who’ve experience working in the language and it becomes easy to make them quickly pick up on a project. Also, the steady improvement in the language made it better. Version 5.3 introduced some amazing features like closures and namespaces while version 5.4 introduced traits and shorter array syntax.
Modern PHP is not HTML and PHP logic mixed together into a pile of “code” (please note the sarcasm) that smells.
Backend Framework: Laravel
“If you are not using any framework, you’ll eventually end up creating one.”
Yes, we could write everything from scratch but why reinvent wheel? Laravel is the awesomest framework I have used. Created by Taylor Otwell, this framework not only lets you get things done quickly, but it makes you use the best practices, making you a better developer overall (I, personally, never knew about Dependency Injection before Laravel). With laravel, you can’t write a smelly code (as easily as plain old PHP!).
Laravel is just a collection of composer packages and there are thousands other available on Packagist. Composer to PHP is what cheat codes are to games. You want something? Before building it, just search a package and there are high chances you’ll find one.
There’s no reason to not use Laravel.
We use MySQL, a lot, for the same reason that it is easy to find people knowing MySQL. But thanks to Laravel, that we are not stuck with this choice. Once we will feel that there’s some better choice out there, we can simply change Laravel’s config and voila!
Frontend Framework: AngularJS
We have built Gaurilla as a API driven app. Backend serves as a stateless API and the front-end app is the one which handles all the logic of managing state and communicating with the API.
We wanted the experience of user to be first-class. He should get best feedback for his action in the interface and AngularJS made it quite simple for us with it’s two-way data binding.
It was a tough choice to choose between EmberJS and AngularJS, but due to poor reputation of Ember at that particular time, we chose to bet on Angular and I guess, we are happy to use it. Angular also keeps different parts of the app decoupled and uses the concept of Dependency Injection (just like Laravel). This one thing was the key-deciding factor. (Sorry Ember!)
However, finding Angular developers was the task that went in vain, and we ourselves had to invest time and resources to learn this framework. But now, when we are done, we are happy that we did.
Although these are the major tools that we are using, there are other small pieces which acts as glue and fills out the gap. We are using other tools like Memcached for caching, Amazon’s Web Services for hosting and queuing, Mandrill for sending emails among others.
Using these amazing technologies, we were able to build Gaurilla quickly and intelligently. These also helped us in keeping the project very loosely coupled, so, scaling and managing won’t be a problem. Ever!
With great powers, comes great responsibilities.
If you are someone who is thinking of building a huge app, and decided to choose some great tools, I would like to remind you just one thing, “With great powers, comes great responsibilities.”
I hope, you enjoyed peeking under the
hood cape of Gaurilla. If you want to work on these amazing technologies with us, we are always hiring! Simply shoot us an email at careers[at]owlgrin[dot]com telling how you can add value to the company and let’s get talking.