How we built a Web 2.0 Podcast Publishing Platform
Ram Krishnan

Founder and Chief Hacker at CastMetrix, a Web ASP company, providing Podcast publishing services for emergent New Media companies.
What the #$*! is Web 2.0?
Some representative attributes are:
- AJAX - a better user experience
- User generated content - a more democratic web
- Tags/Folksonomies - the semantic web, one tag at a time
- Web service APIs - the data is richer than the user interface
- Mash-ups - interesting compositions emerge
- The perpetual beta - redefining software release cycle
How Do We Know What We Know? -- anonymous quote about the film "What the #$*! do we know?"
The CastMetrix Application
- CastMetrix offers a Podcast Publishing Platform as an ASP solution to emergent New Media companies
- We enable our clients to provide comprehensive podcasting services to their customers
- Using this technology we've built Podbazaar, a podcasting network for South Asians
Our Requirements
- Build a technology platform with comprehensive features for listeners, publishers, and advertisers
- Support real-time, dynamic "stitching" of content and advertisements
- Enable our partners and customers to customize and integrate our application
- Our application itself had to be mashable
Our Technology
- Common Lisp - web and application server
- Javascript - client side scripts
- Flash - client side components
- XHTML/CSS
- Postgres Database
- Linux
Why Common Lisp?
- CastMetrix was built by two people who were proficient in it; in ~ 8,000 SLOC*
- We were able to leverage existing infrastructure
- It's mature: invented in 1958; ANSI standard in 1994
- Late bound and interactive
- Object-oriented including multiple-inheritance
- S-expressions: what XML ought to be
- Powerful macro capability - ideal for domain specific languages
- The SBCL implementation includes:
- Optimizing compiler
- Native threads
- Sophisticated garbage-collector
An Example
An XML micro-language within Lisp:
(xml
(:title (html-encode (title object)))
(:link (make-uri object :read))
((:description :content-type "text/html")
(html-encode (description object)))
(awhen (tags object)
(xml
(:keywords
(mapconcat (lambda (x) (name (tag x)))
it
",")))))
results in XML:
<title>Podbazaar News</title>
<link>http://www.podbazaar.com/permalink/126100789566373890</link>
<description content-type="text/html">
Podbazaar co-founder Suja presents the latest updates & featured
podcasts at podbazaar.com.
</description>
<keywords>podbazaar, news, updates, podcasting, featured podcasts</keywords>
Some Technology Lessons
- Javascript for client-side scripting
- Browser support is improving
- Mobile browser support is still poor
- Limited multimedia capabilites
- Libraries like Prototype and Yahoo UIL are nice
- Murky object semantics and multithreading model
- Flash for client-side scripting
- Proprietary, but has better sound and video integration
- OpenLaszlo is another option to consider
- Java applets - too heavyweight
- SVG may also be a viable option in the future
More Technology Lessons
- The server side technology must be flexible to support more than one kind of client side technology and RPC strategy
- Late bound languages are more suitable for this kind of development
- Languages like Lisp, Python, Perl, and Ruby offer features like live code updates and in-request debugging
Even More Technology Lessons
- Don't get suckered into the language du-juor
- Don't fall for the purported performance gains of any technology
- Make it work correctly, first
- ... then try to make it work faster
- ... then rewrite it
- At the end of the day, pick a technology you enjoy working in, not one that looks good in a data-sheet
Point of view is worth 50 IQ points. -- Alan Kay
Web Services & Mashups
Google Maps Mashup in Podbazaar
- XML-RPC, SOAP and the REST of the alphabet soup
- REST transport with S-expr, XML, or JSON payload
- Keep the XML generation lightweight
- CastMetrix generates 4 flavors of XML data (so far)
The Reality of Web 2.0
For the budding entrepreneurs in the room.
- Web 2.0 isn't the application
- It supports and augments the user experience
- It enables more composable and reusable components
- It helps build a community of technology contributors
- But, it isn't the application!
- Build the application first
- Add Web 2.0 features as needed
- Grow organically
Final Thoughts
- Great time to do a technology startup
- The barrier to entry is low
- New service and revenue models
- The World is truly flat!
- Seek out real problems faced by your users
- Build core solutions, but leave lots of interfaces for integration
- Learn from the innovations and innovators from the past
If I have seen further it is by standing on ye shoulders of Giants -- Sir Isaac Newton
In computer science, we stand on each other's feet. -- Brian K. Reid