Friday, July 10, 2009

Javascript MVC


När man jobbat mycket med Javascript så är det lätt hänt att man tappar lite av den kontroll man gärna vill ha i ett projekt. Så därför håller jag på att utveckla en MVC-modell för våra projekt, baserat på prototype.js. So far, efter knappt 600 rader kod, verkar det lovande, jag har försökt att efterlikna sättet Zend Frameworks API, då det onekligen är ett rätt genomtänkt API.

Ett snabbt exempel på hur det kan se ut:

// Script-delar:
...
// Modell för favoriter:
var FNLModel_Favorites = Class.create(FNLModel,{
   init:function($super, params){
      this.primary_key='user_product_id';
      $super(params);
   }
});   
...
// Javascriptdelen av view för favoriter
var FNLView_SingleSmallFavorite = Class.create(FNLView_Simple,{
   init:function(params){
      this.template = 'TEMPLATE_SINGLE_FAVORITE';
   }   
});
// Javascriptdel av en view för en favoritlista
var FNLView_SmallFavoriteList = Class.create(FNLView_Simple,{
   init:function(params){
      this.template = 'TEMPLATE_SMALL_FAVORITE_LIST';      
   },
   render:function($super,self){
      var str = '';
      for(var i=0;i<self.favorites.length && i<15;i++){
         self.favorite = self.favorites[i];
         str += self.render('SingleSmallFavorite');
      }
      self.favoriteContent = str;
      return $super(self);      
   }
});
...
// Controller för favoriter
var FNLController_FavoriteListLeft = Class.create(FNLController,{
   init:function(params){
      var self = this;      
      this.target = params.target;
      var callback = this.callback.bind(this);
// Lyssna efter uppdateringar av favoriter via ajax
      this.fnlTools.addEventListener({id:'favorites',event:FNLToolsEvents.ajaxResponse,callbackFunction:callback});
// Och se till att favoriterna uppdateras vid serveranrop.
      this.fnlTools.registerAjaxListener(this,FNL_CLUB_LISTENER_URL, 'favorites','user_product_id',-1);
      this.id=fnlTools.newUID;
   },
   callback:function(event){
      this.view.favorites = event.model.data;
      this.view.fnl_id = this.id;         
      str = this.view.render('SmallFavoriteList');         
      $(this.target).innerHTML = str;   
            
// Uppdatera serveranroparen så att den bara kollar efter nya favoriter
      this.fnlTools.updateAjaxListener(FNL_CLUB_LISTENER_URL, 'favorites',event.model.max());            
   }
});

...

// init-kod
fnlTools = new FNLToolsClass();
var productListUpdater = fnlTools.getController('ProductList',{target:'productList3'});


samt html-element som fungerar som templates:
<div id='TEMPLATE_SMALL_FAVORITE_LIST' style='display:none'>
#favoriteContent#
</div>
<div id='TEMPLATE_SINGLE_FAVORITE' style='display:none'>
<a target="_blank" href="#favorite.p_url#"><img width="44" title="#favorite.name#" src="http://stat2.shoppinggatan.se/public/images#favorite.thumb_local_url#" style="border: 2px solid rgb(201, 205, 208);"/></a>
</div>



Och vad gör då detta exempel? Jo, ett element med favoritprodukter skapas, och hålls dessutom uppdaterad om nya favoriter läggs till, endera i samma dokument, eller från en annan instans (för samma användare). Givetvis hanterar den dessutom hur många element som helst med samma innehåll, alla hålls uppdaterade i vilket fall. Det är också mycket lätt att hålla koll på alla events som sker på samma sida.

Om man tex skulle skriva ett litet chatrum med den nuvarande modellen så tror jag att det skulle handla om ca 30 minuters arbete, från start till mål. Givetvis inte aktuellt, då jag inte känner någon som chattar längre, men jag tycker ändå att det visar på kodens styrka. Javascripts svaghet med bara visst stöd för klasser syns i koden, men med Prototypes klasshantering så blir det lite enklare att koda.

En fundering som jag har är om det ska vara en instanserad controller per element, eller en instanserad kontroller per aktivitetstyp.

