The Advisory Board Engineering Blog

Integrating NodeJS with a .NET project

June 1, 2014

This article describes how to integrate a fully functional Node.js environment that requires no global dependencies in a Windows .NET environment with a package we have developed. Before we go through that process, you might be asking the following question:

Read more »

Improving development productivity with Grails and KnockoutJS

May 22, 2014

Recently, one of our product development teams started work on a new project using Grails and KnockoutJS.  

The same team had previously been working in more traditional enterprise-Java frameworks: Java EE 6 with JSF (PrimeFaces) and Spring MVC. Although not as clunky as the XML-heavy frameworks that preceded them (Struts, Spring 2.x, etc.), Spring MVC and JSF were still not optimal for iterating rapidly in an agile development team.

Our team faced a number of daily productivity obstacles:

  • Slow container restart times for testing changes
  • Multiple layers of indirection on the server—even the simplest page required touching a controller, a DAO, and an EntityManager
  • Unmaintainable jQuery spaghetti code on the client side

With challenges on both the client and server side, our team could have addressed either one individually. Instead, we decided to tackle both at the same time, which led to more consistent and manageable code.

Read more »

Using abstract classes as controller parameters in ASP.NET MVC4

May 9, 2014

Stephen Czetty

As a part of the API for the product I work on, we need to allow the UI to send us a parcel of data, and we need to process it differently based solely on a single parameter in the data.

To deal with this issue, my team decided to create an abstract model class, but MVC's DefaultModelBinder doesn't work out-of-the-box on abstract classes (or interfaces). We solved this problem by creating a new ModelBinder class that has more knowledge of the internals of your application than the default does.

After thinking this through, I decided to play around with the process and see what I could find.

Read more »

Tips and techniques for database testing

October 14, 2013

Peter Stephens

Testing database logic can be a bit of an art. When writing good functional tests, each type of logic tends to have its own set of nuances and complications.

Here are a few techniques for writing automated tests against a database.

Read more »

Unit test coverage drives code improvement

September 4, 2013

Bill Schneider

Unit test coverage is not a panacea. The Cobertura report in your continuous integration server may look great, but the tests themselves aren't that useful unless they have meaningful assertions about outputs or business logic. Or are they?

Read more »

The challenge? Develop anything. Demonstrate it within 24 hours.

July 22, 2013

Bob Leonard

In our last post, we mentioned the beginning of the Advisory Board’s annual “Hack-A-Thon,” a 24-hour event where we challenged our developers to team up and code something—anything—and demonstrate it as soon as time ran out. We started at 11 a.m. and finished the following day at 11 a.m., with presentations lasting until 3 p.m.

Because after all, what developer doesn’t love the freedom of choice and thrill of competition? 

Read more »

How we put our coding skills to work for Community Impact

July 3, 2013

Hardik Patel

We have a proud history of community service here at the Advisory Board, and last year, my team was tapped to help build an online portal to organize these efforts (known as our Community Impact program).

The idea was born out of our first annual "Hack-A-Thon," and many of the key features were added during subsequent Hack-A-Thon events. Inspired, we built the portal by utilizing an open source php-based CMS as a central portal for internal collaboration and social networking. Our team learned php, along with a few other web technologies, and had a ton of fun building other unique features we knew the Community Impact team wanted.

Read more »

Game Day: A day in the life of our users

June 14, 2013

Beth Lowicki

As a product development team, we work within our domains on a daily basis. As a cohesive unit, we work collaboratively to gray the lines between product and delivery, engineering and testing.

Yet, sometimes we get so focused on the work we are doing, we forget to really take a look at the product as a whole. 

Read more »