Som ni vet arbetar jag som vardags på ett dataföretag som programmerare/webbutvecklare. I jobbet har jag specialiserat mig på att sköta om vår hemsida samt utveckla webbsidor i PHP då det är det min spetskompetens ligger inom. Vid sidan av det jobbet har jag tagit mig an ytterligare några uppdrag för att designa hemsidor.
Mina webbprojekt
· IFK Falköping - kommunens näst bästa fotbollslag
Har nyss övergivit sidan jag har byggt upp för att gå över till ett alternativ som är integrerad i Svenska Fotbollförbundet. Jag hjälper till med bytet.
· David Svensson - Sexa på SM i triathlon
Hade en befintlig sida som jag har byggt ut och gjort lättare att uppdatera. Funktioner jag har infört är bl.a. gästbok, köp-och-säljsida och bilduppladdning.
· Mössebergsfestivalen - En musikfestival i Falköping
En vanlig webbsida, utan dynamiskt innehåll. Festivalen gör uppehåll i år eftersom deras initiativtagare och projektledare avled i början av året.
· Och sist men inte minst: Bänkvärmarna - mitt älskade korplag
Det här är min ögonsten som jag har lagt min själ i och genom att jag har gett det så mycket tid lagt grunderna för mina kunskaper inom webbdesign. Lenny har sagt att ”Allsvenska lag har inte så avancerade webbsidor”. Jag har fått alla i laget och många runtomkring att kika in på sidan och besöka den regelbundet. Några av funktionerna jag är mest stolt över är Anmälning till träningar, (Som tack vare bra användning och lätt gränssnitt gör att vi har stenkoll på vilka som kommer på varje träning), Tipstävlingar för cuper och serier, Taggning av bilder (liknande Facebooks), Nyhetslogg med det senaste som är uppdaterat på hemsidan (nu är webbsidan så dynamisk att det inte går att ha koll på allt som händer utan den här funktionen), Fanclub där våra supportrar kan registrera sig, ändra i en profil och visa sitt stöd för laget. Fancluben har nu över 50 medlemmar. Ganska bra för ett halvdassigt korplag?
Jag jobbar bara 75 % på WinLas och tanken är att övriga 25% ska gå till att jobba med de här projekten samt utveckla min kunskap inom webbdesign och PHP-programmering. De flesta av de här uppdragen är ideella och det är så jag vill se samhället. Dessutom har jag svårt att ta betalt för jobb jag utför, då det sätter en annan press på mig att verkligen prestera. Ideellt arbete är oftast roligare då det är kravlöst. Speciellt när det handlar om att bara göra en webbsida åt en person, förening eller organisation (som är mer en kul grej jämfört med andra typer av ideellt arbete). För mig är det viktigare att lära mig och utvecklas som webbprogrammerare på ett roligt sätt än att tjäna mycket pengar.
Alla dessa projekt känns dock relativt klara nu. IFK Falköping får jag mindre ansvar för nu när ”min” sida överges, Davids sida har jag byggt upp en grund på efter bästa förmåga. Hans vidare förslag till att bygga ut sidan anser jag vara mjuka krav och inget jag prioriterar för tillfället. Mössebergsfestivalen har som sagt gjort en paus i år och är ändå inget som jag lägger mer än någon timme i månaden på. Bänkvärmarna har jag lagt lite för mycket tid på ibland. Men nu känns sidan stabil och det finns egentligen inte mycket fler funktioner jag behöver införa på sidan.
Varför Facebook?
Istället för att lägga mer tid på något av det här känner jag att jag vill nå ut med något nytt och en utmaning som jag då vill ge mig på är att skapa en applikation på Facebook. Där kan man lätt nå ut till en stor mängd användare. Det går att använda Facebooks användardatabas med personuppgifter för att validera inloggning samt hålla ordning på rekord/uppgifter i applikationen. Jag vet att jag har kunskaper inom programmering som kan användas till i stort sett vad som helst som kan göras som en webbaserad tjänst. Det är svårare att komma på en riktigt bra idé som jag vill satsa på än att utföra själva programmeringen.
Jag hade några förslag som jag funderade på att starta upp som Facebook-applikationer. Jag har några favoritapplikationer på Facebook som jag gärna gör en egen version av. Jag kan dock ännu inte Flash-programmering, så ett nytt Farmville var inte aktuellt. Jag ville ha en vanlig webbaserad sida som m h a JavaScript och AJAX kan utvecklas till ett dynamiskt spel.
Mitt första projekt
Idén jag beslutade mig för att gå vidare med som första projekt kom ifrån min flickvän, Cailyn, och är en typ av quiz där man ska skriva upp så många objekt man kan i en delmängd inom en given tidsram. Exempel kan vara alla huvudstäder i Europa inom 6 minuter, alla svenska landskap på 3 minuter eller, något lättare, alla Snövits dvärgar på 30 sekunder. Det går lätt att variera svårighetsgraden mellan olika quiz genom att ändra antalet objekt och tiden. Spelet är också lärorikt då användaren efter att ha gjort en quiz får facit och sedan kan göra om den och på så sätt repetera och lära sig ny kunskap. Framförallt testas spelarens minne och stavning, första versionen har inga förlåtande drag utan objekten måste stavas exakt på samma sätt som frågeinmataren har gjort dem.
Själva spelet gick ganska snabbt att sätta upp. Jag ”tog inspiration” från en sida Cailyn visade mig, förbättrade spelmotorn och framförallt grafiken och användarvänligheten runt omkring. Sedan är jag ganska skicklig på att skapa dynamiskt innehåll ifrån en statisk hemsida. Quizet Cailyn visade mig var endast ett spel där man skulle skriva samtliga FNs medlemsstater på 10 minuter. Jag gjorde sidan dynamisk så frågan och objekten hämtas ifrån en databas. Det går därefter snabbt att skapa egna quiz om vad som helst. Det största jobbet bestod sedan i integrera hela spelet i Facebook.
Just som jag börjat med integrationen såg jag dock att det redan fanns ett spel som heter Sporcle med samma idé. Jag lät mig dock inte nedslås utan fortsätter med min egen version. När det finns 10 olika varianter av Farmville kan det väl finnas 2 versioner av det här quizet? Jag har några idéer på att förbättra spelet med highscorelistor, utmana vänner etc. Men största skillnaden är att spelet är på svenska. När ett spel till stor del handlar om att stava rätt är det stor skillnad att låta spelaren skriva på engelska jämfört med svenska. Publiken blir inte lika stor, men applikationen blir förhoppningsvis mer uppskattad av mina vänner och generellt i Sverige.
Problem vid Facebook-integrationen
Jag stötte på tre stora problem när jag skulle starta själva integrationen till Facebook. Spelet fungerade och låg stabilt på min server men när den hamnar på Facebook finns det några grundläggande HTML-funktioner som webbutvecklaren inte längre har kontroll över.
· Teckenuppsättningen måste vara UTF-8
· Vanliga länkar fungerar inte som vanligt då man måste transportera sessionsdata
· Facebook-connect måste vara installerat för att man ska kunna kommunicera med vanliga Facebook-funktioner.
Teckenuppsättningen vållade mig ganska stora problem. Jag är van vid att arbeta med västeuropeiska charsetet ISO-8859-6, men Facebook använder utf-8. För att inte namnuppgifter som innehåller å, ä eller ö ska se konstiga ut var jag tvungen att konvertera min sida till utf-8. Svårigheten här låg i att mycket av applikationen handlar om strängjämförelser i själva spelet. Jag försökte dessutom kryptera objekten så att de inte skulle gå att snappa upp via källkoden. Krypteringen löste jag genom ordinal-värden. Detta fungerade med västeuropeiskt charset men inte med utf-8. Jag försökte tre olika tillvägagångssätt: Ordinalvärden, utbyte via array och Bin2Hex kod, men å,ä,ö ville inte fungera, så nu har jag efter mycket frustration lagt det på is och har svaren okrypterade, likt spelet jag hämtade inspiration ifrån.
Facebooks inloggningssystem är säkert och stabilt och det är väldigt skönt att man slipper ta hand om det själv. Men det innehåller också mycket overhead. För att kontrollera att en användare är inloggad används ett sessions-id som Facebook skickar med som parameter till applikationen. Jag har valt att göra min applikation som en IFRAME-app, vilket innebär att jag bara kan bädda in spelet i Facebooks ramverk utan att tänka på begränsningar i koden. I det alternativet kommer sessions-id som en parameter i själva iframen-adressen när fönstret öppnas. För att få med identifieraren varje gång måste jag när jag byter sida öppna hela Facebook-fönstret på nytt, vilket gör att applikationen känns ganska långsam. Alternativen är att få med sessionsvariablerna via cookies eller via en permanent nyckel. Men det verkar för komplicerat att göra när jag inte hittat några konkreta kodexempel för de lösningarna.
Ett problem jag brottades länge med var hur man använder vanliga Facebook-funktioner som inbjudningar, notifikationer och feed-postningar ifrån en IFRAME-applikation. Svaret var att man ansluter sin applikation till Facebook-connect, en funktion som också kan anropas från externa webbsidor (t.ex. gör Winlas.se det för att hämta sidans Feed till externa hemsidan). Connect består av JavaScript som anropar på något sätt till Facebooks servrar. Då det är ett ganska tungt skript saktar det ner min sida, som redan har mycket JavaScript i sig. Om quizen dröjer några sekunder med att starta beror det på att anropet till Facebook-Connect tar tid.
Att namne applikationen
Namnet till spelet kom till mig direkt. Jag hade pratat med min flickvän om hennes matematikläxa precis innan och mitt sätt att lösa matematiska problemen är att göra ekvationer av dem, sätta in X och Y som variabler för de obekanta. Det tänket hade jag när jag skulle bestämma namn åt min applikation. Grundidén på spelet är att man ska välja ut massa objekt ur en delmäng och att man har en viss tid på sig. Omskrivet till matematiskt språk blir det:
X = Objekt ur en delmängd
Y = Tidsgräns för quizen
Man ska skriva X objekt på Y minuter. Eller på engelska X in Y. Hopskrivet blir det XinY! Ett beskrivande, unikt namn på min applikation, som duger gott åt ett spel som hittills bara ses som ett testprojekt för att jag ska lära mig att programmera mot gränssnittet till Facebook.