I am writing code for last 8+ years. It is important for me to write code for which I feel proud. I start by writing tests that fail, then I write code to make the test pass and lastly I refactor the code to improve it – to taste the sweetness of quality code.
I mostly use Ruby and PHP to talk with my machine, however sometimes Java and Scala also helps me communicate my desires. I have a few storage partners to couple with them - mainly MongoDB and MySQL/MariaDB. And just to make sure they do not get angry on high requests, I ask for help from Memcached and Redis.
Sometimes I need to find stuff but my storage and cache partners don’t like to get bothered. So at those times I depend on my friend Elasticsearch. He is extremely efficient and allows me to do all sorts of queries including full text, anagram analysis, scoring, faceting, filtering, stemming and percolating – a true gentlemen I’d say.
These days more and more applications on the web provide rich UI and UX for the end user, leveraging the single-page application paradigm. I have infected myself with that as well and am able to develop such applications efficiently using frameworks AngularJS and BackboneJS – my favorite is AngularJS though.
While I develop applications, I sometime need to develop application that is accessible from multiple types of clients – regular computers, smartphones, kiosks, etc. In those situations, I opt in for Service Oriented Architecture (SOA) – where I separate different layers of the application so that most reusability can happen (ex: Service Layer, Storage layer, Web Layer, Worker Layer etc.). Sometimes the Service Layer is internal only and sometimes it is exposed to the public as well.
So, where do I keep all my buddies to play together nicely? I use AWS – with a couple of configuration and setup scripts, I am able to deploy a full-scale, high availability, multi-region infrastructure. I am proficient in using AWS’s following services: EC2, S3, ELB, ElasticCache, RDS.
Lastly, after all is done and traffic growth is high, the point of scaling comes into play. I apply both the horizontal scaling and Vertical scaling as necessary; I balance the traffic load using ELB and HAProxy I use Varnish as frontline reverse proxy and keep the web servers only for requests that need to pass through; I distribute heavy processing tasks using message queues to different processing units using Gearman, Resque, and Sidekiq; and I also apply frontend optimization techniques to ensure end users enjoy a breezy experience (I use Google’s PageSpeed and Yahoo’s Yslow directives).
In the meantime I am learning some new things like functional programing, nodejs, akka etc. And I love to learn new things.
So you can hire me as a senior software engineer or as a Team Leader or as a Technical Consultant or invite me for a coffee to discuss ☺