You can see our first site (which is almost complete) at the following link Find a yard sale near you at The bargains are waiting.... The idea behind the site is to import yard sale listings from around the country (and eventually Canada) into a single site and display the listings on a Google map. The site allows users to enter a starting location and optionally keywords, and returns a set of listings within a certain radius from the starting location. For this project I did use AspectJ to implement the crawling engines. Each location we import data from is a separate engine in our back-end. One of the ways I used AOP here was to make the engines self registering with the main application. If we want to create another engine, all we need to do is extend a base engine class (which is an aspect) and it will register itself and execute the next time the application is run. This has turned out to be quite convenient. I also use AOP to augment testing - I used it to: easily control which engines run, save data to disk for subsequent runs without re-accessing the original web site, and control whether or not the data is actually sent to our web site (sometimes we want to test the data without actually loading it to the website). Finally, we use it to keep track of engine statistics, emailing us with error messages, and letting us know how many calls were made to various services we leverage (some of which have limits we do not want to violate). Feel free to mention the Leucas Software LLC / work as well.

Paul Freeman, January 2008