Multi-Touch Music Catalogue — Part 1: Getting Started
Intro
Towards the end of 2011 I went to a talk on multi-touch in
.NET at NxtGenUG Birmingham, by Guy Smith Ferrier. This was my
first experience of multi-touch and I was amazed at how ready the technology
was for developers. Basically, it’s here — go use it, get stuck in, have some
fun.
As a treat I bought myself a multi-touch capable monitor,
the Dell SX2210T for Christmas. Early this year I was then looking for a
multi-touch book. Guy Smith Ferrier kindly pointed me towards Josh Blake’s Natural User Interfaces in .NET early
access edition –which I’ve made good progress with and highly recommend.
So now I’m at a stage where I want to develop an application
and see what damage I can do with the multi-touch API’s available to me. As it
happens, I also want to learn Git and play
with a new agile ‘project management’ toy SpecLog.
So I had an idea — I’ll create a multi-touch music catalogue using all of these
tools — sweet!
To get data into my application I’ll be using the 7Digital API. In a simple spike
project I found it really easy to work with; the documentation is great; and I
got a riposte to a query on the mailing list. Also, if it’s good enough for Spotify and the BlackBerry
Music App, it should (just about) meet my exquisite demands. As a side-benefit,
I’ll have a nice .NET API that wraps their API which may be of use to others.
While creating the application I’ll be blogging about what I’ve
learnt from the tools I’m using and decisions I’ve made with my application. I’ll
also be welcoming of any comments, criticisms and suggestions about absolutely anything
– usability (especially NUI), coding style, architecture, testing, specs, go
crazy folks.
Creating my GitHub Repository
My first task was to create an empty solution and get it hosted on GitHub.
This actually took me about an hour or two. But that was because I did plenty
of research, and I’m glad I did — everything has run smoothly since then.
Initially I followed the getting started advice on GitHub
and read the first two chapters of the recommended reading. I followed
that up by downloading two tools: one that makes working with git on Windows
easy; and one for Visual Studio integration. I have to thank Krzystof Kozmic
for making me aware of these tools in this
blog post.
Now my application has a permanent home on GitHub. Here is the
repository if you want to check out current progress.
Capturing my Requirements with SpecLog
For almost a year now I’ve been using SpecFlow to create executable
specifications on some of my projects. Check out my “BDD” blog posts if you’d
like to see how I have used (and abused) SpecFlow.
The guys at TechTalk who created SpecFlow have now created SpecLog which they say is ‘designed for
managing requirements in agile projects’. On their website you can see some clips
that show you how to use it — personally I think they are very impressive — but
I haven’t used many tools of this nature — so take my opinions for what they
are worth.
For my Multi-Touch Music Catalogue, I used SpecLog to plan 7
iterations (which will probably change). Doing this I was able to relate user
stories to business goals — and then link user stories to the feature files I
had created in my Visual Studio solution. With this done I can associate
information with user stories like comments and images — obviously more useful
in a multi-developer production environment.
I have found SpecLog to be very friendly. Some of the
windows are a little small, but apart from that it has good usability and is
notably easy on the eye.
Above is a screenshot of my requirements for iteration 1 –
totally related to the business goal of allowing users to search for songs. The
graphical relationship between business goals and user stories is a nice touch –
and psychologically this kind of diagram is almost proven to help you understand
the information it represents.
I have only written the user stories for the first few
iterations, the rest are just business goals that I will flesh out later or
change as my ideas for the application do. In an ‘enterprise’ environment, you
would probably lay out all the stories on your main work space and then devise
your exact iterations at the start of the project (I would guess).
In the above screenshot, you can see the details for a
particular user story — note how I’ve linked it to a feature file in the
solution and it has imported that feature file. I can see the obvious benefit
here of non-developers, clients maybe, using SpecLog to keep tabs on what the
developers are working on and the project’s progress.
The “Add criterion” button allows comments and images to be
associated with this file, which again seems to be a nice touch (but I haven’t
trialled in a production environment).
If you want to have a look at my SpecLog repository and see
exactly what I’ve been upto, you can get it from my GitHub page
and open with SpecLog which you can download
here.
Plan
My plan for the application is quite simple, and fits with
my reasons for creating the application. Iteration 1 is all about getting some
basic functionality. Iteration 2 is then going crazy with multi-touch features
(such as multiple layout options) which is the main reason I am creating the
application. Although every iteration may include multi-touch improvements,
iteration 2 is a pure multi-touch R & D experience.
Following iterations then add more functionality up to the
point where you can purchase songs — although making profit it not the goal.
But if I’m in a position where people want to use this application to purchase songs,
then I’ll be happy to let them — the 7Digital API is fully supportive of this.
Personally, I’d be content knowing that people just want to use the application
(it’s not a load of pants basically).
Conclusion
Exciting times are ahead due to this project which
epitomises why I love software development — there are always new tools and
technologies, and so many options that let you be creative and imaginative. At
the same time you get some nice object-oriented challenges to sink your teeth
into (in this case creating the service that will communicate with the 7Digital
API).
It would be great if you could contribute and share your
opinions.