RSS Feed!

About me

I am a business intelligence developer working at Bizware since August 2015. In this blog I will present code samples, primarilly in tsql but also findings in all other parts of the Microsoft BI-stack.


Disclaimer: All code should be considered as "as-is", i.e. badly tested and not working until extensive testing have been made by anyone reading the code. :)


Happy coding!

Archive for the ‘Start-up’ Category

Kursbetyg.se – Recensera och granska utbildningar på högskolor

Friday, February 5th, 2010

Kursbetyg

Nu öppnar jag upp mitt senaste projekt för allmänheten, kursbetyg.se!

Sajten är till för dig som tänker läsa eller har läst en kurs på ett universitet eller en högskola.

Du kan bland annat sortera utbildningarna inom ett ämnesområde på flera olika kriterier, däribland svårighetsgrad, litteratur, examination samt kvalité och studentinflytande.

Har du några idéer om förbättringar eller finns det buggar som stör dig, kontakta mig gärna genom att kommentera detta blogginlägg.

Du får självklart vara med och bidra, klicka här för att gå direkt till recensionssidan.
/Robin

Nytt år – nytt projekt

Friday, January 15th, 2010

Jag har precis blivit klar med första delen av mitt nya projekt, en ny nischad recensionssajt!

Det har gått avsevärt mycket fortare än supportbetyg, tack vare den objektorienterade designen av just supportbetyg. Jag har allt som allt spenderat 10-15 timmar på det nya projektet, men mer tid kommer det troligen att bli.

Det som återstår är att bygga upp en enkel administration med hjälp av tablegear, samt att testa på CSS-ramverket 960gs!

Om några veckor eller så, då är det premiär!

Admingränssnitt – att vara eller icke vara?

Sunday, November 29th, 2009

Jag funderade nyligen på det här med användargränssnitt för en publik webbtjänst, är det verkligen alltid nödvändigt att ha i bakgrunden?

Mina funderingar började när jag tittade tillbaka på hur tidsåtgången såg ut för utvecklandet av supportbetyg.se:

Total tid 100% (ca 200-300 h kodning)

  • 25% Grundkodning på front-end (Databas, php, affärslogik, MVC-mönster, funktionsfix)
  • 40% Finkodning på front-end (css, fixa småbuggar, jQuery-fix m.m.)
  • 25% Grundkodning på back-end/admin (Databas, php, affärslogik, MVC-mönster, funktionsfix)
  • 5% Finkodning på back-end/admin (css och största bugfixarna)
  • 5% annat, okategoriserat (SEO bl.a.)

Det var mycket svårt attuppskatta tiden det skulle ta att bli klar med sajten, främst genom önskedrömmar kanske?

Under en-två månaders tid sa jag att 90% var klart, tyvärr visade sig det att dessa 10% var ungefär lika stora som de första 90%. Lessons learned: När 90% är “klart”, återstår 90%!

För att återkoppla till utvecklingstiden, så gick ca 32,5% till att koda administrationsgränssnittet och göra iordning back-end funktioner.

32,5% eller ca 1/3 av tiden var ca 75-100 timmar av slit. Nu när sajten är igång och rullar, så använder jag ungefär 10% av alla de funktioner jag har gjort iordning. Överlag godkänner jag kommentarer och recensioner som folk har gjort, jag har skrivit lite bloginlägg samt faq, det är i princip allt.

I slutet av uppstarten la jag även in grundläggande info, kategorier, översiktskategorier samt företag. Jag la ner ca 6-7 h för att lägga in info.

Om jag istället hade valt att göra detta i phpmyadmin, skulle jag alltså tjänat in 2 och en halv heltidsarbetsveckor, eller en månads utvecklingstid (då jag pluggar samtidigt).

Varför kodade jag då ett admin-gui?

Genom lite självkritik inser jag att jag skrev detta mest för att det är så “man” ska göra! “En sajt utan admingränssnitt är inget alternativ”, “Det blir lättare att grafiskt få en överblick”, “Det är coolt” var nog saker jag tänkte på. Samtidigt så lär man sig att ett admin-GUI är en självklarhet, men ingen reflekterar om/när det behövs.

Fundera därför en extra gång när du utvecklar en publik webbtjänst från scratch, behövs verkligen ett admin-GUI? Jag tror att mycket tid går åt till detta, man gör allt mycket mer komplicerat än vad det behöver vara. Fråga dig därför om du inte kan göra samma sak direkt i databasen, utan mellanhänder, då sparar du tid och kan lansera din sajt fortare.

