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.


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.


Plenty of Fish - Lessons Learned Meetup

Today, I had the fantastic opportunity of going to a retrospective by Plenty of Fish. As you may know, Plenty of Fish is the largest online dating site and it was all started by a local BCIT graduate named Markus Frind.

Below are notes that were taken on my iPhone. I do apologize as I am continually editing this blogpost.

What is Plenty of Fish? An online dating site.
Why enter the dating market? Back in 2003, it was the only thing that was interesting to build. Markus already knew ASP but wanted to learn more about building web applications with ASP.NET and improve his skills on his resume. 
How do you deal with the network effects problem? In the early days, Plenty of Fish gained traction through Vancouver and Toronto.  There wasn't any silver bullet or magic around it -- Plenty of Fish heavily relied on organic user growth and SEO. The focus was to retain users more than go out and acquire new ones.
What are some early challenges you faced? Markus actually ended up doing every…

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…