donderdag 23 mei 2013

Het einde is nabij

In de laatste 2 weken van mijn stage heb ik issues opgelost omdat de stageopdracht klaar was. Als eerste kreeg ik als opdracht om een probleem met de kleuren in de charts op te lossen.
 Zoals je in de bovenstaande afbeelding kan zien kwamen kleuren niet overeen met een vast label. Dit maakte het moeilijk om de grafieken te gebruiken als vergelijkingsmateriaal als niet exact de zelfde labels aanwezig waren.
De oorzaak hiervan was dat er een array was met voorgedefinieerde kleuren. Door een kleur te skippen wanneer een label niet aanwezig is kon dit probleem eenvoudig worden opgelost.
Als 2de issue heb ik een kleine aanpassing aan de mail gemaakt die je krijgt als je nog geen account bij Engagor hebt en iemand je aan een account heeft toegevoegd.
Het wachtwoord wordt ingesteld de eerste keer dat je wilt inloggen met dat emailadres. Maar dit stond nog niet in de email vermeld waardoor dit soms verwarring veroorzaakte.
De 3de issue lag in de lijn van een stukje van mijn stage. Tijdens mijn stage heb ik een aantal custom dashboard components gemaakt voor vimeo. Bij insights is er een tabel waarin je voor een facebook account statistieken kan terug vinden over de wallposts voor die pagina. Hier was nog geen widget van en een klant had hier om gevraagd. De code hiervan staat wel nog niet live omdat Jurriaan nog ergens zelf een paar aanpassingen moet doen.
De 4de issue waar ik aan heb gewerkt was een nieuwe feature. In Engagor is er een kiosk voorzien. Dit is een pagina waarop standaard 2 pagina's worden ingeladen in een iframe dat om de zo veel tijd veranderd zodat je een mooi overzicht hebt over wat er gebeurd op je account. Per project was er zo een kiosk. Kiosks worden bv op evenementen gebruikt om te laten zien wat er op het sociale web allemaal gebeurd.
Mijn taak bestond er in om aan de instellingen een nieuw onderdeel toe te voegen waar gebruikers zelf een kiosk kunnen samenstellen met de pagina's waar zij geïnteresseerd in zijn. Ook kunnen ze het tijdsinterval tussen de verschillende pagina's kiezen, filters toepassen op elke specifieke pagina en kiezen uit een aantal layout opties. Het handigste van al is dat het nu niet meer project gebonden is waardoor je pagina's van verschillende projecten in één kiosk kan samen voegen.


dinsdag 7 mei 2013

Mission accomplished

Het integreren van een Vimeo account in Engagor is compleet.
Momenteel kunnen Engagor admins al Vimeo accounts toevoegen om te monitoren.
De afgelopen week heb ik mij bezig gehouden met het voorzien van de mogelijkheid om een bericht te liken of daar op te reageren. Ook de mogelijkheid om bericht te verwijderen van Engagor en/of Vimeo is in de afgelopen week toegevoegd.


Het eerste waar ik mee begonnen ben is de zogenaamde moderatie van mentions in Engagor. Engagor voorziet standaard 3 verschillende mogelijkheiden die je moet activeren naar gelang de service die ondersteund of niet.
Deze zijn:
  • Blockeren
  • Verbergen
  • Verwijderen

Bij Vimeo is het echter alleen mogelijk om reacties of video's te verwijderen dus worden de andere 2 niet geactiveerd.
Bij het verwijderen zijn er meerdere mogelijkheden. Zo kan je de mention alleen van Vimeo verwijderen, de mention alleen van Engagor verwijderen of de mention van allebei verwijderen. Een mention alleen van Engagor verwijderen of van allebij zit generiek in Engagor. Door een aantal dingen in te stellen werkt dit zonder dat je daar verder naar hoeft te kijken.
Voor de mention alleen op Vimeo te verwijderen moet je meer doen. Dit zit namelijk niet generiek in Engagor en dus moest er een een route worden toegevoegd aan de router.
De code hiervoor moest ik dus ook volledig uitschrijven. Heel belangrijk hierbij was te controleren of de gebruiker wel de benodigde rechten had om die mention te verwijderen.
Om video's en comments te kunnen verwijderen heb ik ook de rechten die de Vimeo api nodig heeft moeten aanpassen. Tot dit punt werkte de api alleen met schrijf en lees rechten maar dit is nu verhoogt naar schrijven, lezen en verwijderen.

