About
This is the M Cubed Software weblog. To find out more about us head to our about page.
Search
Feed
Archives
- June 2010
- April 2010
- March 2010
- February 2010
- January 2010
- November 2009
- August 2009
- July 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
Minim Development Diary: Week 1
Posted on 25/08/2007 at 04:37 AM in
Well, the first week of Minim development is drawing to a close so it’s time for the first of the development diaries. For those who aren’t familiar with why I’m doing it you can read the idea here:
Finding a point of attack
Like any project, the hardest part is finding where to start. It’s easy coming up with a vision for an update and to see exactly how it should work. Unfortunately, seeing what a user will see is not helpful in seeing what a developer needs to do. I decided to tackle the file management update first, but finding where to start is like finding a weakness in the Death Star: it’s hard to find and hard to hit but when you hit it the whole thing explodes.
As this is essentially a complete re-write of the feature I had two options: replace it bit by bit, always being close to having something that could be releasable, or taking out all traces of the feature and starting from scratch. As I have no real need to release Minim part way through development and because I often prefer a blank canvas to painting over my previous work, I gave my source a rather violent introduction to the delete key. Under an hour later I had Minim compiling with no traces of file management, barring the now blank Files tab.
Ok, so I’ve managed to get past the outer defences of the Death Star, now to find the point of entry. Unfortunately at stages like this of a project I end up procrastinating to a rather large extent and doing practically anything I can do, barring work on this problem. Eventually I get round to forcing myself to do something and everything starts to snow ball after that. Luckily I managed to hit the exhaust port of this problem yesterday.
Data, data everywhere
So I’ve started writing the data migration so I can get the file management features working with files already in the system. Adding new files is just a small step after that. Regular users may not appreciate the true extent of a data migration. It is by no means a simple mundane task as the small window that appears for a few seconds when you install a new version would have you believe. Not only do I have to worry about properly updating a database from version 1.1 to 1.2, which involves reading in files from 1.1 and copying them all to 1.2, I also need to deal with those upgrading from 1.0 to 1.2. And as time goes on you need to focus more and more on these sorts of changes which will get more and more complex as time goes on. An unfortunate but necessary bit of code that requires a lot of testing.
One thing that working on the migration does, however, is bring the data layer into sharp focus. This is a great opportunity for asking the age all question: “What the hell was I smoking when I wrote this?”. One feature of the Audio files tab is the selected audio file. This is the file from which Minim takes the time of the song, and is also for some future features we have planned. In order to select a file as the main audio file you clicked on a radio button next to the file. What this did was to loop through all files, disabling them, and then selecting the file you just clicked on. Looking at this now, it was a completely idiotic way of doing things. Why not have a drop down list in the song info panel that lets you choose the primary audio file? It makes things much simpler both from my perspective and the user’s perspective.
The next hurdle
So what is next? Well the next job is getting files to display. Then I can get on to customising the importer for different file types. This will allow you to, say, see the tempo of a GarageBand file, but also the running time of a movie. Unfortunately, it always sounds easy when you think about it like that, but you often find some annoying little problem that messes up your development process.
So that’s all I have for this week, it’s not much and I’ve waffled quite a bit (it’s a talent of mine) but hopefully it’s given you a bit of an insight into how I develop software and the issues I have. Have a good weekend, and look out for Code Collector Pro 1.0.1 by early next week.
(1) Comments
Comments
Keep ‘em coming.