How I Made a Mashup

By Aaron Aycock (www.juststepsaway.com)

I”m an enterprise architect by day and like to work on development projects on the side to stay close to the latest technology and tools. Naturally, I wanted to play with the Web2.0 technologies and get a feel for the Google and Yahoo APIs. What better way to learn than by applying these new tools to solve a pressing need I had recently?

The idea is this: juststepsaway.com. It provides vacation rental listings from the top sites with deep filtering. You can start in an area with hundreds of units and quickly narrow the list to just a few using criteria that are important to you (e.g. 2 bedrooms, beachfront, high speed internet, and pet friendly.) And it”s a mashup using Google Maps, so you can see whether the beach really is “just steps away.” Compared to traditional search or manually checking individual listing sites, intelligent filtering can save hours. And if you’ve never tried a vacation rental instead of a hotel, you should. For hundreds less per week, you can get a suite with a kitchen, washer/dryer, and more.

Construction begins

Working occasional nights and weekends, I built the framework of the site in a few days. I built the crawler, parsing, and indexing components within three weeks. And I had a working prototype ready in just over a month. I felt like 90% of the heavy lifting was done. That is, until I began coding the user interface. Maybe it”s just me, but I find it very difficult to build an intuitive user interface that looks good. When it comes to color schemes and fonts- I”m in trouble.

Enlisting the help of family and friends, I worked to refine the look and feel. In the meantime, people were starting to comment that the site was actually very helpful. A friend at work found a condo on St. George Island that he had never heard of. He is planning a trip there now.

Going public

Once I felt the UI was close enough, I nervously posted the link and a request for feedback on Joel”s Business of Software forum (http://discuss.joelonsoftware.com/default.asp?biz.5.314339.17). The feedback was both extremely helpful and friendly. Visitors from every continent but Antarctica hit the site. And while the traffic slowed over the next few days, I had enough data points to tweak query performance for speed and relevance.

Now I”m working to incorporate the feedback into the design of the site. In fact, I will continue to improve the site by watching activity and releasing as needed. My goal is to provide a site that is helpful enough that people will want to bookmark it and tell their friends.

Tools

The barriers to entry are quite low for a web application. Every tool and service I used to build, test, and monitor the site is free. Here are a few of my favorites so far:

Planning

Basecamp (www.basecamphq.com) ” I use Milestones to track dates, Messages for the feature list, and Task Lists broken down by category- marketing, planning, design, development, testing, and deployment.

Naming

Nameboy (www.nameboy.com) ” Finding a quality domain that isn”t already taken is hard work. This site can help. Enter 2 words and it will find any available combination.

Logos

These are great for inspiration: http://www.flickr.com/photo_zoom.gne?id=93136022&size=l and http://flickr.com/photo_zoom.gne?id=101793493&size=l

User Interface

A List Apart (http://www.alistapart.com/topics/) ” Hundreds of articles on good UI

Open Source Web Design (http://www.oswd.org/) ” Free web design templates

Design

Legal pad and mechanical pencils

Language/Framework

-Java1.5, Struts, Tomcat 5.5, JSP w/ JSTL and Expression Language

Apparently this isn”t very Web2.0. But I was more interested in getting the project out the door than learning a new language and framework. I”m very comfortable with these tools, so I wasted no cycles on learning a new language and was able to focus entirely on the application. Choose a framework that is lightweight for you. I can build, test, and deploy to production within 2 minutes.

Development

-Eclipse (Java code)

-Firefox Web Developer Extension (https://addons.mozilla.org/extensions/moreinfo.php?id=60&application=firefox) If you”re going to be doing web development, you need this tool.

With the web developer extension, you can easily toggle between the standard view:

And a detailed view that shows CSS classes, div and table layouts, and attributes of any element just by hovering over it. There are plenty of other tools included.

Database

-MySQL (http://www.mysql.com/) ” Lightning fast and so far it has been solid.

APIs used

Step 1: I feed named complexes by region into the Yahoo Local API (http://developer.yahoo.net/search/local/V1/localSearch.html) throttling 5,000 requests at a time as dictated by the developer license. This gives me a street address that I score with matching confidence. If it is high enough, I pass it on to the next step.

Step 2: Surprisingly, there isn”t a one-stop API that provides both addresses and geo locating (latitude and longitude based on address). So I pass the addresses into the Ontok Geocoder API (http://www.ontok.com/wiki/index.php/Geocode). I”m given latitude and longitude which I also score for matching confidence.

Step 3: Once I have these, I can store the coordinates with each listing and pass it into the Google Map API (http://www.google.com/apis/maps/documentation/) for map markers.

As pointed out on the Business of Software forum, I can”t believe someone hasn”t tied these steps together in one place yet. Nevertheless, the APIs that are exposed are very powerful, and I”ve just begun to explore what”s available. I also want to pull in helpful data that from other sites like TripAdvisor for guest reviews, so stay tuned.

Testing

-Selenium (https://addons.mozilla.org/extensions/moreinfo.php?id=1157&application=firefox) Record and playback automated test scripts from this Firefox extension.

-Jmeter (http://jakarta.apache.org/jmeter/) Java-based load testing tool from Jakarta. You”ll want to load test before announcing your site to the world to make sure it can handle the traffic.

Infrastructure

I”m running everything on a single dedicated server for $50/month.

Monitoring

-Google analytics (http://www.google.com/analytics/) – nobody comes close, and it”s free

-Siteuptime (http://www.siteuptime.com/index.php) – You can monitor one URL for uptime. I have it configured to page me if the site isn”t responding. So far, I”ve received no pages except for the planned test.

And finally, my secret sauce “shadow app” that provides real-time query info, server performance, and site stats so I can tune on the fly. This one is so much fun, I’m thinking about packaging it and sharing it with everyone.

Lessons learned

- Get it out there. Find a community you like and post it. I like Joel on Software a lot. Even a small amount of traffic will give you insight to tune and fix bugs.

- A distinct advantage of web apps is the ability to tweak and redeploy web apps at will. I simply push the new JSP to the server and I’m done. Wash, rinse, repeat.

- Even if it isn’t the next big thing, no worries. Two things will happen: 1) You’ll uncover areas of new opportunity, and 2) The satisfaction of deploying something into the wild will fuel your efforts to exploit the next opportunity.

So, sketch out a UI. Build a quick but clean prototype. Run it by a few friends and family. Then release. It doesn”t have to be perfect, just get it out there.


Aaron Aycock is an enterprise architect by day and a software entrepreneur by night. He’s currently working on juststepsaway.com which is a vertical search engine for vacation rentals. He has worked for Sun Microsystems and Oracle and received an MBA from Duke University. To Aaron, the perfect day is spent wakeboarding with his wife and daughter on Lake Lanier in Atlanta, GA.

Comments

  1. Wow. Thanks so much for this. It was very motivational.

    I’ve been flirting with the idea of creating a web app for a while now. This article might just be the push I need to actually finish something.

  2. That’s good to hear. Good luck, and keep us posted on your progress.

  3. Great post .

    i have been thinking about a mashup for a while.

    only thing stopping me is the lack of clarity in the business model – how to make money out of it ?

    same question to you as well – how do you plan to monetize this traffic ??