För att återkoppla till MISSILE: Kan jag skippa att koda detta utan att sajtens kvalité minskar?
För min del denna gång är svaret ett solklart ja.

En annan bra kontrollfråga att ställa sig:

Hur många funktioner behöver du, och hur komplicerade är dessa?
Jag har cirka 7-8 st SUDI:s (SELECT, UPDATE, DELETE, INSERT) för varje enhet i databasen, vilket gör att jag skrev 25-32 st olika funktioner, varav alla kunde enkelt göras i phpMyAdmin..

Slutsats: Det är lätt att vara efterklok..

Få en Google Wave invite gratis!

Saturday, November 28th, 2009

Google Wave Logo

Jag har kommit över några invites till Google Wave, den nya kollaborationsplattformen!

För att göra det hela lite mer spännande har jag beslutat att skapa en enkel liten tävling, där sju stycken lyckliga vinner en google wave här!

Det är enkelt att vinna, det enda du behöver göra är att skriva en recension om ett ärende du har haft hos ett företag på min nya sajt, supportbetyg.se!

Bedömning och regler

  • Tävlingen avslutas om ca 2 veckor, dvs den 12:e december
  • Det är ett extra + om recensionen är välskriven, välvårdad och intressant!
  • Det är ytterligare ett extra + om du får dina vänner att skriva en recension om ett kundtjänstärende eller om ett företags generella kundbemötande!
  • När du har gjort ditt inlägg, skriv in din mejl och namn (ska vara samma som det du skrev in på supportbetyg.se) i en kommentar till denna bloggpost, så är du officiellt med i tävlingen! Om du har fått med dig dina vänner, skriv deras namn här också!

Så för att vinna: Skriv en bra recension och för ett extra plus i kanten; få dina vänner att skriva en recension!

Lycka till!

MISSILE-modellens stöd vid kodandet av supportbetyg.se

Thursday, November 12th, 2009

Nu när jag har släppt en BETA-version av supportbetyg.se kan jag sammanfatta hur MISSILE-modellen hjälpte mig i byggfasen.

Lessons learned – Checklistan

Checklistan av MISSILE (som du kan läsa mer om här) var den del som jag hade mest nytta av, då jag nu är i lanseringsfasen av sajten.

Fråga 1: Kan det finnas något behov av webbtjänsten?

Denna fråga var antagligen något som dök upp i mitt huvud under mitten av sommaren, jag hade stora problem med avstängning av ett bredbandsabonemang och öppnandet av ett nytt av ett annat bolag. Jag var frustrerad och sur över den inkompetens som båda företagens supporter innehade. När jag snackade med vänner så hade de haft liknande erfarenheter, och jag kände att jag skulle vilja få utlopp och “skriva av mig”, så jag vände mig såklart till internet.

Det finns, grovt räknat, två webbsajter som tillhandahåller liknande tjänster kring recensioner och ytterligare tjänster som har recensionstjänst som ett tillval utöver sin kärnprodukt. Däremot fanns det ingen sajt som specifikt visade på hur ett företags support rankades gentemot andra liknande företag. Det fanns ingen statistik över detta heller.

Idén om en webbtjänst som tillhandahöll statistik, var enkel att använda och recensera, drömdes ihop.

Fråga 2: Hur snabbt kan du utveckla din idé, från behov till en lansering av prototypen?

Som tidigare sagts startade idén i huvudet på mig i mitten av sommaren. Jag kom igång ganska snabbt med att försöka förstå mig på cakePhP, men detta ramverk var alldeles för stort att lära sig, även om jag gillade MVC-mönstret skarpt. Jag kom igång på riktigt med kodningen i början av augusti och var klar till början av november, dvs ca 3 månader. Tiden som jag la ner på byggfasen var ca 200 timmar eller 5 veckors arbetstid. Detta gjordes såklart vid sidan om stuider och arbete.

Fråga 3: Kan du använda någon sorts ramverk eller färdigskrivna bibliotek för att snabba upp utvecklingsprocessen?

Genom det teoretiska stödet i MISSILE förordnade vi ramverk och färdigskrivna bibliotek för att snabba upp utvecklingsprocessen. Efter en del letande bestämde jag mig för att testa att bygga webbappen i cakePhP, men kom snabbt på att detta inte passade mig. Så jag utvecklade mitt egna ramverk byggt på ModelViewController-mönstret. Detta var ofta ganska frustrerande att bygga upp och förstå, men nu när allt är färdigt är jag glad att jag byggde det.

Ett annat bibliotek som jag använde var jQuery. Jag hade väldigt liten erfarenhet av jQuery sen innan, men det visade sig att det var ett mycket enkelt system för att få fram bra effekter. Något jag gillar är att man kan nästla olika selectors så att events kan ske, även om jag inte har gjort det så mycket på supportbetyg.se

