Dapper Hawk Wins Sierra Trading Post's Most Creative and Fun Award
When Sierra Trading Post launched their new API late last year with a contest, Joel Martinez and Cary Torkelson jumped at the opportunity to build something. Joel is an Android, Windows Phone and iOS mobile developer from New Jersey and Cary is the founder of a game development company based in NYC.
Together they created a price drop notification app called Dapper Hawk which took home the contest's 'Most Creative & Fun' award. Dapper Hawk is hosted on AppHarbor so we asked Joel to tell us more about the app.
What is Dapper Hawk?
JM: Dapper Hawk lets you search for products from the Sierra Trading Post catalog, and be notified when the price drops via email. The consumer-facing portion of the app is a simple interface to STP's search API. Once you find a product that you are interested in, you can watch it (like a hawk ;-) ). Then we have a backend process that we initiate daily which goes out and checks the latest price of the watched items. If a price goes down, we send the user an email to let them know of the price drop.
Sierra Trading Post held a contest for their API late last year. We decided to enter the API contest and brainstormed different ideas for our entry on the train ride into the city. After we decided on what we were going to build, I suggested that we use AppHarbor to prototype the idea because it was so easy to get started. Cary worked on the back-end code ... designing both the database schema, and the data access layer. And I worked on the API integration with Sierra Trading Post, and the front-end.
What did you build it with?
JM: Both of us have C# backgrounds, so ASP.NET MVC 3 with the Razor view engine was a natural choice. For the backend, we experimented briefly with the MongoDB add-on available through AppHarbor, but we ultimately decided to go with the tried and true SQL Server. We also decided to use jQuery for the 'watcher' functionality of the app (behind the scenes) to avoid HTTP timeouts from trying to host a long running process in IIS. The watcher manages the process of going out to check for the latest price for each watched item on the client so if there are a large number of items, the process can continue processing without timing out.
This was the first time I had a chance to use Razor, as a previous project where I used ASP.NET MVC was started before it was released (MVC 1.0 days). This turned out to be my favorite part of development as Razor is a joy to use.
I also used Paint.NET for all graphics and logos on the site. It's such a great editor in the absence of Photoshop. More people should really know about it.
What was something unexpected you learned while building it?
JM: It's not really something new that we learned, more like a reinforcement of what probably everyone knows intuitively but doesn't think about. And that's just how much work goes into all of the other aspects of creating a new product aside from pure development. Even for a small product like this, there's all the accounts we had to open (AppHarbor, affiliate program, STP API, bank, Google Analytics, AdSense, etc.). Then there's all of the testing/tweaking that amounts to basically staring at the same thing for hours on end. And finally there's copy-writing. Although the site doesn't have much text, we had to write some stuff for the contest entry describing what it was, and we had to make sure that the copy we did have on the site was clear and concise enough to let the user know what was going on, while not overwhelming the page with unnecessary info.
What advice would you give to other developers running their apps on AppHarbor?
Make sure you don't forget that AppHarbor can easily load balance your apps across multiple instances should the need arise. This means to pay attention to things like avoiding server-side state if possible, or at least using some of the awesome add-ons such as memcache to store your session state. Also, remember that every time you push changes, it's automatically deployed (assuming all tests pass and it compiles). This is a very freeing concept as it lets you avoid worrying about deployment, and allows you to focus on writing new features and shipping them nearly immediately.
What are your plans for it in the future?
There's a few different directions we can take the product at this stage. A few ideas that we're considering:
- Incorporating APIs and affiliate systems from other retailers, such as Amazon.
- Tracking price drop data and building a predictive price model that can suggest when a good time to buy might be coming up for a given product.
We also probably need a good designer to help us out with our logo and general UI/UX.