Het reageren op en liken van mentions zit ook generiek in Engagor.
Hiervoor moesten dus ook weer eerst een aantal aanpassingen gemaakt worden aan de instellingen voor Vimeo.
Voor het plaatsen van de knopjes om te liken en reageren moet er steeds worden
gekeken naar wat voor soort mention het is. Je kan namelijk een comment niet liken bij Vimeo en je kan alleen reageren op een video of een reactie op een video.




Tot slot heb ik ook nog een aantal widgets gemaakt voor
de custom dashboards. Eerst lukte dit niet direct maar toen ik na wat extra uitleg door had dat deze widgets eigenlijk presets zijn van de chart builder ging het vrij vlot.



Tot slot heb ik ook nog een presentatie gemaakt om te tonen wat deze integratie nu effectief inhoud

dinsdag 23 april 2013

Crunching numbers


 De afgelopen dagen heb ik mij bezig gehouden met statistieken. Jurriaan had gevraagd om eens te kijken hoeveel moeite Engagor moet doen om de data van vimeo binnen te halen, wat de resultaten daar van zijn, hoe lang de verwerking duurt etc. Het heeft een aantal dagen geduurd om alle informatie te verzamelen en om te zetten naar bruikbare gegevens maar hier is het resultaat.

Logs

De bovenstaande tabel toont een aantal statistieken uit de logs gedurende één dag voor een druk account.
Een aantal punten vallen hier in op:
  1. Als er een paar extra calls zijn naar vimeo dan verhoogt de processtijd direct met enkele seconden. Het aantal extra seconden verschilt wel per keer. Hier wordt in de benchmark verder op in gegaan.
  2. Het aantal nieuwe resultaten staat ook op het eerste zicht niet in verband met het aantal requests. Hier is echter wel een reden voor. Bij het opvragen worden er minimum twee calls gedaan. Één voor de activiteit van het Vimeo account zelf en één voor de interactie van anderen met dat Vimeo account. Indien de laatste activiteit van de call recenter is als de laatste run zullen er calls worden gedaan tot alle activiteit is binnen gehaald sinds de laatste keer. Meestal zal het echter bij twee calls in totaal blijven. Deze activiteit word samen gestoken in één gemeenschappelijke feed.
    Hierna zullen er extra calls worden gedaan als er uploads of likes in de feed zitten omdat de megeleverde informatie over de videos niet voldoende is om een mention weer te geven. Tijdens het verwerken van deze feed zullen er indien nodig ook weer extra calls gebeuren om de ontbrekende likes en comments binnen te halen. Hierdoor zal het totaal aantal calls verschillen naar gelang welke activiteit er op het Vimeo account is geweest.
  3. De intervallen tussen de runs worden niet gerespecteerd tijdens de werkuren. Dit is echter geen toeval. In de classe Fetcher, die hier verantwoordelijk voor is, kunnen deze intervals worden verkort indien er bepaalde triggers zijn. Als een gebruiker inlogt op Engagor of er wordt een desktop notification weergegeven dan zal de tijd tussen deze runs anders worden berekend om te zorgen dat zo lang de gebruiker engagor heeft open staan deze steeds actuele informatie heeft.



De bovenstaande tabel toont een aantal statistieken uit de logs gedurende één dag voor een rustig account. De volgende punten vallen op in deze tabel:

  1. Ondanks dat er zo goed als geen nieuwe activiteit binnen komt wordt er toch regelmatig gecontroleerd. Dit om dezelfde reden als beschreven bij het drukke account.
  2. Er is een error geweest. De feed die werd terug gegeven was geen array. Dit is echter iets dat in andere logs ook sporadisch terug te vinden is. Na verder onderzoek blijkt dit om interne errors te gaan in de Vimeo API zelf waardoor er niets aan gedaan kan worden.
  3. Het aantal requests blijft bij dit account gedurende de hele dag gelijk. Dit is het gevolg van de weinige activiteit waardoor er maar een zeer beperkt aantal extra gegevens nodig zijn.

Detectie tijd

Voor een druk account bedraagt de gemiddelde tijd van een volledige dat tussen het posten op Vimeo en het verschijnen hiervan in Engagor 40 minuten. Splitsen we dit op naar tijdens de kantooruren (9 – 17 op de server is dit 7 – 15 door tijdzone) en daarbuiten dan bekomen we de volgende resultaten:
Tijdens de kantooruren: 19 min
Buiten de kantooruren: 52 min

Voor een rustig account bedraagt de gemiddelde tijd van een volledige dat tussen het posten op Vimeo en het verschijnen hiervan in Engagor 37 minuten. Splitsen we dit op naar tijdens de kantooruren (9 – 17 op de server is dit 7 – 15 door tijdzone) en daarbuiten dan bekomen we de volgende resultaten:
Tijdens de kantooruren: 16 min
Buiten de kantooruren: 48 min

Api tijd

De gemiddelde tijd per API call is 844.712 ms. Met als max 1166.667 ms en als min 666.667 ms.

Benchmarks

Bij de benchmarks is er een verschil gemaakt tussen een full run en een normal run. Het verschil hier tussen is dat bij een normal run er rekening wordt gehouden met wat er de vorige keer is binnen gekomen en hierdoor een aantal calls niet gemaakt zullen worden omdat die data al bekend is.
Bij beide worden dezelfde accounts gebruik.
  • Pulsefilmsltd is gekozen omdat deze een groot aantal recente videos in hun activiteit hebben staan.
  • Roberteddmovie is gekozen omdat een video van dit account overlaatst vermeld is geweest bij de “Staff Picks” op vimeo en hierdoor in de recente activiteit veel likes voorkomen.
  • Jelmertest is gekozen omdat dit account in de recente activiteit veel comments heeft ontvangen.

Full run



De bovenstaande tabel bevat de resultaten voor de full run benchmark.
De feed time blijft gedurende de verschillende runs rond dezelfde tijd schommelen in tegenstelling tot de ProcessWaitForApi. Dit is de tijd die nodig is om de calls te doen waarin de benodigde comments, likes en videos worden opgevraagd. Bij de 5de run is deze tijd opmerkelijk langer bij Jelmertest. Dit wordt veroorzaakt doordat op dat moment op 3 populaire videos is gereageerd door dat account en daardoor ook de benodigde data voor die videos opgevraagt moet worden. De hogere tijd is rechtstreeks het gevolg van de extra calls die nodig zijn om deze data binnen te halen..



Normal run



Het eerste verschil dat opvalt met een full run is dat er bijna nooit een processWaitForApi tijd is. Ook is er bij een normal run maar één keer een piek in run vijf. In run zes komt deze niet meer voor omdat hier rekening wordt gehouden met wat er al eerder is binnen gekomen. Dit is ook de reden achter het zo goed als ontbreken van processWaitForApi tijd. Het aantal requests is daardoor ook weer minder in de zesde run.
Verder kan je ook uit de grafiek opmaken dat hoe meer videos er in de feed zitten hoe langer de feedTime is. Dit komt doordat bij videos die in de activiteits feed zitten altijd extra info, en dus een extra call nodig hebben. Het zelfde geld voor likes die in deze feed zitten. Dit is echter minder makkelijk te onderscheiden omdat likes ook kunnen binnenkomen bij het verwerken van de feed in de feedprocessor.

vrijdag 12 april 2013

INSIGHTS WHOHO!

Na de mentions (de berichten) weergeven zitten nu ook de insights (de grafieken) er in. Deze week heb ik me volop gesmeten op het insights gedeelte. Persoonlijk vind ik dat 1 van de dingen die Engagor echt awesome maakt. De inbox is zeer handig om je berichten te combineren van verschillende sociale media maar met insights kan je uit al die data zeer handige grafieken en tabellen genereren.
Standaard zijn er een aantal die worden aangeboden maar je kan dat ook uitbreiden.
Ik heb 3 van die 'custom' insights toegevoegd voor Vimeo.
Maar ook de chart builder heb ik deze week gemaakt. Dagelijks worden er bepaalde gegevens over een profiel opgeslagen in de database. Dit worden KPI genoemd. de bovenstaande 'custom' insights worden aan de hand van die KPI gemaakt. Maar met de chart builder kan je je eigen grafieken generen. Voor de standaard dingen werkt dit allemaal maar voor de KPI moet je bepaalde instellingen configureren zodat de chart builder weet welke KPI er gebruikt moet worden voor welke request.
Zo kan je bijvoorbeeld een grafiek laten genereren die van de gewenste gemonitorde accounts het aantal fans/followers weergeeft