Om du är intresserad av att veta mer om det här, så är det bara att höra av dig.

Sunday, July 5, 2009

Reinfeldt sågar Amazon EC2


Som en del i regeringens förberedelser för höstens IT-proposition har statsministern och samtliga statsråd utvärderat varsin webhost. För statsminister Fredrik Reinfeldt föll lotten på Amazon EC2.
”Jag blev glad när jag fick veta att jag skulle testa Amazon – som partiledare har Amazon länge varit en fantastisk källa för litteratur inom statsvetenskap, och molnet har det talats rätt mycket om i Rosenbads korridorer.”

Men glädjen var kortvarig: ”Amazon är en användarmässig katastrof. Dokumentationen är mycket bristfällig, och arbetet med att skapa en Amazon-instans som passar just regeringens behov tog på tok för lång tid. Jag antar att en riktig Linux-hacker skulle klara det väldigt bra, men för en glad amatör som jag själv har det varit en mardröm.”

Reinfeldts stora kärlek till Open Source och molnlösningar är annars en välkänd historia. ”Hemma kör vi inget annat än Ubuntu. Många kollegor säger att Linux inte kan mäta sig med Windows som skrivbordsoperativ, men med den senaste versionen av Gnome finns det inte längre några ursäkter – Linux borde vara det naturliga valet för alla datoranvändare.”

Inom regeringen går åsikterna dock isär. Sten Tolgfors sägs vara en inbiten Mac-entusiast medan Sven Otto Littorin vägrar köra något annat än Windows XP. Göran Hägglund är den udda fågeln med FreeBSD.
”FreeBSD passar KD utmärkt”, berättar Hägglund. ”Min datortekniker säger att den påminner väldigt mycket om partiet – värdekonservativ men ändå frihetsbejakande. Och liksom KD är operativsystemet något av en underdog.”

Tuesday, June 16, 2009

Camping & Vildmark med Streamline

En av 49lights senaste kunder är Beoutdoor.se. Beoutdoor är störst i sverige inom fiske och vildmark, och har ett utbud som verkligen tillfredsställer friluftsmänniskan inom oss.

Det senaste vi har gjort på Beoutdoor är att lägga in Streamline. På sidan om camping och friluftsliv ser man just Streamline i aktion. Där visas ett utbud av produkter upp, anpassat till just Beoutdoors besökares historiska aktiviteter på campingsidorna.

Om man vill gå in på detaljer så kan man i korthet säga att alla produkter har ett unikt DNA, och att Streamline på sidan placerar ut dem så att produktrummets yta får maximal täckning.

Ta gärna en titt på hur Streamline täcker produktrummen för kategorierna jakt och kläder.

Sunday, May 24, 2009

Amazon EC2 - nu är vi uppe och rullar

Nu har vi äntligen tagit klivet fullt ut och efter en veckas provtid och en vecka av mindre justeringar så ligger nu Shoppinggatan helt på EC2.
Som jag har beskrivit tidigare finns det många anledningar som gör Amazon till en lämplig host för Shoppinggatan. Skalbarheten, enkelheten, låga priser på såväl datorkraft som utrymme gör det helt enkelt tryggt för oss att välkomna nya kunder, nya produkter och nya språk.

Tuesday, May 19, 2009

Amazon EC2 - Prestanda och Raid

Medan jag skriver det här förs den senaste versionen av databasen så sakteliga över från våra gamla servrar till Amazon - vi närmar oss slutspurten i migrationen av Shoppinggatan till Amazons roliga och intressanta EC2.

Under veckan som har gått så har vi testat, utvärderat och ändrat i våra konfigurationer mot EC2, med blandade resultat och bara några få riktiga snedsteg.

Godbitar från veckan:
EC2 disk performance - det är otroligt lätt (och billigt) att sätta upp ett raidsystem, med stor förbättring av prestandan. Det betyder att backup måste göras lite annorlunda (enkel snapshot räcker inte), men hastigheten ökar dramatiskt.
All about Linux Swapspace - utrymmet på EC2 är billigt, så lagom stort växlingsutrymme känns som ett måste.
Sysbench - yum install sysbench är ett underbart litet kommando för att snabbt kunna utvärdera din server.
Recursive text file find and replace - Ett litet script som jag gjorde för att snabbt söka och ersätta i flera textfiler, bra att ha verktyg om jag är tvungen att flytta tex databasservern till en ny instans med ny ip, och därför behöver ändra mina konfigurationsfiler på apacheservern.

