presentation_pfe_shuffler



presentation_pfe_shuffler

0 0


presentation_pfe_shuffler

Presentation of my internship at shuffler.fm

On Github mbenabda / presentation_pfe_shuffler

Hi I'm Mehdi Ben Abdallah

Shuffler ?

  • founders: Tim Heineke & Marcel Corso
  • music overload = hard to find new relevant content
  • music blogs have genre-specific relevant content

What did I work on ?

  • learning RoR by correcting bugs
  • python RESTful API v2
  • SOAP server: Shuffler on Sonos

Why an API v2 ?

why an API v2 ?

  • overload of the web application server (legacy code)
  • + evolution of the data model
  • + wish to open the new data to developers
  • = need for a unique & up-to-date access point

API: From v1 to v2

  • pagination
  • new Resources
    • channels
    • users

API resource: channels

  • channels
    • GET /channels/{channel_key}

API resource: users

  • GET /users/{user_id}
  • favorites
    • GET /users/{user_id}/favorites
    • GET /users/{user_id}/favorites?track_id={track_id}
    • GET /users/{user_id}/favorites/{favorite_id}
    • POST /users/{user_id}/favorites
    • DELETE /users/{user_id}/favorites/{favorite_id}
  • subscriptions
    • GET /users/{user_id}/subscriptions
    • GET /users/{user_id}/subscriptions?entity={entity}
    • GET /users/{user_id}/subscriptions?entity={entity}&entity_id={entity_id}
    • GET /users/{user_id}/subscriptions/{subscription_id}
    • POST /users/{user_id}/subscriptions
    • DELETE /users/{user_id}/subscriptions/{subscription_id}

API: From v1 to v2

General approach:

  • check parameters
  • get cached result when available
  • no cache: execute SQL request & cache result
  • format & send response

why the Sonos app ?

  • bring more users to the blogs
  • bring the blogs to the users
  • more freedom for the users on how they consume shuffler's music

How it works

Tools box

  • Ruby on Rails
  • SOAP support : wash_out

eg. of SOAP action mapping

Still to be done

  • submit the service to sonos

Conclusion (1/2)

  • Applied concepts seen at school: cache, SOAP (XML, XSD, RPC), sys admin
  • Learned new technologies & concepts:
    • Ruby on Rails
    • fingerprinting
    • profiling & benchmarking
    • Agility & Scrum
  • Autonomous work = Self-training
  • Team work experience
  • Improved english communication

Conclusion (2/2)

  • API works & is live
    • windows phone app uses it
  • Sonos app needs DB slowness to be solved before submission

Contacts

  • mehdi.se.insat@gmail.com
  • marcel@shuffler.fm
  • we@shuffler.fm