hack 24 logo

This Spring, on the 2nd and 3rd of May, 7digital are proudly sponsoring a new hack day, set up by the Tech Nottingham community - Hack24.

During this 24 hour coding competition, teams of 4 compete to win exclusive prizes, by showcasing their innovative ideas and raw tech talent!

Set in Nottingham's Creative Quarter, this will definitely be an exciting Hackathon to be a part of.

How to get involved?

7digital folk listen up, now we've set an API challenge as described below; we're looking for 4 people to form a team - it doesn't matter what your specialism is, what department you're in, a team formed of product, systems, data and dev people might be just as good as 4 hardcore h4xx0rs.
 
Challenge: Build a context-based or thematic music application, service or store using the 7digital API augmented with data or APIs from at least one other source.

Context is key to the new wave of music applications. All you can eat music or massive download catalogues are hard to navigate and only let people discover what the retailers think they should. With the onset of wearable technology, open access to contextual data from the internet of things and the general increase in availability of processable data, we can now inform decisions in real-time based on the context in which that person, action or event exists.

Imagine that your music choices could be informed by the weather, or the city you're currently in, or the fact that your friends are all talking about the latest band. What if your music app knew you were running, or cycling, or dancing? Consider that you might want to only listen to rock, or classical, or Christian music or music from bands formed in Nottingham. We have 32 million available tracks to play, but you'll not want to listen to all of them (that's about 369 years of listening) so picking themes is important, and playing them based on the listeners current situation makes them even more important.

The 7digital API allows you to search, list by genre, purchase, preview and stream from our worldwide music catalogue. Couple this with another API or data source, using our partners like MusicBrainz, our matching API, or by combining another API through text searching, and you should be able to create something unique.

Entrance is FREE, we'll take care of the logistics, so all you have to do is sign up for the Hack here!

 

Tag: 
Hackathon
Hack
music app
app
API
sharri.morris@7digital.com
Saturday, July 7, 2012 - 13:03

We have recently been working on an incremental indexer for our Solr based search implementation, which was being updated sporadically due to the time it took to perform a complete re-index; it was taking about 5 days to create the 13GB of XML, zip, upload to the server, unzip and then re-index. We have created a Windows service which queries a denormalised data structure using NHibernate. We then use SolrNet to create our Solr documents and push them to the server in batches.

Solr Update Process

sharri.morris@7digital.com
Friday, March 2, 2012 - 11:47

After having read the o’Reilly book “REST in Practice” , I set myself the challenge of using OpenRasta to create a basic RESTful web service. I decided for the first day to just concentrate on getting a basic CRUD app as outlined in chapter 4 working. This involved the ability to create, read, update and delete physical file xml representations of Artists. It is described in the book as a Level 2 application on Richardson’s maturity model, as it doesn’t make use of Hypermedia yet. One reason why OpenRasta is such a good framework to implement a RESTful service is that it deals with “resources” and their representations. As outlined in “REST in Practice”, a resource is defined as any resource accessible via a URI, and OpenRasta deals with this perfectly as it was built to handle this model from the ground up.

The Basic Web Service

sharri.morris@7digital.com
Thursday, February 2, 2012 - 17:05

When bootstrapping a structure map registry, you are able to set the "life style"  of that particular instance using Structuremaps fluent interface. For example, when using NHibernate, it is essential that you set up ISessionFactory to be a Singleton and ISession to be on a per Http Request basis (achievable with StructureMaps HybridHttpOrThreadLocalScoped directive). Example:

For() .Singleton() .Use(SessionFactoryBuilder.BuildFor("MY.DSN.NAME", typeof(TokenMap).Assembly)) .Named("MyInstanceName");
For() .HybridHttpOrThreadLocalScoped() .Use(context =>; context.GetInstance("MyInstanceName") .OpenSession()) .Named("MyInstanceName");
It's nice and easy to test a Singleton was created with a Unit Test like so:

[TestFixtureSetUp] public void FixtureSetup(){ ObjectFactory.Initialize(ctx => ctx.AddRegistry(new NHibernateRegistry())); } [Test] public void SessionBuilder_should_be_singleton(){ var sessionBuilder1 = ObjectFactory.GetInstance(); var sessionBuilder2 = ObjectFactory.GetInstance(); Assert.That(sessionBuilder1, Is.SameAs(sessionBuilder2)); }

sharri.morris@7digital.com
Wednesday, February 1, 2012 - 15:42

Introduction

We have been using Solr for a while for search, Solr is fantastic, but the way we get our data into Solr is not so good. The DB is checked for new/updated/removed
content, then written into a jobs table, which is checked to see if there are any pending jobs. There are numerous issues with using a DB table as a queue, some for MySQL are listed at:

http://www.engineyard.com/blog/2011/5-subtle-ways-youre-using-mysql-as-a...

To stop using our DB as a queue I decided to test out setting up and using an AMQP based message queue. AMQP is an open standard for passing messages via queues. The finally goal would be to allow other teams to push high priority updates or new content directly to the queue rather than have to go through the DB, which can add considerable latency to the system.

For this test RabbitMQ was used, as it has a .Net library and it runs on virtually all OSs, has good language support, and good documentation. This can be found at the RabbitMQ site: http://www.rabbitmq.com/

Getting Started

I strongly advise reading these before you start:
http://www.rabbitmq.com/install-windows.html
and