Skip to main content

Tools We Use at RESAAS

If you're ever wondering what we use for tools at RESAAS, I've taken the time to write about the different tools we use for specific parts of our engineering initiatives. This includes automation, project management, and feature development across different operating systems and platforms.

Feature Development on Web


Visual Studio 2010 Professional - This can be downloaded through MSDN. Additionally, since our whole platform is built on Windows Azure, we use the Azure .NET SDK to integrate with many of Microsoft's cloud services, such as, Blob, Tables, Queues, Service Bus, SQL Azure, and Traffic Manager.

Sublime Text 2 - A free text editor that has interoperable plugins with Text Mate. It also works flawlessly across Windows and Mac OS X.

SASS (Compass) - A easy-to-use language on top of CSS which gives developers the ability to create reusable mixins, css variables, as well as, auto concatenation and minification.

Mojo - A JavaScript microframework that lets developers leverage dependency injection, aspect-oriented programming, and implementation silos. Additionally, since we have several different web services in our API, Mojo ships with a Service Locator to make it easy on integration. Furthermore, Mojo is built on top of jQuery so you can easily leverage 3rd party plugins.

Feature Development on Mobile


Xcode 4 - Apple's IDE for any iOS development.

Eclipse for Android Development - Necessary for any Android development.

Visual Studio 2010 - Necessary for any Windows Phone development.

Weinre - An easy way of debugging mobile-specific layout using WebKit inspector. An awesome project and drastically decreases the time an engineer spends on debugging.

Automation and Testing


Jenkins Continuous Integration Server - Since we've engineered a fully automated continuous deployment pipeline, we make Jenkins do all the heavy lifting. From pulling down latest in the tree, running our C# unit tests, running Selenium UI tests, as well as, deploying between different environments -- Jenkins is core to our principles in maintaining a test-driven engineering culture.

Selenium UI - End-To-End UI testing using the C# SDK for Selenium UI. These tests can take a while to run especially when you have several core use cases to write tests against.

CasperJS - We're always about productivity and ensuring that the quality of the software being delivered to our customers are shipped with the least amount of bugs as possible -- this is why we've heavily invested in going headless for end-to-end testing. CasperJS is an extremely fast tool for writing JavaScript-based specifications (describing behaviours) and have that pipe through MSTest.

.NET HTTP Client  - Our API endpoints are the backbone of our platform. Adding to that, we've invested heavily in server layer tests that use the .NET HTTP Client library. We specifically output JSON so we end up having to test passing parameters through HTTP POST/GET requests and assert the results.

Chutzpah - A Visual Studio extension that lets you write JavaScript unit tests in either QUnit or Jasmine BDD. This is by far one of the best testing tools for any front-end developer on a .NET stack. Under the hood, it runs all your tests through PhantomJS and streams the results to console. I've heard some great things about ReSharper, so you can probably check that out too.

Project Management and Source Control


Atlassian OnDemand (JIRA + Confluence + Tempo + FishEye + Crucible) - Atlassian provides an amazing suite of software development tools. We're particularly fond of the Task Board (swim lanes) in JIRA.

Subversion - We're currently on our way transitioning into using Git. Stay tuned!

GitHub (hackathons, open source, contracting out work) - GitHub is an extremely popular developer social network that provides a platform to easily collaborate on projects using Git.

Post a Comment

Popular posts from this blog

TextMate Tutorial: How to add a Strikethrough keybind to your Markdown bundle

Markdown is awesome for quickly generating Readme's on Github. After looking at other projects using the strike tag, I've decided to create a custom keybind for it in my TextMate Markdown bundle. Here's how:

1) Click the + sign on the bottom left and click New Command.
2) Paste this into the editbox and make sure you name your command "Strikethrough".

For the input field, select WORD in the drop down.
For the output field, select "insert as snippet".
As for the keybind, you can totally map it to whatever you're comfortable with but I chose Command-D as it is the same thing in Microsoft Word.

Cheers,
Jaime

World of Warcraft Ninjalist addon: version 0.1 coming along quite nicely

After toying around with more GUI related issues in World of Warcraft's API, I've decided to take a totally different direction. Originally when I architected this addon, I knew in my mind it would be a super simple Console application that a user could easily paste in a name and add it to the database; however, why stop there?

After discovering AceGUI, I can easily start developing UI components in no time! As of right now, I've got it saving data in between game sessions--the interesting part will come when I'll have to develop the web service that will parse the SavedVariable.lua, eliminate duplicate entries, as well as, do a huge merge between their copy and whats on the server's (per realm basis of course).

Here's a screen shot of the responses when adding new Ninjas to your list:
When a user clicks add after entering a name in the textbox, it'll go ahead and add that person to the ninjalist tagging the user's realm and current date/time. Someday, I…

Using Git Hooks: Prepare Commit Message to automatically prepend branch names on commit messages

When you're practicing branch by feature with distributed version control, typically you'll get assigned a ticket or issue and that ends up being your feature branch. Instead of always typing in the branch name in every commit, you can edit your Git hooks (specifically prepare-commit-msg).

Assuming that this is a brand new git repository:

mv .git/hooks/prepare-commit-msg.sample .git/hooks/prepare-commit-msg
vi .git/hooks/prepare-commit-msg

Edit the file by commenting out what was originally in the file and then add this:



Now, whenever you make a commit, it should show up like this in the log:



Since GitHub and Bitbucket both support Emojis inside commit messages, you can do something cute like this



Want more emojis? check out the Emoji Mardown Cheatsheet!