Dabbling in Dabble

I'd been really impressed with Dabbledb just from seeing the video demo. I eventually decided to try using it to organize my music collection. I am mostly a jazz listener when it comes to music, and I have had this idea of building an extended jazz catalog for a while now - just in my back burner. So the idea was to see if Dabble is a good fit for this project.

Dabble is really awesome, and one of the really awesome things about it is the import.

Me: You know how I imported my iTunes library into dabble?

You: Um, probably parsed the itunes library xml file, and converted it to a format dabble takes - maybe a rest service of some sort...

Me: Wrong! I opened up itunes, pressed Ctrl-A to select all files in my library, Ctrl-C to copy, then Ctrl-V to paste into the import textarea of Dabble, click "Import", and BAM!

Well, okay, in reality there's a bit more to it. In iTunes, you want to add all the columns you want to export into the display. This is easy: just right-click on the column header and it will should you all the available fields and which ones are currently displayed. Check and uncheck as you see fit. Now, after the copy-and-past and a clicking Import inside Dabble, it should parse the tab delimited text correctly, and present you with a table view of the fields and a few rows of the data that it got. You can now tweak the field types before you finally do the final import.

Now, the next great feature of Dabble - in my opinion the greatest - is that you can just refactor the schema as you go. iTunes gives you a flat list of tracks - the artist and album fields for example, are just string fields. The obvious next step for me is convert these to related models, so that I can add additional information to the artists and albums and so that I can navigate my catalogue by album or artist, etc. In Dabble, this is dead simple. It's a one step process, you convert the string field into a link to a related category(your model, or entity in O/R speak), you can create the new category, say Album on the fly. The process will iterate over all the values of the field, group the common ones, and create an entry in the new category for each unique value. This feature, plus others which I will mention, means that your data model in Dabble are extremely malleable, which is not like the rigid O/R databases you are used to at all. I started out with one model: Track, and have since been refactoring it incrementally into more and more models. At this point I have 8 models: Album, Artist, Company, Instrument, Organization, Personnel, Song, and Track. Some of these models required additional data from other sources, but most were taken straight from the iTunes export. I must mention also, that changing your data model with actual data is very different from just drawing boxes and lines. Because the data is so concrete - ex: Bill Evans(Piano), My Foolish Heart - you see a realistic view of how well your data model fits with the actual data. I think it's a better data modelling tool than your standard O/R diagramming tools, of course, provided that you have actual data to work with.

Dabble has a one level undo for all operations. You can still screw up though if you go on to something else before you realize you need to undo - I already did this once. If you screw up, you can restore to a previous snapshot of your db. Dabble automatically snapshots your data about 5 times a day. You can also manually tell it to take the snapshot in the admin page. The restore process is just 2 clicks.

Also, you can change the field type of a column very painlessly. You just select configure -> change field type -> select the type you want -> done. It will convert the data for you semi-intelligently. For most cases this works okay. If not you can always undo or revert to your previous type. But I wish the data conversion was a little bit more configurable. For example, Dabble looked at the duration field of the track - for which the values looked like 6:23 - and assigned it the Duration type by default. This is exactly correct excepted that it interpreted 6:23 as 6 hours and 23 minutes. Another issue I had was the track number field. iTunes outputs the track number in the format 1 of 7, for example. I would like to convert this to just a number, getting rid of the of 7 part, and making it a Number field. Currently, there aren't sufficient options in the type dialogs for me to do that.

The UI is very well done. It's intuitive, all the possible actions are close by and just 1 or 2 clicks away. Search/filtering works nice. Mass edit is a useful feature. I especially like the merge feature, which I use a lot to clean up duplicate data. I like how one-to-many and many-to-many associations are displayed comma separated by default. You can customize almost everything about the views. There is still room for improvement, however. It is still quite tedious to enter large amounts of data, especially when there are many related models. I think they could make use of Ajax a bit more to reduce the number of full page loads. If it were me, I would make the core of the app(where you view, search, configure fields and edit data) a one page app.

Overall, I am loving Dabble. Avi Bryant is my hero. I'm going to be working on the music catalogue for a while, and I definitely see myself using this for other projects in the future.

blog comments powered by Disqus