Adam Tuttle

Writing my own delicious replacement

By now you've probably heard that Delicious will be closing up shop sold, in an attempt to keep it alive. When the news first hit, I started looking for an alternative cloud-based bookmarking site, with the criteria that it should be free, support tagging, and preferably have an extension for Chrome (or at least a bookmarklet).

I did find a few options, but so far I haven't been particularly pleased with any of them. Now, the news has come that delicious will likely be sold instead of shut down, but by the time I heard that I was already committed to this idea. I was going to, mostly as a way to learn a few new things, create my own port of Delicious. In the process I want to learn CF9 ORM functionality, possibly use EHCache as a 2nd level cache for Hibernate (and just in general), and continue my quest toward FW/1 nirvana. In addition, I wanted to learn how to use Facebook- and Twitter-provided OAuth solutions, so I'll use that as the only login mechanism.

This series of posts will cover my progress on the project and the issues, pitfalls, and lessons learned during its completion.

Here are the tools I'll be using:

  • CFBuilder: My IDE of choice for ColdFusion development.
  • Git: The project source is already available on Github, which should make it easy to post code samples and share my progress.
    • For a Git client, I use a combination of a fork of GitX and the command line client.
  • MySQL: Most of the databases on my production server are MSSQL, but my development server (a Mac laptop) only has MySQL. For the sake of simplicity and eliminating potential headaches caused by dev/prod databases being different engines, I'm using MySQL in production as well.
  • ColdFusion 9 and Hibernate: At its core, this project is about me learning how to use CF9's ORM functionality.
  • EHCache: Since it (supposedly?) pairs up so well with ColdFusion and Hibernate, I might as well give it a shot, right?
  • Facebook and Twitter OAuth Solutions: To help prevent situations like Gawker recently dealt with. This is the way to the future.
  • FW/1: My current favorite MVC framework for ColdFusion. Lightweight and powerful, yet simple, and with nearly zero config.
  • jQuery & jQuery UI: While I already know these fairly well, this will be my first project starting from scratch with jQuery UI so I'm interested to see how well I can use its offerings.
  • MXUnit: Unit testing integrated in CFBuilder. Nice.

Other ideas I have are to provide extra features like an RSS feed of each user's bookmarks, an API for interacting with the data (using Taffy, of course!), and possibly adding the option to push to your Facebook wall -- but these are all secondary to the core functionality and will just have to wait. I may also try to bring in other frameworks that could help, like ValidateThis, but I don't want to take on too much new stuff at one time so I'm planning to refactor that sort of thing in.

Also worth mentioning, since I've already done a lot of the initial ORM development work, is that the first few places I look for ORM help when I get stuck are:

  • Bob Silverberg posts on ORM in depth, clearly, and frequently.
  • Manju Kiran is an Adobe engineer and has some good ORM examples posted.
  • Rupesh Kumar is another Adobe engineer who occasionally blogs on ORM topics.

If I can't find what I need there or in the CF9 documentation, then I google or ask friends.

I expect to make a lot of mistakes, and I'm hoping to get a lot of good advice, by writing all of this here -- this is a learning process. I will try to address updates in a way that preserves searchability for others making the same mistakes while still making the solution clear.

Next time I'll show the data model I'm starting with and how to write the persistent ORM CFCs to work for my application.

7 responses:

Ben Nadel

Ben Nadel

Sounds like a cool project, especially for learning ORM. Good luck - looking forward to your posts.
Kevin Marino

Kevin Marino

Awesome. Yeah I use Delicious but irritated can't easily share with my Evernote and Springpadit accounts. Not a fan of syncing with Facebook (my Facebook account is more personal than professional).

So if you would consider Evernote or Springpadit syncing I would definitely assist with testing.
John Allen

John Allen

Sounds cool. Looking forward to it.
Guust Nieuwenhuis

Guust Nieuwenhuis

Apptacular, a CFBuilder extension by Terry Ryan, can really help you to generate your ORM code to get started.

http://apptacular.riaforge.org
Akbarsait

Akbarsait

Great Project and looking forward for it. I maintain a list of ColdFusion 9 tutorials here - http://www.akbarsait.com/cf9tutorials.cfm with many ORM examples.
Nathan Mische

Nathan Mische

Sounds like an interesting project to experiment with ORM. For validation I would suggest taking a look at Dan Vega's Hyrule framework (http://hyrule.riaforge.org/). I'm using it on a ORM based FW/1 project right now and find it is pretty unobtrusive.

As for the API I really think it should be the core of your application, not an afterthought. This is especially true if you plan to use a lot of JQuery and JQuery UI.

Good luck, I'm looking forward to see what you come up with.
jbuda

jbuda

Good Luck with ORM!

Started using it a couple of weeks ago and not looked back. Removing the mundane DAO/Gateway creation is awesome!

Your comment:

Leave this field empty: