zondag 24 maart 2013

Errors Sigh...

Na een beetje vertraging door mijn verjaardagsfeestje de post van vrijdag

De week afsluiten met een hoop stress. Dat moest er ooit eens van komen.
Maar eerst het begin van de week.
Deze week heb ik verder gewerkt aan de code om activiteit in Engagor binnen te halen.  De zogenaamde "feedprocessor" die Vimeo activiteit omzet naar het formaat dat Engagor gebruikt. Vorige week leek alles daar te werken en deze week is die code dus ook op de master in gemerged. Daarnaast heb ik deze week ook code geschreven om dagelijkse statistieken (aka Profile KPI's) bij te houden. Daarvoor werd er een aparte branch aangemaakt zodat ik aan die code kon werken los van de feedprocessor.
Voor insights is het de bedoeling dagelijks volgende KPI's van een Vimeo profiel bij te houden:
  • Het aantal volgers
  • Aantal mensen dat die persoon volgt
  • Aantal uploads
  • Aantal video's waar die persoon in getaged is
  • Totaal aantal video's geassocieerd met die persoon
  • Aantal albums
  • Aantal kanalen
  • Aantal groepen
Hiervoor ook natuurlijk weer een unit test geschreven en alles kwam mooi ingevult in de database terecht.
Maar het goede nieuws kan niet blijven duren.
Vandaag maakte Jurriaan mij er op attent dat mijn code nogal veel fouten raporteerde. Geƫindigd op een 25000 tal.
Wat bleek als de eerste pagina van activiteit die men opvroeg leeg was, werd dit niet opgevangen.  Mijn unit test had dit niet gedetecteerd omdat deze situatie niet voor kwam in de tests.
Toen ik dus mijn 2de account ( waar er geen activiteit op is) liep het dus mis. Omdat de eerste pagina direct leeg was werkte mijn voorspelling niet of er een volgende pagina was en bleven de errors dus komen dat er een lege pagina was opgevraagd.
Uiteindelijk is dat procces handmatig gestopt om te voorkomen dat de errors bleven komen.
De oplossing lag er in om een simpele = toe te voegen in de code.
Maar alles lijkt nu in orde te zijn dus ik kan met een min of meer gerust hart het weekend verwelkomen.

vrijdag 15 maart 2013

Let it snow

Op een prachtige dinsdag ochtend wakker worden in een witte wereld, het begin van een nachtmerrie voor de gemiddelde mens die naar zijn werk, of in mijn geval stage moet raken. Uiteindelijk viel het allemaal nog mee. Toen ik op de stage binnen kwam en de master binnen trok op mijn branch kwam er heel veel binnen. Er was een nieuwe feature toegevoegd, maar ook een aantal veranderingen voor het developpen zelf. De ochtend begon dus niet met code schrijven maar met aanpassingen maken, wachten op instructies om de code toch maar niet te breken en een paar nieuwe dingen installeren. De build scriptjes zijn nu ook aangepast en daardoor moet je nu niet meer compass heel de tijd op de achtergrond laten draaien om aanpassingen te detecteren.
Wat je moest installeren kon je vinden in een readme file maar omdat ik linux draai moest ik een paar stappen anders doen. Deze heb ik gevonden op de volgende url : http://www.stehem.net/2012/05/08/how-to-install-ruby-with-rbenv-on-ubuntu-12-04.html
Tijdens de rest van de week ben ik bezig geweest met de code te schrijven om de activiteit van een user op vimeo binnen te halen en om te zetten naar Engagor mentions. Momenteel werkt dit al en ben ik bezig aan optimalisatie om de snelheid op te voeren en zo veel mogelijk dubbele code te herwerken (DRY FTW)
Momenteel als ik het account van het witte huis binnenhaal zijn dit de resultaten
1st run : 52.423666000366 seconden
                 214 resultaten
                 91 calls
2nd run: 20.404885053635 seconden
                 54 resultaten
                 36 calls
Tot zo ver, back to writing code

Edit:
 na een kleine optimalisatie (bepaalde calls alleen doen bij een upload)
1st run : 34.525609970093 seconden
                 214 resultaten
                 49 calls
2nd run: 6.244863986969 seconden
                 54 resultaten
                 10 calls

vrijdag 8 maart 2013

En toen begon het pas echt

Zo het is alweer het einde van week 3
De tijd vliegt eigenlijk wel.  Deze week ben ik aan het implementeren van de Vimeo API zelf begonnen.  De functies schrijven die worden aangeroepen om data in Engagor binnen te halen, maar ook om commentaren te posten en video's te liken.  Hier heb ik ook unit tests voor moeten schrijven, yeey geautomatiseerd liken en unliken op iemand anders zijn video omdat je je eigen video niet kan liken. Commentaren kon ik alle geluk wel op mijn eigen video zetten.  De documentatie van de Vimeo API is langs de ene kant heel goed maar langs de andere kant ook weer teleurstellend. Welke parameters je allemaal moet meegeven, en ook de errorcodes die je kan terug krijgen zijn allemaal heel mooi gedocumenteerd.  Er is zelfs een "playground" waar je alle calls kan uitproberen.  Helaas is dat ook de enige manier om er achter te komen wat het antwoord allemaal kan bevatten.  Over het algemeen valt dat wel mee, maar voor velden zoals type bij activity zou het wel handig zijn moest je weten welke soorten er allemaal bestaan.  Ik had hiervoor een tweet gestuurd naar het twitter account voor vragen over de API maar daar was geen antwoord op gekomen.  Jurriaan had los daarvan ook nog een bericht gestuurd met de zelfde vraag. Hierop is wel antwoord gekomen.  Daarin zeiden ze dat de "playground" momenteel de beste optie was hiervoor en erkende ze dat hun response documentatie beter kon.
Daarnaast ben ik dan gisteren begonnen aan het echte werk. Nadat we op woensdag uitleg hadden gehad van Jurriaan begon dus het moment om de code te gaan schrijven die effectief de data van vimeo gaat binnenhalen en opnemen in Engagor.  Als voorbeeld hiervoor mogen we kijken hoe het wordt gedaan bij Facebook.  Op het eerste zicht is die code nogal overweldigend, dus dan komt het aan op stukje bij beetje de code door te nemen en op te bouwen.
Nog 1 ding, de server van Vimeo heeft zijn tijd niet op UTC staan... gevolg om te controleren of een bericht nieuw is moet er dus tijd worden omgevormd.

vrijdag 1 maart 2013

Einde van de 2de week

Zo dat was week 2...
De tijd gaat snel, zo snel dat ik het amper door had dat we al aan het einde van de 2de week zaten.
In week 1 heb ik eerst een voorbereidende opdracht moeten doen.
De opdracht die ik moest uitwerken was een interface maken voor het beheren van whitelabeling. Dit houdt in dat klanten enkele aanpassingen kunnen doen aan de look van Engagor.
Tot nu toe werd dit als een klant hier echt om vroeg rechtstreeks in de databank gedaan. Nu is dat dus rechtstreeks mogelijk vanuit Engagor bij de instellingen als je de benodigde rechten hebt.
Tijdens het werken aan deze opdracht ben ik ook in aanraking gekomen met caching via Memcache. Ik had hier in een project dat ik met vrienden doe al eens mee in aanraking gekomen. Het framework dat gebruikt wordt heeft ondersteuning voor memcache dus het is gewoon kwestie van de juiste methodes aan te roepen met de juiste parameters.
Tegen het einde van de week was deze voorbereidende opdracht af, en werd deze nieuwe feature gedeployed kon het wer aan de eigenlijke opdracht beginnen; het integreren van vimeo in Engagor.
Momenteel is de authenticatie afgewerkt. Dit is echter niet zonder slag of stoot gegaan. De basiscode die voorzien is, is bedoeld voor OAuth2, de meeste API's draaien daar ook op. Maar zoals met alles zijn er uitzonderingen waar regels zijn. Ondanks dat V2 voorkomt in de url bleek de API van vimeo nog steeds op OAuth1 te draaien. Dit verklaarde waarom het mij niet lukte om mijn account te authenticeren. Twitter zelf werkt ook nog met OAuth1 maar de code daarvoor is al een tijd geleden geschreven en er zijn ondertussen wel een aantal aanpassingen gebeurd aan hoe de code word opgebouwd. Dus de uitdaging was hierin om zo veel mogelijk van de huidige manier van werken te gebruiken en alleen waar nodig terug te vallen op code zoals die voor twitter wordt gebruikt.
Maar, het is nu vrijdag voormiddag en het werkt, iets waar ik toch wel blij om ben.

Tot zo ver de eerste 2 weken