1. Why use Caching?

Are you aware of the Pareto principle, also known as the 80-20 rule, which states that, for many events, roughly 80% of the effects come from 20% of the causes? Well, this principle also holds true for Podcastpedia.org, where most of the traffic is driven by some of the podcasts, and only some of the search criteria are used the most. So why not cache them?

For application caching Podcastpedia uses Ehcache, which is an open source, standards-based cache for boosting performance, offloading your database, and simplifying scalability. It’s the most widely-used Java-based cache because it’s robust, proven, and full-featured.

This post presents how Ehcache is integrated with Spring, which is the main technology used to develop Podcastpedia.org

Octocat Source code for this post is available on Github - podcastpedia.org is an open source project.

Continue Reading ...

Why use reCAPTCHA?

We have a section on Podcastpedia.org, called Recommend podcast, that allows visitors to submit podcasts. Lately we have received very good suggestions – thank you all you Guys for that, but also lots of spam. A way to signifactly reduce the amount of spam, is to use captchas, which is a type of challenge-response test used in computing to determine whether or not the user is human. One popular implementaiton of captchas, is reCAPTCHA, now owned by Google. You might thing that solving catpchas is annoying, but by using reCAPTCHA you help to digitize books, newspapers and old time radio shows – here is a greatd TED talk from Luis von Ahn on massive-scale online collaboration explaining how this works:

Last but not least, you help us avoid email spam, which I guess you know by now how annoying and dangerous that can be.

This post presents how reCAPTCHA is integrated with a Spring MVC form to recommend podcasts.

Octocat Source code for this post is available on Github - podcastpedia.org is an open source project.

Continue Reading ...

Podcastpedia.org uses the MySQL database, in version 5.5.32 (# mysql -V),  to store metadata (title, description, update frequency, url of the image, urls of episodes etc.) of podcasts from the directory. The database contains both MyISAM (for performance and full-text indexing capabilities) and InnoDB tables. An upgrade to version 6 and only to InnoDB tables is considered, once it’s mature enough and GoDaddy will support it. This post presents how MySQL server is configured, and to be more specific how the my.cnf file looks like.

Continue Reading ...

Functionality

Each podcast on Podcastpedia.org has one or several associated keywords. When you go to a specific podcast you will see all the associated keywords :

Podcast keywords sample

Podcast keywords sample

There is also a special entry in the main menu – Keywords – that displays all the keywords associated to podcasts, ordered by the number of podcasts associated with. But the really cool part of the page is the autocomplete box – you can easily find podcasts related to a topic of your interest by typing in the first characters of the topic’s name. Let’s say you would like to see if there any podcasts related to Java, you would type “Ja”, the autocomplete functionality will display the keywords that start with “ja” and you can see “Java” exist and select it:

Autocomplete jQuery

Autocomplete keywords box

As shown in the picture above, you can select several keywords on the same page. But enough talking… let’s see how the magic happens behind the scenes, because this is actually the topic of this post.

Octocat Source code for this post is available on Github - podcastpedia.org is an open source project.

Continue Reading ...

As you might have already guessed, Podcastpedia.org is all about podcasts and podcasting is all about distributing audio or video content via RSS or Atom. This post will presents how  Atom and RSS podcast feeds are parsed and added to the directory, with the help of the Java project Rome.

Maven dependencies

In order to use Rome in the Java project, you have to add rome.jar and jdom.jar to your classpath, or if you use Meven the following dependencies in the ``<div id="toc_container" class="no_bullets">

Contents

</div>

As you might have already guessed, Podcastpedia.org is all about podcasts and podcasting is all about distributing audio or video content via RSS or Atom. This post will presents how  Atom and RSS podcast feeds are parsed and added to the directory, with the help of the Java project Rome.

Maven dependencies

In order to use Rome in the Java project, you have to add rome.jar and jdom.jar to your classpath, or if you use Meven the following dependencies in the`` file:

<dependency>
    <groupId>rome</groupId>
    <artifactId>rome</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>1.1</version>
</dependency>
Continue Reading ...