FANS.FM 1.0
Two years ago I had the idea: a simple system that allows anyone to easily broadcast live radio and take callers. ![]()
Today it is finally a reality. ![]()
It didn't take two years to build exactly; it took two years to get it right. In fact, the major components of the phone system have been deployed and tested in production on a daily radio program for the last 18 months. ![]()
What took so long was figuring out how to present and simplify a complex idea. ![]()
I have obsessed on how to make FANS.FM simple. To that end I removed the need for user account registration or sign in. All you have to do is click the button on the homepage to get started. The entire host interface is browser based and realtime through the use of websockets. ![]()
All you need to do to go live is hit the Broadcast Live button on the home page, call in over phone or Skype and click Start. ![]()
Development went through several major refactorings as I wrestled with what the product should actually be. I used the project as a petri dish for some experimental development ideas and learned a lot in the process. ![]()
Version 1.0 is the culmination of all my development theories put into action. The system is written in an effortless mixture of both node.js and Ruby code working in concert via the Message Based Web Applications idea I wrote about recently. Every message within the system is routed through a series of queues. Ruby and javascript workers handle the messages and react accordingly. The entire application is non-blocking. ![]()
FANS.FM has a strict separation of static and dynamic concerns. All of the dynamic concerns are handled by message based system I just described. All of the static concerns are handled by Amazon S3. The entire www subdomain of fans.fm is hosted straight ouf of S3. Updates to a broadcast on the dynamic side are published in a static form immediately. All of the static assets and the player are hosted out of S3 in addition to the embed code that will swiftly load when placed on your website. ![]()
FANS.FM's database is Amazon's DynamoDB. I'm loving it so far. The data needs for this application are pretty basic and DynamoDB delivered an easy to use key/value store with atomic counters and collections. Also: just another thing I don't need to worry about keeping up. Also: its fast! ![]()
The FANS.FM player is both a Flash and HTML5 audio player. This means people can listen to your live or on-demand broadcast within Safari on the iPhone or the Android browser. ![]()
There are a lot of features I purposely left out of this initial FANS.FM version. I wanted to keep things sparse and see how users would try out a very focused service. ![]()
The video is the documentation for the moment. Please send your questions and comments to @fansfm on Twitter. ![]()
I will be holding Office Hours on Friday, October 19th at 4PM ET using FANS.FM to broadcast and taking your calls. Follow @fansfm on Twitter for more updates. ![]()
