Technical Ideology

Grassroots Technologies' adopted a simple, efficient software and infrastructure development philosophy early in its growth. The main precepts surround combining industry standard technology packages supplemented with cutting edge open source options for maximum reuse/value while maintaining a lean implementation approach that can change alongside project conditions.

1. Established Technologies

As researched by our group, specific technologies deemed to be the best of their genre over time. This is not limited to purely commercial software, nor does it exclude the combination of two technologies to form a new, workable model.

2. Efficient Integration and Adaptation of Open Source Offerings

We constantly emphasize the value of open source packages strategically integrated within established architecture.

3. Light Implementation Strategy

Simple, risk hedged iterative approach to development which allows us to launch development efforts quickly and economically meeting both the client's business objectives and performing effective client knowledge transfer.

Development Philosophy

 

Whether implementing a new project or analyzing the value of one already completed, we firmly believe in a tight, slim strategy that eliminates excess waste and focuses on the most important facts at hand.

GRT strongly believes in active development prototyping and iterative checkpoints as a core element of specification activity.  This can often provide the most efficient segue into full-blown development cycles while still providing regular reviews and confidence by all key stakeholders.

We are enthusiastic proponents of streamlining the development process through consistent automation, and a continuous integration process, where sub-projects are forced to integrate on a weekly or even daily basis. This ensures the different aspects of development integrate together before they've had a chance to get unwieldy and costly. 

Obviously, source control, for versioning and code management, is at the heart of the development process.  Typically we use Github (or customers preferred revision control system) and enforce its usage through rigorous development standards.

We begin to set our testing strategy at the early stages of system design.  This planning turns into execution towards the latter stages of development.  A cleanly defined automated unit testing, where possible and budget practical, is also well worth the setup and maintenance effort. Beyond that, a combination of functional and compatibility review will be joined with automated stress/scalability testing for maximum system coverage.

This provides just a flavor of our no-nonsense, efficient manner for tackling even the most challenging of projects.  Our methods for approaching projects from the top down in light implementation strategy, weighting functional areas against one another within overall timelines, and executing aggressively are a result of years of absorbing only the best practices from each client experience.

Languages

  • Javascript / Node.js

  • Java

  • Ruby / Rails

  • Objective-C

  • Typescript

  • PHP

  • Perl

  • Actionscript

  • Groovy

  • Python

  • C++ / C

Operating Systems

  • Linux (various flavors)

  • Windows Server

  • Mac OSX

Front-End

  • AngularJS

  • Backbone.js

  • Ember.js

  • PhoneGap

  • jQuery

  • D3.js

  • ReactJS

  • Adobe Flash / Flex

  • Objective-C / Cocoa Touch

  • Java AWT and Swing

Cloud / Hosting Services

  • AWS

  • Heroku

  • Codeship

Database Technologies

  • PostgreSQL

  • MySQL

  • MongoDB

  • CouchDB

  • Oracle

  • SQLServer

Installer Technology

  • Windows Installer (Wix/MSI)

  • OSX Packages and Installer Plugins

  • InstallAnywhere

XML Technologies

  • XSLT

  • XSL-FO (PDF generation)

  • SVG

  • SOAP and other remote data-interchange

Testing

  • BJasmine

  • Karma

  • Mocha

  • Protractor