Viacom/MTV Networks, 2009 - 2015

ARC-CMS is a tool at the very heart of Viacom/MTV Networks digital media presence on the web, mobile devices and video-on-demand. It is a Content Management System that handles tens of millions of digital media assets, including the vast majority of video from our TV shows and other sources, as well as articles, images, audio, games and associated metadata. ARC-CMS drives thousands of web sites, viewed daily by hundreds of millions of users. The Daily Show, SpongeBob, old Ren and Stimpy, lots and lots of music videos back to "Video Killed the Radio Star", it's all in there.

As lead developer and architect on front-end applications for ARC-CMS I ceate tools used across the enterprise by domestic and international producers, editors, and content creators, as well as by internal automated systems to create, digitize and manage the content that comprises Viacom/MTVN intellectually property -- and the company's value proposition in the digital world. The front end was built in Flex AS3, Javascript and associated technologies. In addition to core software development, system architecture, and API design, I lead the engineering effort for the build, deploy and release of the application, as well as automated testing. I also collaborate with stakeholders across business units, and establish and maintain best practices among the development team.

Over the course of development ARC-CMS underwent several major changes in scope and function. It began interfacing with a custom in-house site-construction tool, was later expanded to interface against a generic content database API, altered again to support a mongoDB-driven backend, and once more to support a SOLR search endpoint. During that time all the major Viacom/MTVN business units and brands, including Music (MTV, VH1, CMT, etc.), Entertainment (Spike!, etc.), Kids and Family (Nickelodeon, Nick Jr., Teen Nick, Nick at Nite, Nick Mom, etc.), Logo, and International (with a presence in over 140 countries on six continents) were onboarded. Each brand and business unit had unique requirements that drove the feature set of the application.

Major features include:

  • content creation and editing
  • associating content records with media assets
  • user, group and role management, authentication and security
  • namespace management, including sharing content across namespaces
  • ophisticated search functionality
  • multiple wizards and workflows for complex content authoring scenarios, and a wizard architecture
  • localization and internationalization, including language- and region-specific renditions and media
  • content publishing, including view by Publish Stage
  • sophisticated tree views and algorithms for inclusion/exclusion of related content records
  • scheduling and windowing, i.e. controlling availability of media across region, date/time and platform
  • integration with Viacom/MTVN video players, ads and reporting and other systems
  • automatic encoding and record generation for video assets
  • computational generation of metadata
  • export and import of records to/from other systems
  • focus on usability and streamlined user experience

  • Work on the Flex application was completed in 2015. Meanwhile my initiative to replace the Flex front-end with a thin, responsive client gained sufficient traction in 2013. We chose HTML5 and the AngularJS framework, along with a technology stack that includes Json, CSS, Less, Gulp, Grunt, Lint, Karma, Protractor and GIT. We also changed to a model of continuous integration and continous deployment. The thin front-end was coupled with a middle-tier built in Scala that handled transactions with the backend/DB layer and drastically streamlined the API between the middle tier and the user-facing client. I was deeply involved in all aspects of the design and development of the third-generation ARC-CMS.

    The ARC-CMS Main View with search results on the left and a record open for editing in the main panel.

    The Publish Panel, including the Related Records Explorer tree.

    The Availablity Panel displays a record's avaialablity for all date/times, platforms, and regions.

    The Update Shared Attributes Wizard lets a user upate attributes on an entire tree of related records.

    The Assets Browser lets a user associate a CMS record with an asset in a file repository.