Skip to content

Instantly share code, notes, and snippets.

@txomon
Last active July 3, 2017 12:17
Show Gist options
  • Save txomon/d64ea7dd67c1f473fb2aa6518981f3f4 to your computer and use it in GitHub Desktop.
Save txomon/d64ea7dd67c1f473fb2aa6518981f3f4 to your computer and use it in GitHub Desktop.
Technical test for abilities and capacity

Dubtrack.fm is a musical service that lets users listen to music together in channels. The service makes use of youtube and soundcloud, and users colaborativelly create the playing tracklist adding tracks from these services.

However, people needs to gather these songs manually and many times you find that the same song is being played more than once. The aim of this task is to resolve this problem by having everything automated.

Because the task could take really long, and many design decisions must be taken, this is a breakdown of the tasks.

  1. The songs played in the channel should be stored in a database, not relying in the history, but in a live connection to receive everything on real time.

  2. Who added the played song should be also tracked

  3. The number of votes received that exact play

  4. who was connected on the time of that playback.

With all this information, which should be made available through a json RESTfull API, we have just gathered all the information needed for the next steps.

Further steps would be.

  1. Inserting tracks in the queue. A LRU algorithm should be used as preliminary version.

  2. A messaging functionality that lets users interact with the demo through the chat system, being able to toggle the inserting feature

  3. Improve the algorithm to have into account who was listening and getting the LRU for those users

  4. Make possible to search database songs from the chat, and be able to mark the playing song as a duplicate of one of those.

The following conditions apply to all this work:

  1. Time management:
1. Sensible tracking of time spent on tasks.

2. The span of time you should work on this is approximately 12 hours. Mark with git tags relevant working versions

3. If you want to spend more, please mark milestones with tags, putting number of hours on them

4. You don't need to do it at once nor in consecutive days. Do as you feel.
  1. The code developed should be testable (doesn't need to include tests)

  2. Quality of work and design is valued

  3. It should be deployed in appengine standard environment. If desired, starting credit can be used, although shouldn't be needed.

  4. The programming language is Python.

  5. The final delivery is a github link and an app engine link

  6. Working on features like a web interface without having delivered the compulsory part substracts points.

The objective of this demo is to undertand your current level, and fully explore all your current abilities. During the test, you should think as if you were working with us as part of the team, with everything being part of the team envolves.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment