Browsing Category

webbutveckling

webbutveckling

You Ain’t Gonna Need It

När 37 signals startade Basecamp hade de vid lanseringen ingen möjlighet att ta betalt av sina kunder. De ansåg att eftersom deras kunder ändå hade en fri testperiod på 30 dagar, så hade företaget en månad på sig att bygga faktureringsrutiner och kunde lägga dagarna innan lanseringen på att lösa mer akuta problem.

Här på media:screen såväl som i resten av livet tillämpar jag samma princip – gör inte idag vad du kan göra imorgon. Principen kallas med ett finare (?) namn YAGNI, You Ain’t Gonna Need it (ej att förväxla med Ross självförsvarsteknik UNAGI, i tv-serien Vänner…), och är ett centralt begrepp inom systemutvecklingsmetodiken Extrem programmering. YAGNI går ut på att man inte ska lägga till ny funktionalitet till till ett program bara för att man tror att den ändå kommer att behövas senare.

Även om det kanske låter misstänkt likt lättja, så finns det faktiskt några goda argument för att skjuta upp arbete:

  • Att skapa funktionalitet för framtiden tar tid från att skapa funktionalitet som behövs nu.
  • Ny funktionalitet idag skapar begränsningar för vad som kan göras i morgon.
  • Innan en funktion behövs så är det svårt att veta vad den behöver åstadkomma, vilket leder till att den i vilket fall behöver göras om den skulle behövas i framtiden.
  • Ny funktionalitet föder idéer om andra funktioner som kanske också kommer att behövas så småningom, vilket leder till en spiraleffekt av ny funktionalitet som aldrig kommer att behövas.
  • Sist men inte minst: Sannolikheten är stor att funktionaliteten aldrig kommer till användning och allt arbete gjordes i onödan.

Rent praktiskt här på bloggen betyder YAGNI bland annat att det inte fanns någon siduppdelning av bloggpostlistningarna innan det fanns så många poster att det behövdes, att det inte fanns månadsarkiv innan det fanns fler än en månad att välja mellan och att det inte fanns kommentarsfunktioner innan det fanns besökare på bloggen. Något spamfilter trodde jag inte skulle behövas på att tag, men nu börjar jag bli trött på att manuellt radera alla som försöker kränga SpongeBob SquarePants-posters i kommentarerna på mina bloggposter. Nu var det alltså dags för ett enklare spamfilter.

webbutveckling

Stapeldiagram med CSS för utskrift

Att göra en version för utskrift av stapeldiagrammet jag experimenterade med visade sig vara lättare sagt än gjort. De flesta moderna webbläsare skriver inte ut vare sig bakgrundsbilder eller bakgrundsfärger om inte besökaren explicit slår på den möjligheten – och det tror jag inte någon vill förlita sig på. Dessutom tar sig webbläsarna i regel friheten att byta ut för ljusa textfärger till svart eller mörkgrått. Till detta kommer en hel mängd små underliga buggar som bara verkar komma fram vid utskrift.

Efter en del kompromissande nöjde jag mig med denna variant (bara print-stilmall, välj print preview för att se den). Förutom förenklingen (gråskala, ingen bakgrund, inga skuggor, ingen ram) så valde jag att ta bort siffrorna i staplarna. De verkade inte gå att göra tillräckligt ljusa för att synas mot de mörka staplarna, men om man nöjer sig med ramar istället för bakgrund för staplarna så är det inte några problem att visa dem. Kanske skulle det vara en bättre lösning (ingen informationsförlust), men jag ville se om det gick att få samma grafiska stil på diagrammet vid utskrift som på skärmen.

Exemplet är än så länga bara testat i Firefox 2 och Internet Explorer 7.

För den som gör speciella printstilmallar så är webbläsarnas egna regler för vad som ska visas lite irriterande. Som flera tidigare har påpekat borde den bästa lösningen vara att webbläsarna litar på att de som har specificerat media="print" vet var de gör. En stilmall specificerad för ett speciellt medium borde alltid ha företräde framför webbläsarnas egna räddningsförsök (men givetvis stå tillbaka för en lika specifik användarstilmall).

webbutveckling

Stapeldiagram med CSS

Tidigare har jag använt PHP-biblioteket JpGraph i några olika projekt för att skapa grafer av olika slag. Det är dock inte alltid praktiskt att generera bilder för att visa statistik, så jag har lekt lite med css för att se om det inte går att hitta alternativa metoder.

Med utgångspunkt i Eric Meyers vertical bargraphs har jag försökt ta fram en lite snyggare och enklare variant. Målsättningan var att skapa stapeldiagram från semantiskt korrekt html med ett minimum av extra element, utan för komplicerad css som enkelt skulle kunna genereras dynamiskt och fungera i alla moderna webbläsare utan några css-hacks.

Eftar att ha provat med både tabeller och listor så fastnade jag till slut för definition lists som den enklaste metoden för att märka upp datan. Det finns många åsikter om hur definition lists ska användas, själv hör jag till den grupp som menar att man med fördel kan användas dem att koppla ihop nyckel-/värde-par. Tabeller skulle varit mer korrekt, men de kräver för mycket extra stilregler för olika webbläsare för att vara praktiskt i längden.

Det finns några saker med exemplet som inte fungerar så bra. Den extra koden som krävs för att sätta ut axelmarkeringarna är antagligen ganska förvirrande för besökare utan stöd för stilmallar. Möjliga lösningar är att använda sig av en bakgrundsbild (svårare att generera dynamiskt) eller att lägga in en beskrivande rubrik som förklarar vad siffrorna betyder (innebär ännu mer kod). Dd-elementet innehåller ett span-element som kan tas bort om man inte behöver bakgrundsskuggan överst och till höger.

Har testat exemplet i IE7, IE6 och Firefox 2 på Windows XP samt i Safari 2 och Firefox 2 på Mac OSX.

Hör av dig om du har förslag på förbättringar eller har egna exempel på lösningar.

Här är mitt exempel.

blandat, webbutveckling

Stockholms stadsbiblioteks nya webbplats i öppen beta

När Stockholms stadsbiblioteks nya webbplats smygstartar på allvar (den har tidigare varit tillgänglig i skissform) blir det den mest intressanta offentliga webbplatsen i Sverige, åtminstone i ett webb 2.0 perspektiv. Den erbjuder RSS-flöden för det mesta (exempelvis sökningar, kommentarer på enskilda böcker, fysiska evenemang), möjlighet att skriva recensioner och sätta betyg, diskutera med andra besökare och givetvis sköta alla vanliga biblioteksärenden. Än så länge har webbplatsen begränsad funktionalitet (och ganska många brister) men jag har stora förhoppningar om version 1.0. Jag har redan ansökt om att bli betatestare (d.v.s. få ett konto för att kunna använda personaliseringsfunktioner, recensioner med mera). och min plan är att göra utvärderingen av den nya webbplatsen till en liten följetong här. Första delen lägger jag ut i morgon och den kommer att handla om biblioteket.se och bloggvärlden.

blandat, webbutveckling

Fel dygnsrytm för bloggtjänsterna

Jag märker ganska stor skillnad på antalet besök efter ett nytt inlägg beroende på när inlägget är postat. Tydligen läser de flesta bloggar på morgonen eller förmiddagen (på jobbet?). Eftersom jag för det mesta skriver på kvällen eller natten (nu är klockan 01:41) så har jag nu lagt till en funktion för att lägga in poster i förväg med en förutbestämd publicerings- och pingtid. Så, godmorgon på dig – själv har jag sovmorgon.