Uppdaterat: Raid kan, precis som med fysiska diskar, vara rätt struliga. Jag vill bara poängtera att jag bara rekommenderar RAID på ec2 till den som är väl insatt i det.

Monday, May 11, 2009

Amazon EC2 revisited

Nu i helgen har vi arbetat ytterligare lite med Amazons elastiska moln, Amazon EC2. Den trogna läsaren vet att vi gillar Amazon och kör CloudFront och S3 (för statiska filer). Dessbättre har vi under den senaste tiden drabbats av ett angenämt problem - besökarna ökar på Shoppinggatan samtidigt som våra kunder blir fler och större. Trevligt som sagt, men det innebär också att vår flytt från vår nuvarande serverlösning har blivit än viktigare, och en flytt till Amazons EC2 känns som ett rätt stabilt och prisvärt alternativ med tanke på deras stabilitet och skalbarhet.

När jag kikade på EC2 senast var den europeiska parken relativt ny, och det var lite strul med Amazons verktyg framförallt kring arbetet med AMI'er.
Idag är situationen delvis annorlunda - Amazon har skapat ett trevligt litet webinterface som gör det lätt att hantera instanser, och även deras java-tools fungerar numera som förväntat.

Så här såg vår process ut:
1) Vi valde en bra start-ami (centos) och skapade en ny instans
2) Skapade en stor volym (50 gig) och mountade den mot vår instans
3) Konfigurerade ami så att LAMP fanns och levde tillsammans med alla nödvändiga extensions (Tack gode gud för Yum!)
4) Konfigurerade LAMP så att all data ligger på den mountade volymen.
5) Importera data och se att allt fungerar
6) Skapade en ami av den fungerande instansen med ec2-bundle-vol, ec2-upload-bundle och ec2-register.
7) Reservera en eller två ip-adresser så att vår DNS kan pekas rätt
8) Stoppa instansen och starta en ny - fungerar allt som förväntat?
8) Done - allt klart för att köras - och behövs en ny instans så är allt förberett.

Och det härligaste med EC2 - vi bestämde oss för att lägga databasen på en egen instans. Och en timme senare är det klart, allt hänger bara på din initiala AMI!

Några tips:
* Se till att volymerna är tillräckligt stora. 50 gig i en volym är billigt. Ingen fara om de inte är det förstås, då det är superenkelt att skapa nya volymer och skicka över datan dit.
* Dokumentera allt du gör - ordentligt. Linux kan ibland vara lite som en Minoisk labyrint och du vet aldrig när du måste börja om från början.
* Se till att imagen som du skapar med ec2-bundle-vol är tillräckligt stor, för en AMI ändrar du inte lika snabbt som en volym. (Det tar minst 30 minuter, det vet jag av egen erfarenhet när sda plötsligt var tomt på utrymme imorse :-))
* Lägg inte privata nycklar på AMI'n, lägg dem på en volym
* Ha all data utom temporär på volymen (så försvinner inte allt varje gång du stoppar en instans ;))
* Slösa inte tid på iptables - Amazon har ett fullgott skydd med sina inbyggda zoner.
* Rent praktiskt så ändrade jag i /etc/my.conf för att sätta databas till min mountade volym som alltid mountades på samma ställe.
* Samma sak för httpd, jag la till /etc/httpd/conf.d/fnl.conf som i sin tur inkluderade conffiler från den mountade volymen.
På så sätt kan jag alltid ändra uppställningen via den mountade volymen.
* Tänk på regionerna - en dator i usa ger långsam access för oss svenskar. Själva ligger vi i eu-west-1, eller för att vara mer exakt eu-west-1a.
* Googla som en tokig. Det mesta har gjorts förr. Men tack vare Amazons snabba utveckling är en stor del av dokumentationen obsolet, så förvänta dig ingen 1-2-3 tutorial.

Thursday, April 23, 2009

Med ett öppet API kan funktionsnedsatta Twittra!

Jag fullständigt älskar öppna apier (och jag tror att de gillar mig också). De främjar snabb utveckling och låter oss skapa verktyg för att på bästa möjliga sätt utvinna rätt information för rätt tillfälle. Vi finns här för att göra gott, och har inte så många år på oss, och som vanligt kan samarbete hjälpa oss att nå vår fulla potential.

För Twitter är deras öppna API en förutsättning för deras framgångar, men artikeln om "Twittertelepati" på Wired (hittad via Jardenberg) ger mig rysningar! Neuroforskare vid universitetet i Wisconsin har kopplat ihop en textredigerare, som styrs med hjärnans elektromagnetiska vågor, med just Twitter. Själva apparaten är förvisso imponerande, men den känns som en naturlig utveckling inom medicinteknik. Att koppla den till Twitter däremot, är hur coolt och imponerande som helst!

Kopplingen är förvisso inte svår, men tanken att personen med behov av apparaten för kommunikation helt plötsligt får tillgång till sociala nätverk är fantastisk. Höjningen av livskvalitet och möjligheten att kommunicera på lika villkor finns ju där. Visst är det smått fantastiskt!

Så för att sammanfatta: Ett öppet api behöver inte bara innebära att man främjar asynkront samarbete, utvecklare emellan, utan kan innebära att man gör något riktigt gott för världen! Karma++ på Twitter!

Omvärldsbevakning från kolgruvan...

Min omvärldsbevakning är för närvarande inte den bästa. 49lights är inne i en tuff fas där vi jobbar oerhört mycket, och mina normala kanalar för omvärldsbevakning och kommunikation som Twitter, Bloggy och Google Reader får stå tillbaka. Jag brukar säga att jag är nere i en kolgruva :-).
Men några små titthål mot omvärlden har jag iaf. Då och då kikar jag in på BetaAlfa och Jardenberg unedited. Dessa bloggars har dagliga "noterat"-inlägg som gör att jag trots minimal surfning får en hjälplig koll på vad som händer, och jag rekommenderar dem till alla som behöver en minimalistisk omvärldsbevakning. Go Betaalfa, Go Jardenberg!

Saturday, April 18, 2009

Rätt index kan betyda så mycket

Peter kikade på några av mina SQL-frågor för Streamline, vår applikation för att optimera försäljningen på en webbshop, igår. Några index ändrades, och vips blev applikationen som räknar ut klustringen av produkter och kundintressen 4 ggr snabbare.
Det är när man ser sånt som man blir riktigt nöjd och imponerad!

Streamline kommer för övrigt snart att läggas till på Shoppinggatan, så att besökaren snabbare hittar just de varor som är intressantast för henne/honom.

Monday, April 13, 2009

Kommentarerna flyttar till mikrobloggen och blir bättre

Att läsa kommentarer till ett blogginlägg, nyhet eller en artikel i stort på nätet är en upplevelse som varierar från intressant till outhärdligt. Troll fyller kommentarsfälten med bitterhet, näthat och irrelelvanta kopplingar och kan ibland tom sänka en hel sajts trovärdighet (Dagens Media är ett praktexempel på en sajt med riktigt dålig kommentarskultur).

Men mikrobloggen förändrar det här. Istället för att diskutera saker direkt på bloggen kan du diskutera det med ditt eget nätverk på Bloggy, Jaiku och Twitter. Mikrobloggen som format gör det möjligt för dig att skapa ett tillräckligt stort nätverk för att diskussionerna och reflektionerna ska bli rika oavsett vad du pratar om.

Troll har ingen plats i ditt privata nätverk - en trollande eller spamande användare är bara att sluta att följa.

För bloggen eller tidningen där artikeln tidigare diskuterades är det här både en förbannelse och en välsignelse. Färre kommentarer på sajten innebär mindre tid och mindre annonsvisningar på sajten, men du slipper det tråkiga i att ditt utrymme fylls av smörja.

I förlängningen är jag dessutom övertygad om att blogginlägget, komplett med reklam via en trevlig deal, kommer att husera direkt på mikrobloggen - och att ditt mikrobloggnätverk kommer att husera direkt på nyhetssajten.

Vi är inte riktigt där ännu, men det är en tydlig trend som gör surfandet till en ännu bättre upplevelse. Användaren är som vanligt vinnaren!

Mikrobloggar dödar bloggar - och TT-material

Så sent som hösten 2008 började jag alla dagar med att besöka ett antal bloggar. Oftast fanns det några småroliga artiklar på varje blogg varje dag, och då och då hittade man ett riktigt guldkorn som var måsteläsning. För att inte missa just guldkornen var halvtimmen på morgonen framför Google Reader eller bloggarna ett måste.

Nu är det en bit in på 2009 och mitt läsbeteende har helt förändrats. Jag har idag ett trusted network på Twitter och Bloggy, och jag vet att guldkornen kommer att komma till mig via mikrobloggarna - jag behöver inte längre vara rädd att missa något riktigt intressant. De artiklar som har störst nyhetsvärde blir omdiskuterade och retweetade (vidareskickade) i flera led.

För mig som användare är det här fantastiskt - istället för att ägna lång tid varje dag åt alla nyhetskällor får jag allt serverat av mitt nätverk. Och mitt nätverk är nära nog perfekt - kontakter som missbrukar mitt förtroende med spam, eller som rekommenderar saker som inte är relevant för mig, tas helt enkelt bort och jag får ett nätverk som för varje dag förfinas mot min smak.

För bloggen blir det dock svårare - en blogg som haft många trogna dagliga läsare kan se fram emot färre ströbesök. Bloggen blir tvungen att skapa riktigt bra innehåll för att få besökare via folks nätverk.
För den lilla bloggen kan det dock bli ett lyft - istället för att skriva dagliga poster med den stress det innebär kan man koncentrera sig på att bara posta med riktigt hög kvalitet. Navelsträngen till besökarna som ströposterna har inneburit har helt enkelt snart spelat ut sin roll.

I förlängningen kommer detta att ändra vårt beteende även vad gäller nyhetsrapportering via gammelmedia - varför läsa samma TT-rapning på både SvD och DN? Och för den lilla landsortstidningen är det ett lyft - ett guldkorn kan ge läsare från hela sverige trots att de dagliga besökarna från hela området saknas.

Sunday, April 5, 2009

Med oEmbed skapas fler sociala objekt

Med oEmbed kan en tjänst, säg Bloggy, undersöka om en länk finns tillgänglig i ett embedformat i en för tjänsten passande storlek.

För att ge ett exempel: Jag postar en länk på Bloggy. I dagsläget kommer länken upp som länk, eller möjligen som bild eller video om det är Flickr eller Youtube vi pratar om. Men med oEmbed händer något annat -
När länken postas på Bloggy så kan Bloggy hämta hem den länkade sidan och kika efter just oembedkoden för den aktuella länken. Om den inte finns postas länken just som länk - men om det finns, så kan Bloggy hämta hem just embedinformation om den aktuella länken.

Embedinformationen beskriver storlek, html-kod, metainformation som titel, länk till thumbnails och annat, och Bloggy kan direkt avgöra om embedningen ska visas i min Bloggypost.

Det här är mycket intressant för _alla_.
Ett rikare material med fler embeds på Bloggy innebär fler sociala objekt, vilket i sin tur leder till mer diskussion. För tjänsten som står för det embedade objektet innebär det att användarna lättare kan ta med sig sina sociala objekt till de sajter där de spenderar sin tid och har sina vänner. Alla vinner.



Ett uppenbart användningsområde för en oembed är givetvis våra blödande dagstidningar. Dagstidningarna är väldigt duktiga på att skapa sociala objekt och det är inte ovanligt att de länkas i mikrobloggar. Men med en liten embed får de möjlighet att skapa en snyggare liten intro till den länkade artikeln, med bibehållen grafisk profil och kontroll, samt kanske tom med en liten reklam. Det innebär ökad spridning på innehållet, bättre varumärkesbyggande och ökade intäkter (någon skulle möjligen kunna protestera och undra om det inte urvattnar tidningen att ta innehållet från sajten. Det skulle stämma om det inte var för att medielandskapet är i förändring och användarna vill konsumera sin media direkt på sina favoritsajter). oEmbed är smörjmedlet som gör det smidigt att dela material från varenda dagstidning på varenda social sajt i vårt fragmenterade medielandskap.

