Blogg

Skrivet av Joel Söderberg 14 maj, 2012 - 14:47

För ett par år sedan skapade vi tillsammans med skivbolaget X5 music group siten SpotifyPlaylists.com. En plats för X5 att sprida sin musik de har tillgängligt på Spotify, och en plats för användare att dela sina favioritlistor. Nu har vi i samarbete med X5 kompletterat med en App för Spotify som heter Classify (att skapa Appar till Spotify är en ny funktion för externa utvecklare á la Apples Appstore). Den är i skrivande stund den 15:e mest populära Appen, och det gör oss väldigt stolta och glada. Nedan kan ni läsa mer om hela konceptet.

SpotifyPlaylists.com

Vi skapade en plattform för användare att enkelt publicera sina spellistor på en webbsite där de sedan kan kommentera och dela via andra sociala medier. Det finns även system för X5 att exponera vissa spellistor (eller grupper av spellistor, sk. teman) på framsidan.

Teknik

SpotifyPlaylists använder CCK, Views och Nodereference för att representera den insamlade datan från användarna (och Spotify). Alla entiteter (Playlist, Artist, Track) har sina egna nodtyper och relationerna sköts med nodereference.

Vi skapade en egen fälttyp för spotify-url:er. Som accepterar två format som input. Fältet kan sedan formatera länkarna efter dessa format vid output.

spotify:entity:id
http://open.spotify.com/entity/id

Största utmaningen med den här typen av webbplats är sökning och kategorisering. Stor del av sitens syfte är att förenkla för användare att upptäcka ny musik. SpotifyPlaylist använder en kombination av fritaggar och satta kategorier för detta. Taxanomier används också för att bestämma vad som skall promotas på framsidan.

Synkningen av spår och bilder tillhörande spellistorna sker i en bakgrundsprocess där vi använder Drupal Queue API för Drupal 6 för att kommunicera mellan processerna.

Classify

När spotify annonserade att de skulle börja med appar väcktes idén både från vår sida och från X5 att skapa en spotify-app runt konceptet spotifyplaylists.

Då X5 jobbar mycket med klassisk musik hade de märkt att det kan vara svårt att hitta bland alla tusentals album klassisk musik som finns på Spotify. Albumen är kategoriserade efter albumartist och sällan kompositör. X5 kom med ett koncept kring en Spotify-App för att lösa just detta: Classify.

Målen med Classify var:

  • Kunna promota nya släpp och
  • Kunna lista album efter:
    • Instrument
    • Tidsepok
    • Kompositör
    • Stämning

Och det var bråttom!

När allt var bestämt visade det sig att det bara var 3 veckor till deadline för att lämna in sin App till Spotify. Lösningen var given, använd SpotifyPlaylist.com som backend för Classify. Platformen vi hade byggt upp kring delandet av spellistor gick direkt att applicera på det nya problemet. Även här handlar det om att kategorisera musik så att användare kan navigera bland musik och hitta sina favoriter baserat på olika kriterier.

Services?

Vi valde här att inte välja services utan använda views direkt med ett JSON-format. Detta för att vi redan hade vyer för detta på plats, och att bara koppla på en ny display på dessa var snabbt och enkelt.

Spotify App API

En spotify APP är html och Javascript som körs i Spotifyklienten (webkit). Till detta hör ett API som låter appen styra funktionaliteten i Spotify.

Exempel från Classify (index.html)

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title>Classify</title>
  <link rel="stylesheet" href="http://understandit.se/sp%3A//import/css/adam.css">
  <link rel="stylesheet" href="http://understandit.se/css/classify.css">
  <script type="text/javascript" src="http://understandit.se/js/jquery-1.7.1.js"></script>
  <script type="text/javascript" src="http://understandit.se/js/jquery.json-2.3.js"></script>
  <script type="text/javascript" src="http://understandit.se/js/jquery.joelslider.js"></script>
  <script type="text/javascript" src="http://understandit.se/js/index.js"></script>
  <script>
  ...

Exempel från Spotify Apps API

var sp = getSpotifyApi(1);
var models = sp.require('sp://import/scripts/api/models');

