You Too Can Be a Radio Host Or How We Scaled a .NET Startup And Had Fun Doing It
Upcoming SlideShare
Loading in...5

You Too Can Be a Radio Host Or How We Scaled a .NET Startup And Had Fun Doing It



Cinchcast (aka BlogTalkRadio) is a startup in New York City....

Cinchcast (aka BlogTalkRadio) is a startup in New York City.
Using only a phone, you can broadcast your message globally to millions of listeners.
Thousands of broadcasts are happening every day on topics ranging from technology to battling cancer.
In this talk, we will discuss how we accomplished this, the technology behind it, and the challenges ahead.
We will talk about what it's like building a startup in .NET and the techniques we have used to scale, such as
HTML and donut caching, lazy loading of data, elastic search, as well as marrying telephony to the web stack.



Total Views
Views on SlideShare
Embed Views



1 Embed 1 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

You Too Can Be a Radio Host Or How We Scaled a .NET Startup And Had Fun Doing It You Too Can Be a Radio Host Or How We Scaled a .NET Startup And Had Fun Doing It Presentation Transcript

  • You Too Can Be a Radio Host or How We Scaled a .NET Startup and Had Fun Doing it!
    Aleksandr Yampolskiy and Rob Blackin
  • Who Are We?
    Dr. Aleksandr Yampolskiy, CTO (
    Previously head of security and compliance for Gilt Groupe companies, in charge of securing IT infrastructure, secure architecture, PCI/SOX compliance, etc.
    Various leadership roles in Goldman Sachs, Oracle, Microsoft building scalable, enterprise software for IDM, SSO, AuthN/AuthZ.
    Ph.D. in Crypto Tools for Efficient Distributed Computing
    Hobbies: chess, Edward Hopper, Ray Bradbury, martial arts, lately foosball and coffee.
    • Rob Blackin, VP of Development and Operations (
    • Previously Director of Development at IDT in charge of systems for global businesses in 9 diff countries
    • CIO of VoiceNet subsidiary of Destia.
    • Hobbies: competitive volleyball player, as well as basketball, father of 3 girls and lately cranking out code at midnight.
  • Company Overview
    Cinchcast provides cloud-based software and services for creating, distributing, measuring and monetizing voice-based content
    BlogTalkRadio is a consumer-based media property
    • Founded in 2006
    • ~30 Employees
    • 10 of them in Tech
    • HQ in New York, NY
    • Millions of pageviews a day
    • Powering over 1,500 hours of content creation every day
    Confidential © 2011 Cinchcast - All Rights Reserved
  • BlogTalkRadioOur Owned Media Property
  • The Cinchcast Platform
    Confidential © 2011 Cinchcast - All Rights Reserved
    Confidential © 2011 Cinchcast - All Rights Reserved
  • Our Approach
    “Be brief, be bright, be gone”
    Don’t go chasing hot technologies of the day. Instead ‘mitigate your top problems’
    Achieve “essential”, then worry about “excellent”.
    Be a “how team” instead of a “no team”.
    Build security into the software development lifecycle.
    Love And Other Drugs 
  • Current Technology Stack
    .NET 3.5 C#
    Jenkins + Nunit
    Sauce On Demand - Selenium
    Gomez + NewRelic for monitoring
    ASP.NET and MVC 3
    IIS 6
    SQL SERVER 2005
    Windows Server 2003 and 2008
    Red 5
    Asterisk, Pactolus
  • Development Environment
    Visual Studio 2010
    StyleCop / Resharper experimentation.
    Scrum methodology for large features + adopting Kanban for various bug fixes
    JIRA for project management + Greenhopper
    Svn, Jenkins
  • Metrics
    Not using metrics for your dev process is like landing a plane without any instruments in a storm.
    Code coverage
    Site throughput
    Number of critical security bugs
    Time to fix Blocker/Critical/Major JIRA issues.
    Percentage of developers using your site.
  • What Do Metrics Tell Us?
  • Architecture
  • BlogTalkRadio 2007
  • BlogTalkradio 2008
  • BlogTalkRadio 2009
  • BlogTalkRadio 2010
  • BlogTalkRadio 2011
  • Evolution Summary
    2008 – Multiple web servers via Coyote
    LB and Scaleout for session state
    2009 – Read Only databases through replication and aptimize for combining JS, CSS and Images on the fly.
    2010 - aiCache for caching html, second farm on amazon for specific traffic, specializtion of web and database servers.
    2011 – Contendo cdn, services framework, retired aptimize due to Continuous Integration process, Service broker queuing.
  • Telephony Overview
  • Overview
  • Decoupling spaghetti code
    Search Service
    Cache Service
    AuthN Service
    AuthZ Service
    • Decoupling key pieces of the code into separate services possibly written in diff languages.
    • Can be used either as DLL imports or through RESTful calls on the network.
  • Services
    Based on Martin framework (
    Lightweight .NET framework mapping URLs to actions.
    Modified framework to reflect interfaces and automatically expose all their methods.
  • Service Philosophy
    • RESTful model, using JSON
    • Not all data is relational, so database isn’t always a good medium.
    • Logging is key to detecting problems.
    • Reinventing the wheel can be a good thing.
  • Elastic Search
    Our first service is moving search off DB.
    Settled on Elastic Search ( ) is based on top of Lucene
    A novel project. Unlike SOLR, it can handle real-time search applications.
    Due to Ryan Sonnek
  • Elastic Search
  • Caching
    “Donut caching” : caches most of the page except a few dynamic regions.
    .Net caching via Fixed Expiration
    myCache.Insert("LiveChatRooms", liveRooms, myDependency, DateTime.UtcNow.AddMinutes(2), Cache.NoSlidingExpiration);
    .Net caching via Sql Dependency Expiration
    SqlCacheDependency myHDDependency = new SqlCacheDependency(DBName, "Genres");
    myCache.Insert(DictionaryOfGenreEntityByID, myDictionary, myHDDependency);
    Data Caching via Scaleout
    return DCacheSoss.GetObjectFromNamedCache(CacheName, UniqueKeyName);
    CDN caching of JS, CSS and Images via Contendo and Limelight
    HTML Caching via CDN – Contendo, Limelight, aiCache
  • Cool Tech Projects On the Horizon
    Personalization of radio shows based on customer’s preferences.
    Build out of SOA Cinchcast platform from Python, .NET, Java components communicating as RESTFUL JSON-based services
    Moving real-time search to ElasticSearch (right now just for RSS/bots)
    Improving our caching layer performance (too many hit misses)
    A/B testing framework
  • Conclusion
    • Architecture improvements are gradual and sometimes you make mistakes (e.g. Aptimize)
    • Don’t chase hot technologies (e.g. MemCached mania). Sometimes reinventing the wheel is good.
    • Be brief, be bright, be gone.
  • We’re Hiring. Why Work Here?
    Open Positions:
    • Front-end Engineer
    • Sys Admin
    • Tech Lead
    • If you are good we’ll find a role for you :
    Well-funded profitable startup used by millions.
    Patent-pending radio tech utilized in a new way.
    Medical/dental/etc. benefits.
    Great office space in mid-town right near subway.
    Flexible hours. Top-notch compensation + stock options.