För Shoppinggatan är vikten av oEmbed väldigt tydlig: Vi kommer att implementera oembed för allt material där det är tillämpligt, från produkter, användare, blogginlägg till våra applikationer som Mix'n Match och favoriter.

Thursday, March 19, 2009

Några av mina favoriter (i en javascriptbaserad embed)


Den här javascriptcontrollern använder vi på Club Shoppinggatan när medlemmar snabbt ska komma åt sina favoriter, och det som visas ovan är några av mina egna favoritprodukter på Shoppinggatan.
Jag är riktigt nöjd med koden, så här ser det tex ut när vi anropar och skapar favoritscrollern:


var ps = new PScroller('divname');
var width=100;
ps.add('<img src="path to image">',width);
ps.start();



Vi använder oss av prototype och scriptaculous för att underlätta vårt scriptande. Prototype.js gör mycket av standardprogrammeringen enkel och crossplatform och är stabil - tex är dess Ajaxfunktionalitet otroligt lättarbetad.
Scriptaculous har funktionalitet för animering, scrollbars drag and drop samt mycket annat. Rekommenderas för den javascriptintresserade.
Annars är JQuery ett hett tips för den som skapar javascriptintensiva webbsidor, och det är ett bibliotek som vinner allt större mark samt har licensfördelar och relativt tung backning.

På Shoppinggatan använder vi oss av javascript i så stor utsträckning som möjligt. Tyvärr finns det fortfarande många områden där Javascript går bet; Animationer är inte helt enkla att få mjuka, man kan inte rotera bilder osv. Men då kör vi istället med Flash.

Wednesday, March 18, 2009

Våra bilder bor i molnet - och de stormtrivs

Nu har vi äntligen flyttat över alla våra bilder till Amazon Simple Storage / Cloudfront. Flytten gick relativt enkelt, 24 timmar från start till målgång inkl anpassning av Amazons mjukvara.
Resultatet är ännu så länge otroligt lovande - belastningen på vår egen server går ner samtidigt som Cloudfront presterar mycket bättre än vår VPS - det är tidsvinster över hela linjen. När en användare laddar exempelvis en produktsida kommer numera samtliga thumbs upp omedelbart. En stor förbättring för användaren.

Det finns dessutom andra fördelar med att lägga bilder på Amazon. Om vi behöver ändra på bilderna, säg tex ändra storlek på thumbs, så kör vi bara ändringskoden på en extra instans på EC2 och slipper extra belastning på driftsservern. Vi behöver inte heller köpa paket med extra megabyte lagringsutrymme, utan kan ladda upp statiskt material och betala för det utrymme vi faktiskt använder. Och när vi kör igång våra utländska sajter så ligger bilderna redan på en stor, internationell CDN (Se också vad Yahoo skriver om CDN)

Rent praktiskt så använde vi oss av Amazon-biblioteket från Tarzan som är ett PHP-bibliotek. Det är föredömligt enkelt att installera och använda. Att Tarzan dessutom stödjer multicurl gav oss en genomsnittlig laddningstid på 0,03s/fil.

Vi har för övrigt bestämt oss för att lägga hela vårt projekt på Amazon - ett längre driftsstopp hos vår leverantör var det som fällde det slutgiltiga avgörandet. Men det är tyvärr inget som vi åstadkommer på 24 timmar - Vi måste läsa in oss på Amazon lite till innan vi genomför den förändringen.

Thursday, March 5, 2009

Monday, February 16, 2009

49lights - Nu med "officiell" företagsblogg

En annan sak som vi har jobbat med den senaste tiden är 49lights webbsajt. Vi har ny grafik, nya texter, vi lyfter fram vår ehandelsoptimerare Streamline tydligare och vi har lagt till en blogg. Bloggen är en WP-blog, och kommer främst att handla om e-handel. Först ut på bloggen är ett inlägg om att skapa förtroende för en webbshop.