Fråga 4: Hur kan webbtjänsten integreras med andra webbtjänster?

Supportbetyg.se kan inte integreras med andra webbtjänster just för tillfället. Detta för att för få använder tjänsten just nu. Denna fråga går just nu i antagoni mot affärsvärdes-principen, som jag skriver lite mer om nedan.

Fråga 5: Vilken sorts publik webbtjänst tänker du lansera?

Denna publika webbtjänst riktar sig till alla som någon gång kommit i kontakt med en supportavdelning hos ett stort företag i Sverige. Den är inget tekniskt underverk och kan därför inte marknadsföras selektivt.

Fråga 6: Skapar aktiviteten i utvecklingsprojektet affärsvärde?

Denna fråga är mycket intressant, och antagligen den viktigaste. Något som jag märkte när jag kodade var avvägningen om vad som behövs och vad som inte behövs, dvs vad ger kunden värde?

Frågan fick en annan form under utvecklingstiden: Kan jag skippa att koda detta utan att sajtens kvalité minskar?

Bland annat har jag inte lagt ner någon stor del av tiden på att validera koden. Hur många användare tittar på om sajten är validerad, den siffran lär vara under 1%, så så länge kvalitén på sidan är god så brydde jag mig inte om att validera.

IE6-testning och IE6-optimering. Ungefär 20% av alla webbläsare är IE6, men 80% är det inte, IE6 kommer att fasas ut mer och mer under nästa år och det känns onödigt att anpassa sajten och använda tid till detta.

Integration med facebook connect. Detta var en idé jag hade, att folk skulle logga in med sina facebook-konton istället för att skriva anonymt. Problemet, eller rättare sagt verkligheten, är att folk är mycket lata. Om alla användare måste logga in för att skriva kommentarer och recensioner kommer sajten inte organiskt att växa lika snabbt.

Dessa frågor har hjälpt mig oerhört till att snabba upp bygget och fokusera på det som är viktigt. Nästa steg blir att lansera sajten, vilket är mycket svårare än själva byggandet.

Supportbetyg.se

Sunday, November 8th, 2009

Hej!

Nu lanserar jag supportbetyg.se, sajten där du kan recensera kundbemötande!

Sajten är till för dig som vill berömma eller fördöma det bemötande du har fått av svenska företag. Sajten är fortfarande i BETA-stadiet, men är 100% funktionell!

Klicka på bilden för att komma till supportbetyg.se:

supportbetyg.se

Eget projekt #2

Tuesday, September 29th, 2009

Arbetet med att få igång administrationen av sajten är på g. Sessionshanteringen har varit lite svårare än vanligt, den följer inte med som den ska för tillfället.

Däremot har jag börjat att få ordning på lite jQuery-funktioner som tidigare strulade, bland annat star-rating-pluginet som inte ville visa sig ordentligt. Jag kan tyvärr inte skicka eller visa halva stjärnor (Meta-data), men hoppas att jag snart kan förstå mera hur man gör.

Administrationen av användarnas inlägg börjar nu också ta fart, det blir en enkel variant för tillfället, får se om jag bygger ut den senare…

Jag siktar på att vara klar om ca 1-2 månader, beroende på hur mycket pluggande som är på g.

Eget projekt #1

Wednesday, September 16th, 2009

Mitt egenutvecklade sajt går långsamt frammåt, men det är svårare än vad jag först trodde att bara sitta ned och arbeta åtta timmar i sträck. Dessutom är det ibland svårrt att få det att gå ihop med skola och livet runtomkring. Samtidigt känner jag att jag har fått mer koll på hur objektorienterad programmering fungerar i praktiken. Något av det speciella med php-programmeringen är användningen av (referens)variabeln $this. $this används mycket ofta för att “binda ihop” olika objekt med varandra, vilket betyder att det används hela tiden.

En bra guide till grundlöggande oo-programmering finns här, som även förklarar magin bakom $this.

Nåväl, mitt eget projekt börjar ta form. Jag är klar med den grundläggande affärslogiken bakom användar-GUI:t och ca 60% klar med jQuery-effekter och 90% med CSS. Det finns fortfarande lite problem med jQuery-star-rating-plugin:et när endast en stjärna av fem ska visas samt hur man visar metadata på ett snyggt sätt.

När det gäller admin-gränssnittet så kommer det ha liknande form som användar-GUI:t och kommer att användas av mig till att godkänna användarinlägg.

Jag har börjat experimentera en hel del med jQuery för att få fram vissa användarvänliga effekter. jQuery skiljer sig mycket mot pHp-kodning eftersom de har helt olika användningsområden, även om de finns överlappande sektioner. Det tog ett tag till att förstå syntax och mönster bakom jQuery, tur att det finns många bra guider.

Nästa steg i projektet:

Jag inser ibland att det är lönlöst att fortsätta om man sitter fast, oftast löser sig problemet av sig självt när hjärnan går in och få fundera själv. Nästa steg blir då att bygga upp admin-GUI:t och låta det andra vila.

MISSILE del 3: Checklista

Saturday, September 12th, 2009

Detta är den sista delen i artikelserien om MISSILE, har du missat de två första?
Del 1: Bakgrund
Del 2: Innehåll

Checklistan är till för att se över vad projektgruppen behöver ta ställning till. Dessa liknar de delar som gör MISSILE, men sätter viktiga frågor i fokus på ett helt annat sätt.

Kan det finnas något behov av webbtjänsten?

Detta är den första frågan som man bör ställa sig. Behovsfrågan kan man ta reda på genom att googla sin idé. Finns det ingen webbtjänst, kan man ha större chans till framgång, om någon nu vill använda tjänsten. Fördelen med en konkurrent på marknaden är att man då vet att behovet redan finns. Finns konkurrenten behöver man ”bara” skapa en bättre produkt. Chansen minskar att tjäna mycket pengar, men det gör även risken att misslyckas att nå ut till användarna, då behovet redan finns.

Hur snabbt kan du utveckla din idé, från behov till en lansering av prototypen?

Hastigheten mellan idé och lansering är mycket viktig, då webbutveckling som område går otroligt snabbt framåt på nya innovativa sätt att utveckla. Finns det inte tillräckligt med tid
eller kunskap kan projektet bli försenat. Skillnaden mellan ett traditionellt industriellt branschområde och webbutveckling är enorm när det gäller vad som är tekniskt möjligt. Har du inte tiden, fundera på att lägga ut det på någon som har den.

Kan du använda någon sorts ramverk eller färdigskrivna bibliotek för att snabba upp
utvecklingsprocessen?

Ramverk och färdigskrivna bibliotek kan snabba upp utvecklingsprocessen snabbt, då man får en fungerande plattform att stå på. Vid tekniskt elegant kod (läs: komplexa publika webbtjänster) kan dock bibliotek sakta ner laddningstiden för användaren, vilket då kan skada webbtjänstens anseende. Ha alltså i åtanke att remverk kan vara besvärliga att konfigurera
och kan sätta käppar i hjulen vid större projekt. Om applikationen är av en större karaktär rekommenderas därför en egenutvecklad kodbas.
Eftersom ramverk snabbt utvecklas har den akademiska världen inte publicerat något betydande forsknings material i frågan, även om stöd finns kring fördelarna vid objektorienterad systemutveckling.

Hur kan webbtjänsten integreras med andra webbtjänster?

Integrationsmöjligheter med andra redan existerande webbtjänster ökar chansen för att användaren använder webbtjänsten genom att redan existerande webbtjänster har användare.
Flera exempel på detta finns, bland annat facebook connect, openID samt myspaceID. Alla dessa gör att användaren inte behöver registrera sig, utan använda en redan tidigare använt ID, vilket gör att chansen att användaren testar applikationen ökar.

Vilken sorts publik webbtjänst tänker du lansera?

Denna frågar går hand i hand med behovs-frågan, och borde tas med en nypa salt, då den ”riktiga” användaren ibland inte passar in i den definition man har i åtanke. Använd inte en målgruppsanalys traditionella segmentering, använd mer generella termer såsom ”Folk som är intresserade av…”
Detta kan ge återverkningar på marknadsföringen av tjänsten. Genomslaget för exempelvis marknadsföring via sociala medier slår inte lika hårt mot ex. Svampplockare än mot it-intresserade, då svampplockare (generellt) har sämre koll på twitter då det tilltalar äldre människor mer än yngre. Använd mejl samt olika nätforum för mat (och svamp).

Skapar aktiviteten i utvecklingsprojektet affärsvärde?

För att inte ödsla tid behövs en framförhållning till lanseringen genom att hela tiden fundera på om en aktivitet som görs skapar mer värde än vad som behövs för att utföra denna. Ett
exempel på tidskrävande aktiviteter kan exempelvis vara dokumentation, men här kan även webbtjänstens funktionalitet, kontakter med reklambyråer m.m. inkluderas. Vad som ger
affärsvärde beror på lansering, utveckling, storlek på projektgrupper m.m.

MISSILE del 2: Innehåll

Saturday, September 12th, 2009

Detta är del två av tre inom artikelserien om MISSILE, här hittar du del ett och tre:
Del 1: Bakgrund
Del 3: Checklista

MISSILE står för Marknadsföring, Integration, Snack, Snabbhet, Interaktion, Lock-In samt Enkelhet (Marketing, Interactivity, Speed, Speak-ups, Integration, Lock-In and Essentials). MISSILE är både en akronym men även en metafor för sättet du behöver arbeta på. En missil är en snabb projektil som är till för att träffa ett mål, ditt mål, din framgång. Fas som du nog vet träffar inte alla missiler sitt mål, då är det bara att ladda en ny missil (projekt). Snabbheten att få iväg missilen och snabbheten att snabbt ladda om och använda en ny missil är av viktig karaktär för modellen.

Marknadsföring

Eftersom du inte har någon kund eller för den delen användare, måste du sälja in din sajt till eventuella användare. Det finns många sätt att göra detta på, bland annat genom att använda sociala medier. Att använda sociala medier (bloggar, twitter m.m.) är gratis. Använd dina vänner och tipsa andra bloggare och blogglistor om din sajt och din tjänst.

Interaktivitet

En självklar del i denna mix är interaktiviteten. För att väcka intresse behöver din sajt vara dynamisk (läs: web 2.0). Du kan inte få en statisk webbsida att bli intressant, något måste hända på den. Ditt material kan antingen vara användargenererat eller en blandning av egna bidrag och användargenererat material. Interaktiviteten ökar desto fler som använder din tjänst.

Snack

Snack är en ganska konstig term som vi använder. Snack kan enkelt översättas med den mer tillrättarevisade speak-ups och är nära länkat med marknadsföringen. En annan närliggande synonym är det engelska ordet hype. Det gäller alltså att få folk att tala om din produkt/tjänst. Marknadsföring är till för att få användarna att veta om din sajt, men snacket kommer först efter att de har varit inne på din sajt och bedömt den som användbar.

Snabbhet

Som tidigare har sagts, behöver du vara snabb i utförandet av ditt missile-projekt. Det går inte att vänta på att realisera idén, för förr eller senare kommer någon annan med ett liknande bidrag till nätet. Vi går tillbaka till metaforen om rallybilen. Rallybilen (MISSILE) står tillsammans med två långtradare (RUP och vattenfallsmodellen), båda kategorierna är bra till olika projekt. Kunden har lagt asfalt som långtradarna kan köra på (finansiering) men det finns ingen kund på grusvägarna i skogen. Internet-skogen är full av gupp, hopp, svängar och vattenpölar. Att långtradarna ska köra på dessa vägar och snabbt komma fram till mål (lönsamhet) är svårare än med rallybilen. Du måste manövrera snabbt och veta när man ska svänga för att hålla uppe hastigheten.

Integration

Dagens publika webbtjänster använder ofta tredjepartsmaterial för att ge mervärde åt kunderna. Hur kan du ge medvärde till dina kunder? Google, facebook, sökmotorer och prisjämförelsesajter skulle inte vara något alls om de inte litade på användar- företags-/ och butiksgenererat material. Att integrera ytterligare med olika sorters API är även det att föredra. Lägg även ut addthis eller sharethis-knappar för att öka antalet användare.

Lock-In

Kan du få dina användaren att återvända till dina sajter? Kan du integrera och bidra till att hålla din användare nöjd? Då har du kommit långt för att få en trogen användarskara. Desto trognare och desto bättre lock-in-incitament du har, desto bättre Snack får du och därmed bättre marknadsföring mot nya användare.

Enkelhet

Du ska inte bygga ett affärssystem, kom ihåg att hålla det enkelt: KISS (Keep It Simple Stupid). Enkelt och essentielt ska det vara, fokusera endast på kärnupplevelsen och gör inga hafsiga försök att få med ”allt”. Ibland är det bättre att ha mindre antal ”saker” på sin sida. Se exempelvis sökmotorbranschen, mellan msn search (numer bing), yahoo samt google. MSN har massor av diversifierade tjänster på samma sajt, yahoo har några stycken och google… inga, i princip. Google har 5 attraktionsobjekt: logon, sökfältet, knapparna, texten under, och texten överst. Mer behövs inte. Kom ihåg att du har bara några sekunder på dig att övertala användaren att testa din tjänst.

MISSILE I praktiken:

För att förstå bättre hur delarna sitter ihop, kan denna bild användas för att förstå sambanden: