Blogg
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.
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.
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
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
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!
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!
Sidor
Arkiv
- maj 2012 (1)
- mars 2012 (1)
- februari 2012 (2)
- januari 2012 (1)
- november 2011 (2)
- oktober 2011 (1)
- september 2011 (2)
- juli 2011 (2)
- juni 2011 (2)
- maj 2011 (6)
- april 2011 (1)
- mars 2011 (1)
- januari 2011 (1)
- december 2010 (1)
- november 2010 (1)
- oktober 2010 (1)
- augusti 2010 (1)
- juni 2010 (1)
- maj 2010 (2)
- april 2010 (1)
- januari 2010 (1)
Kategorier
- Aegir (1)
- användartester (1)
- Ctools (1)
- Drupal (10)
- Drupalcamp (2)
- Drush (2)
- Event (2)
- eye tracking (1)
- Go:ttogether (1)
- Google (1)
- Google+ (1)
- Hackathon (4)
- Hosting (1)
- Ipad (1)
- Karriär (2)
- Kognition (1)
- Kontoret (3)
- Lite personligare (1)
- Modulbyggande (2)
- Panels (1)
- Projekt (13)
- Sociala medier (1)
- Spotify (1)
- Tips (1)
- Understandit (2)
- Utveckling (3)
- web (1)
- Webbstrategi (1)