En "officiell" 49lights-blogg är något som vi har haft i pipen länge, och nu när vi ändå gjorde om hemsidan kändes det rätt att lägga dit den. Vi läser själva väldigt många bloggar, och tyckte givetvis att en egen blogg är ett trevligt och positivt sätt för att bygga relationer till e-handlare.

Blogmap.se - under huven

Nu har vi äntligen gjort färdigt Blogmap.se. Precis som med bloggparti.se är det en sajt som bygger på klassificering med uClassify, och din blogg jämförs nu med 35 av sveriges största bloggar. Du får reda på vilken bloggprofil som ditt sätt att skriva påminner mest om, tillsammans med en kort beskrivande text om just den bloggaren.

Man kan också söka på ord och se vilken bloggprofil som har starkast koppling mot ordet. Riktigt underhållande att se att tex "choklad" är ett Kenza-ord, medan det skrivs om "party" oftast hos fotbollsfrun. :-)

En stor skillnad mot bloggparti är att vi nu har bättre länkar och sajtkarta, men framförallt mycket bättre städning av texterna som kategoriseras. Det innebär såklart avsevärt mycket bättre resultat.

Sajten är en underhållande flört med den svenska blogosfären och bygger mycket på att man snabbt kan skapa funktioner som tidigare tog lång tid. I grunden har vi Zend Framework, diagram från Google Visualization, blogg- och språkklassificering med uClassify och grafiken är en köpt mall.

Sammantaget är det en riktigt rolig sajt och jag hoppas att så många som möjligt ska se vad just deras blogg har för potential i den svenska bloggosfären!

Friday, January 30, 2009

Shoppinggatanvideo - här hittar du kläder online!

Det känns riktigt bra nu när det går att söka bland alla kläder online direkt på Shoppinggatan.se!
Det firar vi med en Shoppinggatanvideo:

Monday, January 26, 2009

En vertikal sökmotor för kläder, inredning och möbler

Den senaste veckan har vi betat av ett antal småfel, rättat till kategorier i sökningarna och gjort Shoppinggatan stabilare i största allmänhet.

Vi har förbättrat användarinterfacet för sökningarna, och vi har minskat laddningstiden för sidan. Ordentligt!

Själva börjar vi tycka att Shoppinggatans sökmotor för kläder, inredning och möbler börjar bli riktigt bra - och ni verkar hålla med. Bara sedan december har vi ökat antalet genomsnittliga sidvisningar med hela 4 sidor per besök! Det känns bra!
Arbetet med sk breadcrumbs, dvs att man hela tiden ska veta var på sidan man befinner sig, har lyfts fram mycket tydligt. Det gör sökupplevelsen trevligare. Se tex klänningar och tunikor.

Vi hoppas också att det märks att sidan går snabbare att ladda. En hel del av all statisk grafik har förts över till Amazons Simple Storage, som både är relativt snabbt men också väldigt tillförlitligt.

Färg- och fritextsökningen börjar vi också få ordning på, eller vad sägs om röda klänningar från Odd Molly.

Förra veckan var helt enkelt en mycket bra vecka för Shoppinggatan.

Saturday, January 10, 2009

Intressanta länkar om Amazon EC2

Här är några osorterade länkar om Amazon EC2 som jag tyckte var vettiga när jag satte upp lamp-miljöer:

Running MySQL on Amazon EC2 with Elastic Block Store

Exploring Amazon EC2 for Scale-out Applications

Setting Up MySQL on an EC2 AMI

Deploying a MySQL Database Using EC2

Memcached

How to create an EC2 AMI

putty, pscp osv

Säg gärna till om ni har tips på andra bra resurssidor.

Friday, January 2, 2009

Amazon simple storage är kung :)

Nu har vi flyttat över en del grafik till Amazons simple storage-lösning. Det gick relativt snabbt och enkelt.
Så nu laddar sidorna på Shoppinggatan nära nog dubbelt så snabbt som när vi körde med vps-lösningen, samtidigt som det har blivit driftsäkrare.