Skip to content

Instantly share code, notes, and snippets.

@sdillingham
Created February 27, 2014 01:00
Show Gist options
  • Save sdillingham/9242155 to your computer and use it in GitHub Desktop.
Save sdillingham/9242155 to your computer and use it in GitHub Desktop.

KPCC Product Design & Engineering

Team

Our core product group functions as an integrated design & engineering team with a total headcount of 6. It's comprised of:

  • 2 Application Engineers
  • 1 Mobile Application Engineer
  • 1 Designer & Front-End Developer
  • 1 Product Designer/UX & Engineering Manager
  • 1 Product Manager

Technology & Tools

We use a number of tools in our web app stack:

  • Ruby
  • Rails
  • Rspec
  • Node.js
  • Backbone.js/Ember.js
  • MySQL
  • Redis
  • Resque

Our software stack for building Mobile apps:

  • iOS: XCode/Objective-C
  • Android: Android Studio/Java

Software tooling and project management:

  • Github (version control and collaboration)
  • CircleCI (hosted continuous integration)
  • Capistrano (deployment)
  • Pivotal Tracker, Campfire, Aha! (project and product management)
  • New Relic, Server Density, PagerDuty (application and systems performance monitoring)

Product Development Process

We work in an agile fashion against our product roadmap, which is owned by our Product Manager. Design/UX is at the center of all audience-facing projects. On our recent mobile app projects we've increasingly embraced lean principles for development.

The designers on our team are also capable front-end developers, so everyone on the team contributes code and is hands-on with the technical implementation of our products.

We have a strong culture of building our own products and tools; consequently, writing high-quality software is a top priority for our team. Our engineers are very disciplined about writing tests against their code and using continuous integration. Code coverage across our core publishing products is pretty solid.

Publishing Platforms

CMS: Outpost

We built a custom Rails-based CMS engine that powers all our active websites. It's called Outpost, and it's a public project here on Github: https://github.com/SCPR/outpost.

We've also built a number of Ruby Gems to extend Outpost's functionality:

Our instances of Outpost also leverage a small Node.js application we built to surface realtime user activity inside the CMS:

https://github.com/SCPR/Newsroom

Digital Asset Management: AssetHost

AssetHost is our attempt to create a one-stop-shop for hosting and linking to media assets that are intended for inclusion in news stories. We use it as a hub that multiple frontend CMS systems can hook into, querying images, videos and documents from one source and enabling easier interchange of data.

It's also a public project on Github: https://github.com/SCPR/AssetHost.

KPCC Public API

KPCC built a public API on top of our content that we use to power our mobile apps as well as other KPCC news apps and data projects. All of our core digital content objects are represented here: Articles, Programs, Audio, Assets, our Broadcast Schdeule, etc. The API is currently read-only.

Documentation can be found here: https://github.com/SCPR/api-docs/tree/master/KPCC/v3

Other Apps

Mobile Apps

We have iPhone and Android apps currently provided to us by Listener Interactive. We're working to replace these apps with our own in-house apps by early summer.

Our iPad app was build in-house and launched in November 2013. The GitHub repo for this project isn't public yet, but will be by the end of this week.

Audio Streaming: StreamMachine

Our live stream is powered by StreamMachine, a Node.js app developed at KPCC. The core innovation at the center of StreamMachine is "live rewind", a DVR-like feature that lets users time-shift the live stream, hours of which can be stored in memory on the server. We haven't exposed this feature to the public yet, but we will starting with our upcoming iPhone/Android apps.

StreamMachine is an open source project on Github: https://github.com/StreamMachine/StreamMachine)

Infrastructure

We co-locate all our digital systems at a datacenter in Downtown LA. We're currently running on leased hardware, but are in the middle of a hardware and systems refresh. When this transition is complete this Spring, our infrastructure will consist of a small number of high-powered physical hosts running the following stack:

  • VMWare
  • Ubuntu
  • Chef
  • nginx
  • Passenger Enterprise
  • MySQL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment