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 November, 2009

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!

Solution to “Cannot modify header information – headers already sent”

Sunday, November 15th, 2009

Hi!

This problem seems to occur on a frequently acting basis, so I’ll try to make a summary of the several solutions you can find on the net here:

Solution nr 1: Trim whitespaces near your start-tag in php, so it looks like this:

session_start();
/* After trimming whitespace, write out your header and the rest of your code */

Solution nr 2: header() is coming after require/include

session_start();
/* Try to make requires/includes compile after header */
header("Location: http://www.yoursite.com/mypage.php");

include("helperClass.php");
//code here

3. Or the pandoras box-solution: change the coding of the current file from UTF-8!
Sometimes (I don’t know for what reason) apache can’t read UTF-8 properly and think of the start-tag as other characters.

/*
#1: Open your file in a text editor (i recommend notepad++ or notepad)
#2: Change the coding of the file from UTF-8 to ANSI.
#3: Save and upload it to the server again.
*/

That’s summarises the top 3 solutions for this type of problem. There’s probably more solutions, but in order to find them, you need to dig deep into the search engines.

Google Go samt Googles SPDY

Sunday, November 15th, 2009

Google är helt otroligt grymma på att producera nya fräcka webbapplikationer, men nu även programmeringsspråk och internetprotokoll. Jag blir helt ställd av hur snabbt och med den glödande intensitet som Google kör över gamla hinder. Frågan är dock om företaget inte har uppnått någon slags hybris nu, de senaste är att de nu utvecklar ett nytt internetprotokoll, SPDY (för SPeeDy) och ska snabba upp webben. Frågorna är många, och rykterna dessvärre fler.

Däremot blir det ett nytt programmeringsspråk, tydligen rätt likt C och Python

Vilket företag vågar bryta barriärerna såsom Google? Ingen vågar, inte ens den fallande giganten Microsoft..

Mera maktmissbruk från Google? Kanske. Jag ställer mig skeptisk till Googles dominans inom snart alla områden, men också förundrad över den virtuella skördetröska som Sergey och Co kör över internetfälten efter innovativa företag. Det är inte bara det att företagen har gjort bra produkter, de är också innovatörer och det är i en sån miljö programmeringsspråk och internetprotokoll föds.

Min förundrande fascination och skeptiskhet mot Google fortsätter, men credd ska dom ha för deras tappra försök..

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

A newbie guide to understanding the basics about .htaccess and mod_rewrite

Sunday, November 8th, 2009

Hi!

This will be my first post in english at my blog! Yay!

Anyways, after stumble accross the net for some good guides and info about .htaccess and mod_rewrite I finally found some good sorces for info.

So what is mod_rewrite and .htaccess?

mod_rewrite is a configuration you can do in your httpd.conf file, the configuration tells the server what to activate and deactivate. If you enable mod_rewrite, you could set a lot of configuration options when it comes to how the client “reads” your domain. In 99% of the cases of the default settings, this is on. If your server is local, it will be off.

To turn it on, you need to find mod_rewrite and sometimes you need to find it twice in httpd.conf, it all depends what kind of settings you have.

How to enable it

A tip is to use the search function in wordpad or some other text editor to find the correct line of code. In wordpad, notepad or open office – use CTRL + F in httpd.conf.

When you find it, it looks like this:

#LoadModule rewrite_module modules/mod_rewrite.so

Throw away the #, and restart your server.

If you’ve done this, create a file named “servertest.php” and write and scroll down to mod_rewrite (CTRL+F). Did you find it? If not, go through these guides:

Hey, what about .HTACCESS?

Yes! When mod_rewrite enabled, you could extend the list of funny stuff you can do in .htaccess! This file is sacred, for many reasons it’s your magic wizard book.

This file makes the rules recursive, i.e. if you put it in your root-folder, every folder under it will get the rules you write in .HTACCES in your rootfile (i.e. www.yourdomain.com/)

In .HTACCESS you could specify a lot of stuff to happen for the client:

  • You could disable the user to gain access to some/all of your files.
  • You could write smart URLs.
  • You could specify how a file should be viewed (MIME-type etc.)

And a lot of more fun, go to one of the following guides to know more about your specific need!

High-rated guides for newbies:

I’d like to recommend this guide to understand how to write smart urls. The guide is thorough and in-depth how you could use it. It also shows you how to use flags, a primer to the hard-to-understand regular expressions and lists server variables you can use.

This guide is also an excelent tutorial on security issues, if you want to disable script-kiddies, bots and other intruders. I highly recommend it.

I’m lazy, fix it for me directly!

If you just want smart urls, there are two ways to fix it:
By a generator,
Or by specify it by a pHp-class (1) and (2)

Other resources:

The official apache guide, although it was too technical for me with quite bad examples

This is a fairly good guide, it brings up some decent examples, but aren’t as thorough as the previously mentioned guides.