New concept for approaching Mac application development
Wednesday, September 3rd, 2008I’ve been enjoying Plex as a full-screen media center, but I haven’t been completely happy with its music browsing capabilities. I don’t like the way iTunes/Front Row work with external drives, so I’ve been browsing for some other alternatives. Coverflow has sold out and MediaCentral is now a pay product. In the past I’ve tried out some “Internet TV” apps like Miro and Xcast, and I’ve tried several media players: Amarok, Cog and others. But the problem that all of these projects have is that they don’t share their data. Every media player builds it’s own data library specific to its own interface.
Which got me thinking about m own project Time Tracker. It’s been getting a lot of user comments recently requesting new features and modifications to the interface. Some are unquestionably great ideas, many of which I’ve long been planning to implement. But other requests are very specific to one user’s unique type of use, and some requests are simply a matter of preference.
I’d like to see all users satisfied, but more than that, I wish it were simple to build or customize a user interface and leave the data structure beneath it intact. It would be great to be able to define a powerful data structure and only expose the portions that a user needs.
So an idea hit me for how to move forward with Time Tracker– separate the data structure and data storage into a separate component and write several quick and simple front-ends that are focused on specific tasks or usage patterns. Time Tracker would then be a suite of tools and the user could choose among them and seamlessly switch from one interface to another without losing data.
Of course, the problem with this idea is that the user interface often needs a lot of tweaks and adjustments to work properly. So this brings with it an additional challenge of creating a library of view and controller components that are more focused yet more robust than Apple’s own provided widgets.
It’s a difficult and perhaps ridiculous idea, but I think even attempting it would be a great step toward my goal of empowering users and making programming more accessible.