Het 'grappigste' moment van de week vond ik toch wel toen Engagor plots tijdens het laden van een pagina paars uitsloeg.
Dit kwam door een 404 die werd teruggeven door Embedly, een service die wordt gebruikt om video previews etc te geven.
De css van die 404 haalde heel Engagor overhoop.  Uiteindelijk bleek dat de call naar Embedly op die plaats niet nodig was en heb ik dat stukje code er uit gehaald.
No more purple Engagor

vrijdag 5 april 2013

Insights here I come

Deze week heb ik her en der kleine aanpassingen gemaakt aan mijn code, ben ik begonnen aan de code voor Insights en heb ik een aantal bugs gefixed.
De eerste bug die me was opgevallen was dat er een verschil was in hoe authenticated accounts en unauthenticated accounts werden opgeslagen. Bij de geauthenticeerde was de service_id de id van op vimeo en bij de rest was de service_id de username. Hierdoor werkten er een aantal dingen niet.
Na een aantal aanpassingen die wel iets uitmaakte maar niet het gewenste resultaat leverden.
Uiteindelijk bleek het aan een parameter in de connect functie te liggen. Er werd daar een request value mee gegeven in de plaats van de waarden die ik wou.
Na dit op te lossen werkte alles nadat ik de accounts opnieuw had gekoppeld.
Daarna had ik even het gevoel dat ik spoken aan het jagen was. Code die eerst werkte leek plots niet meer te werken. De description niet meer bij likes en uploads te staan
Het bleek uiteindelijk aan de regex te liggen. Deze was niet afgesteld op multiline en sommige descriptions waren dat wel. Na wat gezoek eens de string en de regex bij regexr ingevoerd ( http://gskinner.com/RegExr/ ) om uit te zoeken hoe het kwam, want in de string zat het wel en in het resultaat niet. Het probleem kunnen oplossen door aan de regex een 's' toe te voegen. Toen kwamen de descriptions weer mooi binnen.
Daarna ontdekte ik als je op iemand anders zijn video post dan geeft dit weer alsof je op jezelf post.
Dit kwam omdat mijn code gebaseerd was op alleen maar de activiteit op iemand zijn profiel te trakken
Na een kleine aanpassing in de feedprocessor (profile_id en profile_name) zou dit voor toekomstige mentions niet meer mogen voorvallen

dinsdag 2 april 2013

And the bad luck continuous

Na deze week hoop ik dat de back luck toch wel gedaan is.  Een mooi zonnetje zou ook handig meegenomen zijn.  Deze week 2 dagen van thuis uit gewerkt door omstandigheden. De eerste keer was het mijn fout, Om 9 uur op stage aankomen en ontdekken dat je de verkeerde adapter mee hebt... Meerdere laptops hebben heeft dus ook zijn nadelen. Dan de woensdag wel weer vlot kunnen werken.  We hebben met de 3 stagiairs samen gezeten (Lien, Stéphane en ik) om een presentatie te maken over hoe een bericht in Engagor wordt verwerkt.  Lien had de algemene flow in een note gezet waarna we de taakverdeling hebben gemaakt zodat elk een deel uitwerkt. Deze presentatie wordt gemaakt met Reveal.js. Deze week heb ik ook de contentformatter afgewerkt voor vimeo en daarbij ook een kleine aanpassing aan hoe youtube video thumbnails worden weergegeven.  De contentformatter is het deel code dat zal zorgen dat de data van een bericht die in de DB wordt opgeslagen juist wordt weergegeven.  Uit de contentformatter komt dus een stuk html die de mention bevat.  Donderdag op het einde van de dag ging het dan weer mis.  Met het dichtklappen van mijn laptop brak mijn scharnier.  Allegeluk heb ik de zelfde avond nog een vervang scharnier kunnen bestellen.  Het kapote scherm is dan ook de reden voor de 2de dag werken van thuis uit waar ik vooral aan de presentatie heb gewerkt.

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.