During my coop work term at Polar Mobile I got the chance to use some impressive technologies and frameworks that make development not only easier but also fun. This was one of the best things about my coop term this semester and is one of the things that I brag about most often. It certainly opened my eyes to the fact that there is not one specific tool that fits every job. I thought it would be beneficial and useful to outline some of them below that I got a chance to become familiar with.

Python

When I arrived at Polar Mobile, my python skills were sub-par to say the least. I knew the generic structure of the language from a single assignment at school but it was evident that we barely scratched the surface. Python is a programming language that boasts allowing its developers to work more quickly and build systems effectively, and this is something that I really wanted to enhance while at Polar. Having worked with it for the past 4 months, I can absolutely vouch for this. Python is very pluggable and encourages modular design and as such I am using it frequently in any personal projects that I see fit.

Django

Django

Django is a framework built on top of python that allows one to create clean, solid web applications in a rapid fashion. Having built web applications before, I was well aware of many of the pain points for developers. Settings up database connections and building generic forms and templates is quite simply something that no one really wants to spend time on. Django gets rid of this by allowing the develop to focus on the core components of the application rather than the tedious ones. I found that after I was introduced to Django, I started to enjoy developing web applications again. In fact, this entire new coop portfolio website is built with Django.

Redis

Redis

Redis is a popular No-SQL database that Polar Mobile uses. It is an open source and advanced key-value store that can house strings, lists, sets, hashes etc. In doing my research, I was surprised to hear the kind of performance gains associated with using Redis. One interesting project that I used Redis for was when I was writing a feature that integrated with SVN to import and subsequently export a repository using a button click in a web application. Redis was used as the intermediate job queue in conjunction with the next technology to handle the job code.

Resque

Resque is a background job system developed by GitHub that is based on Redis. It allows the developer to turn existing Ruby classes into job code that can be placed on different queues and executed later. For my project, I actaully used a clone of Resque for python which is called Pyres. As an organization, Polar Mobile has contributed a lot to the open source Pyres project as they have used and improved it in a variety of projects. Pyres was an excellent solution that I used to combat issues of page response time taking too long while performing heavy tasks (such as dispatching daily notification e-mails).

Git

Githublogo

I was familiar with verison control prior to working at Polar Mobile having used SVN at school and CVS at my previous work placement. However, I never really took to either of those solutions and always found that it was more of a pain to commit my code. Git seemed to solve the issues that I had before. I am now a big advocate of Git and the Git-Flow branching structure that Polar Mobile uses and as such I am using Git for my personal projects including this coop portfolio. Polar Mobile also uses GitHub Enterprise which makes code collaboration and review a breeze.

Buildout

Buildout is an extremely handy system for creating, assembling and deploying applications. Essentially, one can write these "recipes" that will grab an assortment of dependencies and components required for a given project. This is at the basis of every software project that Polar Mobile creates and allows anyone in nearly any environment to grab a project from source control and get it up and running locally very quickly. One of my first real projects was to package up projects using this methodology and the merit was immediately apparent.

Hadoop

Hadoop

During my Summer 2012 work term, I got a chance to play with Hadoop. Hadoop is an open-source software library that allows one to process large data sets using any number of clusters of computers. The real beauty of Hadoop is that it is 100% horizontally scalable in that as the data sets that are being processed become larger, it is incredibly easy to add more processing power. All of Polar Mobile’s analytics data is processed using Hadoop so it came into play in more than one of my projects. Getting a chance to use awesome technologies like this is one of the reasons that Polar is such a great place to work.

Clojure

Clojure

Clojure is a dynamic programming language and an offshoot of Lisp. Learning Clojure was an entirely new experience for me. The paradigms of the language are vastly different from any that I was used to previously. It is actually a compiled language and compiles down to Java bytecode. Due to this feature, all Java frameworks are easily accessible which makes adoption that much easier. Though I only got to use Clojure for one project, I plan to continue to learn about everything that it has to offer.

CoffeeScript

Coffeescript

I had the opportunity to use CoffeeScript in a variety of front-end projects at Polar Mobile. CoffeeScript is simply a language that attempts to abstract some of the nastiness of JavaScript away. It actually compiles down to JavaScript with no interpretation at runtime. I had heard of CoffeeScript prior to my term and had attempted to use it but for the amount of JavaScript that I was writing at the time it never really seemed to be worth it. As I was working on bigger projects at Polar Mobile I started to see the appeal. It certainly does feel cleaner than writing straight JS and coming from Python it did feel right. Debugging with CoffeeScript is a little challenging but ultimately I feel as though its strengths do outweigh its weaknesses.