var myAwesomePlaylist = new models.Playlist("My Awesome Playlist");
myAwesomePlaylist.add(models.player.track);
myAwesomePlaylist.add("spotify:track:6JEK0CvvjDjjMUBFoXShNZ");

En av de stora fördelarna att utveckla mot en bestämd plattform är att man inte behöver tänka på kompatibiliteten. Man behöver inte testa sin kod i 5-6 olika browsers, och du kan vara säker på att samma Javascript-api:er finns tillgängliga. T.ex. Local Storage.

Presentation på Drupalcamp i Göteborg 2012

Jag höll en presentation om detta på Drupalcamp, följ länkarna nedan för filmklipp och slides.

Postat under: Drupal Projekt Spotify
Skrivet av Mikael Svensson 29 mars, 2012 - 16:15

Vi sponsar och organiserar Drupalcamp Spring 2012 här i Göteborg. Eventet går av stapeln 28 april. Kom dit för att lära dig en massa, lyssna på spännande föreläsningar och givetvis få möjligheten att snicksnacka lite med oss.

Postat under: Drupal Drupalcamp Event
Skrivet av Mikael Svensson 13 februari, 2012 - 18:05

Vi fortsätter att växa och vill nu rekrytera dig som är kommunikativ, driftig, och intresserad av webben. Ditt arbete kommer att vara väldigt varierande men primärt bestå av att driva våra kundprojekt, samt försäljning och marknadsföring. De viktigaste personliga egenskaperna är att du har en stor drivkraft och vill utvecklas.  
Kontaktperson: mikael [at] understandit [dot] se

Postat under: Karriär
Skrivet av Mikael Svensson 9 februari, 2012 - 12:05

Varmt välkomna till årets andra Go:ttogether - Drupal meetup i Göteborg, 9e feb från kl 17!

Plats och arrangör: Understandit, Engelbrektsgatan 26

Drupal Go:ttogether är en återkommande informell träff för folk som är intresserade av Drupal. Vi kommer prata om ett eller annat Drupal-relaterat projekt, och så bjuds det på dryck och tilltugg. Vill du komma, signa gärna upp dig, eller släng iväg ett mail till mikael@understandit.se

Postat under: Event Drupal Go:ttogether
Skrivet av Mikael Svensson 5 januari, 2012 - 09:00

Vi har flyttat kontoret och sitter numera på Engelbrektsgatan 26, 411 37 Göteborg.

Ni är varmt välkomna hit för att dricka kaffe, spela pingis, eller bara kolla in våra tjusiga innertak. God fortsättning!


Visa större karta

Postat under: Kontoret
Skrivet av Joel Söderberg 24 november, 2011 - 16:41

Nu var det länge sedan någon här försökte skriva om vad vi håller på med på den tekniska sidan. Tänkte det kunde vara på sin plats att berätta lite om hur vi jobbar med våra plattformar, både för utveckling och hosting.

Vi har nu en stor hög med siter som vi har ansvaret att hålla uppdaterade, många D6-siter, och nu fler och fler D7-siter (sedan i somras bygger vi alla nya siter i D7). Problemet är att få en översikt och kunna lägga in uppdateringar utan risk för avbrott (en uppdatering kanske fungerar med en site på plattformen men det är problem med en annan osv.). Räddaren heter Ægir, och disciplin.

Ægir för att det låter oss installera nya plattformar enkelt och automatiskt på flera olika servrar.

Disciplinen kommer in när det handlar om att lägga till ny funktionalitet, att inte förhasta sig och installera en modul som spelar illa med plattformen, att förankra förändringar med kollegorna och att tänka långsiktigt och hållbart, d.v.s. kan vi bygga detta som en generell funktion som vi kan återanvända.

Vi har den senaste tiden kommit en bit på vägen, alla ändringar i plattformen sker i en make-fil som vi sedan kan generera nya plattformar på våra servrar med Ægir. Vi har börjat arbetet med att flytta ut vårar lösningar i features så vi kan jobba mer modulärt och lösningsorienterat.

Hur gör alla andra? Kom gärna med tips och kommentarer. Lovar att blogga när vi kommer på något smart!

Postat under: Aegir Drush Drupal Hosting

Sidor