torsdag, november 19, 2009

Podcast för MSDN Radio med Dag König

Igår var jag med och spelade in en podcast med Dag König från Microsoft för MSDN Radio. Vi samlades runt en soptunna och pratade om vad vi hade upplevt så långt på PDC09. Den finns att ladda ner på http://bit.ly/1ooTeW

Som alltid gör Dag ett lysande jobb som intervjuare och gör det väldigt enkelt att vara med som deltagare!

podcast

PDC 2009 – Pre conference workshop

Första dagen spenderade jag på en workshop med kille från Nya Zeeland (Chris Auld) som pratade om Windows Azure. Architecting and Developing for Windows Azure och där och då bestämde jag mig för att mitt fokus skulle helt och hållet ligga på Windows Azure under veckan. Det har inte riktigt gått att hålla fullt ut eftersom att en del sessioner har visat sig för tråkiga eller för att andra har varit för intressanta för att missa.

Förra veckan släpptes Nov SDK för Windows Azure med flera nyheter. B la så går det nu att använda Visual Studio 2010 för att bygga applikationer för Azure men än så länge är det bara .NET Framework 3.5 SP1 som stöds. .NET 4 kommer så klart inom kort. En annan nyhet är att Worker Roles nu också kan ta emot externa anrop. Tidigare har det bara varit Web Role som kunnat göra det men nu alltså även Worker Role. Vad innebär då det? Vad är det för skillnad då på en Web och en Worker? En skillnad är att en Web Role är hostad i IIS vilket en Worker Role inte är. Det skulle då t ex kunna innebära att du skulle kunna bygga din egen web server och hosta den i en Worker Role.

En annan nyhet i Nov SDK är att det nu också finns stöd för scale up, dvs olika storlekar av virtuella maskiner.

Under Chris dragning blev det också tydligt att det är applikationer som kräver möjlighet till elasticitet eller extrem ökning av krav på resurser som lämpar sig bäst för Azure. Detta är för att den största anledningen till att flytta eller bygga en applikation på en molnplattform är en ekonomisk och inte en teknisk. Det pratas dock om att det kan komma en annan prismodell för applikationer som inte kräver lika stor flexibilitet eller last där man kanske betalar en fast månadskostnad och då inte har samma möjligheter att skala upp men mer om det när det närmar sig årsskiftet.

Windows Azure är tillgängligt idag, den 1 januari kommer det att börja synas hur mycket en körande applikation kostar och from den 1 feb så startar faktureringen.

Chris tog också upp en del patterns för utveckling av applikationer mot Windows Azure och hur de kan påverka den totala prisbilden av en applikation eftersom att delar av plattformen betalas per transaktion. Värt att tänka på är att ibland de-normalisera och duplicera data beroende på om den totala kostnaden för lagring blir billigare än kostnaden för transaktioner. Det dyker alltså upp helt nya faktorer för att fatta beslut för hur arkitekturen ska se ut för en applikation. En refactoring som inte är genomtänkt skulle t ex kunna innebära att man ökar den totala kostnaden för applikationen.

En viktig sak att tänka på när man jobbar med köer är Idempontency. För mig som inte är så mattematiskt bevandrad var det ett nytt begrepp som innebär att f(x) = f(f(x). Dvs att ett anrop till en funktion ska alltid ge samma resultat oavsett om den anropas flera gånger. Windows Azure garanterar att meddelanden i en kö blir hanterade minst en gång. Så även om den VM som just nu hanterar ett meddelande går ner så kommer någon annan att hantera det meddelandet senare. Dock så kan det hända att ett meddelande blir hanterat flera gånger och vi måste hantera det i våra applikationer.

Hela konferensen är väldigt bra organiserad. Det är stora rum och aldrig något problem att få plats på en session. Enda nackdelen är att LA Convention Center är gigantiskt och det är fem – tio minuters promenad från en sal längst bort i hörnan till andra sidan. Det gör att det ibland blir svårt att hinna med alla roliga saker som Ask the Experts och Hands on Labs. Att det varje dag är lunch-sessioner gör inte direkt att man får mer tid!

Nu är det dags för en session av en av mina favorittalare: Clemens Vasters som ska prata om “Building Hybrid Cloud Applications With the Service Bus”. Senare ska jag skriva ett inlägg med länkar till de videor jag kan rekommendera.

 

Panorama från pre conference workshop

preconf

Container från ett datacenter till Windows Azure 

azure

fredag, november 06, 2009

Seminarium om Visual Studio 2010

Idag körde Connecta och Addskills ett seminarium tillsammans om nyheterna i Visual Studio 2010. Jag höll en övergripande presentation om nyheterna i verktyget, ramverket och språken. Salong 1 på Sergel var platsen för dagen och de 512 platserna var fyllda till bredden. Fantastiskt kul att det var så många som kom!

Med mig från Connecta var också Hans Sterby och Daniel Karlsson som pratade om F# och Workflow Foundation.

Allt gick helt enligt planerna, inga demo som kraschade eller någon som tappade tråden.

Fick många frågor av vad den application launcher jag använde under presentationen heter. Det är RocketDock och finns att ladda ner på: http://rocketdock.com/

Om det är någon av er som läser det här så tar jag gärna feedback på min presentation. Något man hade velat se mer eller mindre av? Ris eller ros?

Vi kommer även att köra en repris den 22 januari och till den finns det fortfarande platser kvar. Anmäl dig här nu!

Mvh Björn

panorama

fredag, oktober 16, 2009

SortedSet<T> i Visual Studio 2010

En grymt bra nyhet i Base Class Library (BCL) i .NET Framework 4.0 är SortedSet<T>. Den ligger i System.Collections.Generic och implementerar funktionalitet som jag många gånger har implementerat själv. Precis som HashSet<T> som var en nyhet i .NET 3.5 erbjudet SortSet möjligheten att skapa en collection som bara innehåller unika element. Skillnaden är att SortedSet också returnerar elementen sorterade.

Det innebär att om man matar in följande i en SortedSet<String>:


static void Main(string[] args)
{
var s = new SortedSet<string>();
s.Add("Hello");
s.Add("Visual Studio 2010");
s.Add("Is");
s.Add("So");
s.Add("Cool");
s.Add("Cool");
s.Add("Cool");


foreach (var word in s)
{
Console.WriteLine(word);
}
}

Så blir output:
Cool
Hello
Is
So
Visual Studio 2010

Algoritmen som ligger bakom sorteringen i collectionen är en self-balancing red-black tree och det har jag inte tänkt ge mig in på att förklara hur det funkar. Det finns det redan någon som gjort så bra ;-)

Add-metoden på både SortetSet och HashSet returnerar true eller false beroende på om det det element som skickades in adderades till collectionen eller inte.

En annan metod som är intressant är GetViewBetween(T lowerValue, T upperValue). Om man exekverar den på ett SortedSet så får man ett subset som innehåller alla element från det som är specificerat som lowerValue till upperValue. Det som är dock inte som man skulle kunna med tanke på namnet att den returnerar alla element som ligger mellan de två värdena utan den tar även med de värden man har angett.


var s = new SortedSet<int>();
s.Add(1);
s.Add(5);
s.Add(5);
s.Add(3);
s.Add(2);
s.Add(9);
s.Add(4);
s.Add(11);


var s2 = s.GetViewBetween(4, 9);

foreach (var number in s2)
{
Console.WriteLine(number);
}


Get då output:
4
5
9

Om man försöker lägga till ett element till s2 som är utanför gränsvärdena får man ett ArgumentOutOfRangeException.

Jag ser väldigt många användningsområden för SortedSet och ser väldigt mycket fram emot att få börja använda .NET 4.0!

torsdag, oktober 15, 2009

Multi touch i VS2010

Touch och multi touch är något som har legat mig varmt om hjärtat senaste året. Det hela började med att vi på Connecta köpte ett Microsoft Surface-bord för snart ett år sedan. Redan då pratade Microsoft om vikten av att börja jobba med och lära sig multi touch och nu ser vi Windows 7 och WPF 4.0 komma med inbyggt stöd för multi touch.

I WPF 4.0 har man lagt till ett antal event till UIElement som rör muti touch. De berörda .NET API:er är baserar på native Win32 API som bara är tillgängliga i Windows 7. UIElement är den basklass som definierar kärnan för visuella kontroller för layout, input och events. De event som finns idag (beta 1 av VS2010) är: ManipulationStarted Event, ManipulationCompleted Event, ManipulationDelta Event, ManipulationInertiaStarting Event och ManipulationBoundaryFeedback Event. Som standard får ett UIElement aldrig händelser rörande Manipulation om inte ManipulationMode är satt till ett annat värde än None. Med hjälp av ManipulationMode kan man styra vilken typ av manipuleringar man ska kunna göra på ett objekt. Det kan t ex vara translatera på X och/eller Y-axeln, rotera, eller skala.

I beta 1 av .NET Framework 4.0 finns eventen för manipulering med men det finns inte några WPF-kontroller som använder sig av dem. I kommande versioner kommer det att man enkelt bara slå på touch-kontroller på t ex sliders eller scrollviewers direkt i XAML.

När man fångar ManipulationDelta på ett Window får man ManipulationDeltaEventArgs. Den kan man sedan använda för att ta reda på vilken förändring som har inträffat. Med metoden GetDeltaManipulation får man ut en System.Windows.Input.Manipulation som innehåller all transformationsdata som fanns när eventet inträffade. Den informationen kan man sedan använda för att utföra translateringar på objektet. Lite komplext men ett kodexempel gör det nog enklare att förstå!

Observera att ManipulationDelta aldrig kommer att exekveras med en vanlig mus utan det måste vara något slags touch device. Med hjälp av ett projekt på CodePlex som heter Multi-Touch Vista kan man simulera användandet av flera touchpunkter med vanlig mus eller touch pad.

I xaml-filen lägger jag till en bild i en canvas. Till den kopplar jag en MatrixTransform så att jag sedan kan komma åt den från kod. Jag lägger också till en event handler för ManipulationDelta.

<Window   x:Class="WpfApplication13.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
WindowState="Maximized" ManipulationDelta="Window_ManipulationDelta">
<Window.Resources>
<MatrixTransform x:Key="InitialMatrixTransform">
<MatrixTransform.Matrix>
<Matrix OffsetX="200" OffsetY="200"></Matrix>
</MatrixTransform.Matrix>
</MatrixTransform>
</Window.Resources>
<Canvas>
<Image Width="100" Source="/WpfApplication13;component/Images/Sonicspree.jpg" ManipulationMode="All" RenderTransform="{StaticResource InitialMatrixTransform}" ></Image>
</Canvas>
</Window>

I code behind använder jag ManipulationDelta för att flytta bilden baserat på input:

private void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
var delta = e.GetDeltaManipulation(this);
var image = e.OriginalSource as Image;
var matrix = ((MatrixTransform)image.RenderTransform).Matrix;
var originalCenter = new Point(image.ActualWidth / 2, image.ActualHeight / 2);

//Translate on the x and y-axis
matrix.Translate(delta.Translation.X, delta.Translation.Y);

//Get the new center point and rotate around that based on the delta
var center = matrix.Transform(originalCenter);
matrix.RotateAt(delta.Rotation, center.X, center.Y);
center = matrix.Transform(originalCenter);

//Scale the matrix based on the delta
matrix.ScaleAt(delta.Scale, delta.Scale, center.X, center.Y);

//Apply the new MatrixTransform
image.RenderTransform = new MatrixTransform(matrix);

e.Handled = true;

}
 

Notera de två röda prickarna som symboliserar de två möss jag har koppad till den här datorn. Koden i exemplet är baserat på en video på You Tube som också visar applikationen in action.

MultiTouchVS2010 
 

måndag, september 07, 2009

Historical debugging

En ny feature i Visual Studio 2010 är Historical Debugging. Den funktionen erbjuder oss möjligheten att debugga applikationer som redan har kört. Det vanliga sättet att felsöka en applikation idag är att man sätter ett antal breakpoints och kör sedan sin app för att se om man fastnar eller om det smäller. Det är en procedur som ofta är väldigt tidskrävande.

Man kan jämföra Historical Debuggin med svarta lådan i ett flygplan. Med Historical Debugging påslaget information om viktiga händelser som har inträffat i applikationer under exekvering. Därifrån kan man sedan gå tillbaka till ett tillstånd när t ex ett exception inträffade eller en LINQ-fråga exekverades mot databasen och återskapa vad som hände vid just den tidpunkten.

Historical Debugging slås på under Options och man kan där också välja hur mycket information som ska sparas. Antingen bara events eller så väljer man att få hela kakan med events, metoder och parametrar. De tre knapparna under som är disablade i beta 1 visar att man kommer att kunna importera och exportera insamlat data. Det kommer att innebära att man kan exporera en debugginghistorik och dela med sig av den till en annan användare!



Tyvärr ser det ut som att Historical Debugging bara kommer att finnas med som en feature i Developer och Test-versionerna av Visual Studio Team System 2010. Det är tråkigt men förståeligt för att utöka användandet av Team System.

Efter det att exekveringen av applikationen är klar och data är insamlat kan man välja var i listan man vill ”gå in i” applikationen igen. Därifrån kan man sedan enkelt steppa vidare i koden och se exakt vad som händer. Med Historical Debugging påslaget kommer det också att vara möjligt att stega bakåt vid vanlig debugging.

Förutom att det finns stöd i Visual Studio kommer det även att finnas stöd i Camano som är en ny test case management-klient. Det innebär att en testare kan köra applikationen i Camano och, direkt från det verktyget, leverera en felrapport till Team Foundation Server. Utvecklaren kan sedan plocka upp den rapporterade buggen, använda data från Historical Debugging och pdb-filer med källkod för att se exakt vad det var testaren såg när felet inträffade.

måndag, augusti 24, 2009

Dags att använda nUnit igen...

För ett par dagar sedan började jag jobba med NUnit igen. Sista tiden har jag använt mig av Visual Studios unit testing men nu ska vi använda oss av NUnit i projektet som jag sitter i. Det första jag gjorde var att lägga till tangentbordsgenvägar för att kunna köra respektive debugga det test som är i fokus (CTRL +R, T och CTRL + R + T) samt genväg för att köra alla test i en solution (CTRL + R, A). Can’t live without them! Som tur var så använder jag mig av ReSharper som också har en integrerad test runner i Visual Studio.

Sedan skapade jag ett nytt class library och la till referens till nunit.framework och konverterade ett par test som var skrivna med Visual Studios testramverk till NUnit.

En sak som jag alltid har gillat med NUnit är deras Asserts som är mycket mer avancerade än Visual Studios. Det är kanske inte alltid man behöver det men det ökar läsbarheten att kunna skriva:

Assert.That(expected, Is.EqualTo(actual));

Istället för:

Assert.AreEqual(expected, actual);

Så efter att ha copy/paste:at in mina tester och bara uppdaterat attributen till classen och testmetoderna var det bara att köra.

Alla test fungerade bra i NUnits egna testrunner men ett av testen misslyckades i ReSharpers integrerade testrunner i Visual Studio. Det test som rapporterades som misslyckat var ett test som hade attributet [ExpectedException]. Det visade sig att ReSharper inte kan hantera det attributet. Istället för att använda ett attribut för att markera att man förväntar sig ett fel från en metod får man använda sig av en annan assert från NUnit:

var ex = Assert.Throws(() => target.MethodThatWillReturnException());

tisdag, juni 16, 2009

Nyheterna i Visual Studio 2010 Redux

Jag skrev ett inlägg om Visual Studio 2010 i samband med att första CTP släpptes i november 2008. Nu när beta 1 funnits tillgänglig ett tag tänkte jag ta upp det igen.

Initialt tänkte jag fokusera på nyheterna i Visual Studio 2010 och Team Foundation Server 2010 medan nyheterna C# 4.0 får vänta lite…

Mellan varje release av Visual Studio släpps det ett antal tillägg som varje användare får ladda ner och installera själv. Vi har sett det med tidigare med t ex tilläggen till .NET Framework 3.0 och ASP.NET Ajax. Det är funktioner eller utökningar som först har släppts separat för att sedan inkluderas i nästa release av Visual Studio. Det fortsätter även för Visual Studio 2010 som t ex kommer att inkludera ASP.NET MVC, Windows Azure Tools, F#, P-LINQ och JQuery.

Parallell utvecklings kommer att bli mycket enklare i Visual Studio 2010. Det inte bara genom nyheter i språken som P-LINQ utan även en hel del nyheter i IDE´n som ska ge ett bättre stöd. Felsökning och analyser med parallell exekvering ska bli också bli enklare.

Det har länge varit känt att Visual Studio 2010 är omgjord och numera utvecklad i WPF. Detta gör att vi kommer att få se många add-ins till Visual Studio 2010 som antagligen kommer att vara väldigt kreativa. Det kommer också att finnas en hel del nyheter direkt i Visual Studio 2010 där man kommer att använda IDE´n för att göra utvecklare mer produktiva.

Förutom en hel del nyheter och uppdateringar av Team Foundation Server 2010 så kommer även efterlängtade uppdateringar av Visual Studio Team System 2010 Architecture Edition samt Test Edition. Dessa två roller har varit i fokus för nya funktioner och bland nyheterna finns stöd för UML, nya arkitekturdiagram och ett helt nytt verktyg för att köra tester som ser mycket intressant ut.

Det här är delar av det som jag tänkte blogga om framöver som rör Visual Studio 2010!

tisdag, maj 26, 2009

Hur spenderar jag min tid online?

Jag finns med på en del olika sociala nätverk där mitt mått av agerande skiljer sig lite. Jag skriver på två egna bloggar. Dels den här, där jag skriver lite allmänt som rör min profession, och dels en blogg om utveckling på Microsoft Surface. Om det är inlägg som handlar om agil systemutveckling så hamnar det istället på Projektbloggen på Projectplace. Sedan finns jag med på LinkedIn, Twitter och Facebook. Jag har under en tid funderat på vad man ska använda alla dessa kanaler till och känner kanske att det inte ger så mycket att agera på alla. Så när Johan Lindfors twittrade och bloggade samma fråga så började jag fundera lite mer på allvar

Mina bloggar är inte så mycket att fundera på. De har alla olika syften och det känns rätt att separera dem. På surfacedeveloper valde jag t ex att skriva alla inlägg på engelska eftersom att jag där ser en potentiellt större skara läsare medan mina inlägg som rör agile hamnar på projektplatsen. Övriga diverse inlägg som det här hamnar på min mer allmänna blogg. Det är ett upplägg som fungerar bra!


När det sedan gäller de andra tre, LinkedIn, Twitter och Facebook så tänker jag mig att jag har en idé frågan är bara om jag kan genomföra den...

LinkedIn.
Här är jag inte någon speciellt aktiv användare. Jag skickar sällan meddelanden till andra men svarar om jag får ett skickat till mig. Mitt primära användningsområde för LinkedIn är att hitta kontaktpersoner till nya kontakter. Ett exempel är när jag får en ny rekryteringsansökan så kollar jag gärna upp personen på LinkedIn för att se om det finns någon i mitt kontaktnät som känner personen. Där hittar man också ofta länkar till bloggar eller en mer utförlig anställningshistorik. Jag har inte kommit upp till 100% på min profil och det känns som vanligt att det var ganska enkelt att komma upp till 80% men de sista 20% kostar så mycket extra så vi får se om jag någon gång når 100%.

Facebook
Jag kommer inte riktigt ihåg när jag gick med på Facebook eller vem som bjöd in mig men jag har i alla fall varit med ett längre tag. Facebook var kul i början. Jag var aktiv med att göra statusuppdateringar, spela bilspel, svara på quizar osv osv. Dvs sånt som man gör på Facebook. Det hela började med att jag hade några kompisar på min lista men snart så blev mitt nätverk bredare och bredare och nu finns det personer på min lista som jag bara har träffat en gång. Efter ett tag lessnade jag totalt och kan inte längre säga att jag är en aktiv Facebookare. (Update: Sedan jag köpte en IPhone 3GS har jag kommit igång med Facebookandet igen!)


Twitter
Länge var jag mot Twitter. Jag såg ingen som helst mening med att skriva meddelande på 120 tecken eller heller att det skulle ge mig något att läsa så korta meddelanden som andra skrivit. Vad skulle det ha för nytta? Känslan var samma som när SMS kom i mitten av 90-talet. Jag hade väldigt svårt att se hur någon skulle vilja sitta och skriva ett meddelande på en mobiltelefon. Detta trots att jag brukar vara en early adopter! Jag kunde se nyttan i att twittra runt en konferens eller liknande och hade läst twitter feeds både från TechDays och TechEd. Men efter att ha kommit igång så är jag nu fast. Grymt kul helt enklet! Twitter är det jag gillar bäst med Facebook – statusuppdateringar.


Men det är också i och med att jag börjat använda Twitter som de olika nätverkens roll börjar visa sig och här är min grand plan.

Bloggar – Låt står. Som sagt så tycker jag att det fungerar bra som det är nu.
LinkedIn – Låt stå. Inga planer på förändring.
Facebook – Bara personliga vänner och inga jobbkontakter. (Update: Bara personer jag träffat i verkliga livet. Jobbkontakter är alltså helt okej på min Facebook.)
Twitter – Bara jobbkontakter och inte kompisar eller folk som blir för personliga. Ska jag vara helt ärlig så är jag inte intresserad av att följa folk som Twittrar om vad de ska shoppa på vägen hem eller annat privat. Här är jag beredd att göra undantag om det också är undantag att sådana inlägg kommer och personen har något yrkesrelaterat som är intressant att följa. Jag har redan tagit bort personer från min Twitter som jag inte tycker är intressanta.

För att leva som jag nu lär så måste jag alltså börja rensa i min friends list på Facebook och bland de jag följer på Twitter. Eller egentligen bara Facebook eftersom att min Twitter-lista är ganska kort och redan rensad från någon enstaka som jag la till som jag sedan tyckte var för privat.

Om någon nu märker att jag plockar bort dem som ”vän” så är det inget personligt utan bara en anledning till att jag behöver fokusera och hantera mitt liv online!

lördag, maj 09, 2009

Domännamn och Windows Azure

När man skapar och deployar ett projekt till Windows Azure får man två olika miljöer, Staging och Production. Bägge dessa är tillgängliga via en url. Till Staging är det en relativt krånglig url enligt mallen http://{GUID}.cloudapp.net medan i produktion blir urlen enligt den något enklare mallen http://{projectname}.cloudapp.net. Bägge är åtkomliga så snart den virtuella servern har startat igång och du har fått status Started. Observera första gången man skapar ett nytt projekt kan det fortfarande ta lite tid att komma åt den trots att status är Started.

Men om man istället vill ha en cool webadress till sin molnapplikation, hur gör man då? Det har den Steve Marx en lösning för på sin blog Hello my name is Smarx. Efter ikväll kan jag också garantera att hans exempel fungerar perfekt. Så för ca 80 SEK har jag nu ett coolt namn till min kommande killer-cloud-application.

Man registrerar helt enkelt ett domännamn och gör sedan en CNAME-pekning och en Forward från den nya domänen till http://{projectname}.cloudapp.net. Funkar hur bra som helst! Steve Marx visar i sin blogg exakt hur man går tillväga och tipsar om att registrera domänen genom godaddy.com. Det funkar bra men det är otroligt många steg där de försöker sälja på dig alla möjliga varianter av domännamn och tjänster innan man är klar. Men bestäm dig innan och behåll fokus så kommer du till slut till Final Checkout!

torsdag, maj 07, 2009

Windows Azure Geo-Location

För två veckos sedan hade jag ett seminarium tillsammans med Addskills som handlade om Windows Azure. Allt flöt på mycket bra och jag tror att deltagarna var nöjda. Under två 75-minuters pass pratade jag om Azure Services, Windows Azure, .NET Services, SQL Services och Live Services.

En sak som jag nämde var att det kommer att finnas möjlighet att styra var i världen ens applikation eller data finns. Att kunna styra geografisk placering är ett krav för många organisationer som t ex har lagliga krav på sig att deras data inte får lämna en viss region. VI kommer antagligen inte att få se datacenter ner på landsnivå men det finns ett planerat på Irland vilket kommer att möjliggöra att behålla data inom EU.

Möjligheten att styra geografisk placering på WIndows Azure presenterades på MIX09 och förra veckan dök möjligheten upp även för oss användare. Varje applikation placeras i en Affinity Group som sedan knyts till en geografisk placering. I dagsläget finns bara USA Anyware, USA Northwest och USA Northeast.

Om man redan har en tjänst på Windows Azure hamnar den på USA Anyware och får det härliga namnet Unaffinitized. Ett ord som jag inte lyckas hitta någon översättning på. Det finns dock inte någon möjlighet att editera en existerande applikation. Jag testade att stänga ner mina tjänster för att få ändra min Geo-location men det finns ingen länk att göra det. När man laddar sidan så visas under en kort tid en Edit-länk men den försvinner sedan och om man klickar på den innan den försvinner får man ett System.InvalidOperationException.

Allt eftersom att nya datacenter kommer online så kommer det att finnas fler möjligheter att placera sina applikationer.

måndag, mars 16, 2009

Dags för TechDays!

Imorgon är det dags för Microsofts konferens TechDays i Västerås. Jag och Pelle Johansson kommer att köra en session imorgon som heter ”Rundra gränssnitt i en fyrkantig värld” som handlar om hur man kan använda WPF när man bygger addins till Office. Ikväll var vi på tech-check i hörsalen som vi blivit tilldelade. Inget var klart men det är några sessioner innan oss imorgon så det löser sig nog. Hörsalen för övrigt den näst största salen på konferensen och jag tror att den tar ca 150 personer. Vi har hård konkurrens av andra intressanta sessioner som behandlar nyheterna i VS2010 Team System med Magnus Juvas, Modelling in Oslo med Johan Lindfors och Alan Smith, ASP.NET 4.0 med Scott Galloway från ASP.NET teamet i Redmond plus några till. Men med 1300 deltagare så finns det några att dela på.


Just nu sitter vi på Pelles hotellrum i Västerås och slipar på presentationen. Ska bli skönt att köra under första dagen så att man får möjlighet att ta det lugnt och skönt imorgonkväll!

onsdag, februari 25, 2009

Intervjuad på MSDN Radio

Förra veckan intervjuades jag på MSDN Radio. Det var Dag König på Microsoft som intervjuade mig om Microsoft Surface. Vi pratade om Surface i allmänhet, utveckling på Surface och vad vi på Connecta har för planer med vårt bord.

Intervjun är ca 20 minuter och börjar 27 minuter in i programmet. Mer om Surface hittar ni på min andra blog: http://surfacedeveloper.blogspot.com

torsdag, januari 15, 2009

Scrum i Praktiken

Igår kom mitt första inlägg på Projektbloggen upp. Det är en omskrivning av en artikel jag skrev 2007.

---------------------------------------------------
Scrum sägs vara en enkel metod för att hantera komplexa projekt. Det stämmer väldigt bra. Grunderna i Scrum är enkla att beskriva och enkla att förstå. Svårigheten är kanske att veta hur man ska använda den i ett verkligt projekt. Hur använder man Scrum i en organisation som annars kanske jobbar enligt vattenfallsmetoden? Hur anpassar man sig till en organisation som har en fungerande releasehantering enligt t.ex. ITIL?

En del i enkelheten i Scrum är att det bara finns tre olika roller: Scrum master, produktägare och utvecklare.

• Scrum mastern ansvarar för att processen följs och agerar mentor eller coach till teamet och produktägaren.
• Produktägaren är den person som prioriterar kraven efter affärsvärde och styr vad som ska utvecklas i produkten eller systemet.
• Utvecklare är medlemmarna i teamet som ansvarar för att leverera. Det spelar ingen roll om din expertis är inom programmering, arkitektur eller test, i Scrum benämns du ändå som utvecklare.

Sprintar
All utveckling inom Scrum sker inkrementellt i iterationer som kallas för sprintar. Längden på en sprint är individuell men mellan 14 och 30 dagar. I början av projektet kan man experimentera med olika sprintlängder. Det är dock viktigt att sedan bestämma sig och hålla sig till samma sprintlängd. Anledning till att jag tycker att man ska hålla en given sprintlängd är för att man vill ge teamet en känsla över hur långt man ska ha kommit efter en viss tid in i sprinten. Det underlättar också när man estimerar då man enklare kan använda sig av teamets hastighet.

Den första dagen i en sprint spenderar teamet tillsammans med produktägare och Scrum master för att komma fram till vad teamet ska leverera när sprinten är slut. Dagen är uppdelad på två möten, ett där teamet och produktägaren förhandlar om innehållet och ett där teamet tidsuppskattar och bryter ned kraven till uppgifter. Efter dag ett lämnar Scrum över kontrollen till teamet och kräver bara att en gång per dag få status om hur projektet går. Detta sker genom ett dagligt möte som varar max 15 minuter där teamet lämnar status till varandra om hur arbetet fortskrider.

Nu ska teamet börja jobba. Klockan tickar… Bara 29 dagar kvar till en potentiellt levererbar produkt ska vara klar. Vad ska vi göra nu? Hur ska vi kunna leverera den kvalitet som förväntas? Hur ska vi kunna testa den här funktionen som har beroende mot andra externa system som vi inte har tillgång till? Frågorna hopar sig och som sagt… tick tack, tick tack...

Fokus och ostördhet
I det här läget är det många som tar hjälp av eXtreme Programming för att t.ex. få till automatiserade byggen, enhetstester och kontinuerlig integrering. Scrum säger väldigt lite om vad som händer i sprinten, utan betonar att teamet ska lämnas ostört och få möjlighet att fokusera på leveransen. Scrum och XP fungerar väldigt bra tillsammans även om XP i sig är en helt komplett metod. Det som skiljer XP från många andra agila metoder är att den ger väldigt många rekomendationer till vad teamet kan göra under en iternation.

Utbildningar
På marknaden idag finns det en del utbildningar som riktar sig mot Scrum masters men få som riktar sig mot utvecklare i ett Scrum-projekt. Då menar jag inte själva utvecklingen i C#, VB.NET eller Java, utan snarare vad man kan göra för att förbättra kvaliteten och öka produktiviteten i leveranserna. För just produktivitet betonas väldigt tydligt i Scrum.
Ett exemple på en sådan utbildning är Scrum i Praktiken på Addskills. Den kursen riktar in sig mot just teammedlemmar i ett Scrum-projekt. Första dagen handlar om Scrum och om estimering och andra dagen handlar om practises från XP.

Själv gick jag min Scrum Master-utbildning på Citerus i Uppsala med Tobias Fors och Mikael Lundgren och det var en helt fantastisk kurs som jag varmt kan rekomendera.

Någon som har gått eller sett någon annan utbildning i Scrum som inte är någon av de officiella Certified Scrum *-utbildningar?

onsdag, januari 14, 2009

Ny blog!

För några dagar sedan skapade jag en ny blog. Måste också säga att blogger.com är helt lysande!

Den nya bloggen heter Surface Developer. Vad den kommer att handla om känns överflödigt att berätta!

Jag har valt att skriva Surface Developer på engelska av den anledningen att det känns som att det här kan finnas en internationell skara läsare.

Mina första inlägg har handlat om problemen att få Surface SDK´n att fungera på Windows 7 men nu är det klart!

måndag, januari 12, 2009

Dags för Windows 7

I helgen laddade jag ner Windows 7 och installerade på min bärbara dator. Först gav jag mig på en uppgradering men eftersom att det är Windows 7 Ultimate och jag bara har Windows Vista Enterprise så fungerade det inte. Full install var dock väldigt smidig. Bara att mounta imagen och sedan installera direkt från Vista. Hela gamla innehållet på C-disken sparades i en katalog som döptes till Windows.old.

Sedan var det dags för installation av Office Ultimate och då dök det hittills enda problemet upp. Sedan länge har jag haft Daemon Tools som favoritprogram för simulering av cd-drive men den installationen fungerade inte. Datorn hamnade bara i en oändlig omstarts-loop…

Efter en stunds letande hittade jag en rekommendation att använda PowerISO tillsammans med Windows 7 och det visade sig fungera alldeles utmärkt. Än så länge har jag inte sett några begränsningar i den gratisversion som jag laddade ner.

Installationen av Office funkade perfekt. Jobbets version av F-secure, anslutning till domänen på och konfigurering av Outlook fungerade också smidigt.

Beta 1 av Windows 7 finns publikt tillgänglig för nerladdning samt genom ett msdn-abonnemang. Den helt publika länken kommer att finnas tillgänglig tills de kommer upp till 2,5 miljoner nerladdningar och installationen slutar fungera efter den 1 augusti 2009. Men innan dess har ju i alla fall beta 2 kommit så då får man ta resan en gång till.

Hittils så är känslan av Windows 7 bara positiv. Den känns mycket smidigare och snabbare än Vista. Har faktiskt otroligt liten koll på vad som är nytt men det lär visa sig...

torsdag, januari 08, 2009

Tillbaka!

Första dagen tillbaka efter en ganska lång ledighet över julen vilket har varit otroligt skönt. Omställd till att äta frukost kl 11 var det lite tungt att kliva upp tidigt imorse och försöka få upp barnen i tid till dagis och annat. Men det funkade till slut!

Har medvetet varit så frånkopplad som möjligt under ledigheten och fick börja dagen med att skriva upp en lista med allt som måste göras. Enklaste sättet att ta reda på det är att gå igenom senaste månadens mail och lägga. Tyvärr funkar jag så att det som inte finns i ett mail, det finns inte. Så drygt 800 mail senare känner jag mig lite mera uppdaterad. (nej, jag har inte läst alla idag…)

På listan hamnade saker som att planera lite utbildningar, teamkonferens, skriva till blogginlägg, avsluta personer som tyvärr valt att sluta på Connecta och planera för såna som börjar nästa vecka.

Det verkar dock som att andra har jobbat medan jag varit ledig för det har hänt saker sista veckorna!

Windows Azure
I ett av mina många mail fanns inbjudningskoderna till Windows Azure Services så nu ska det bli kul att testa det på riktigt också. Passande nog har min artikel om Windows Azure, som jag skrivit för Addskills, också publicerats. Den finns med i årets kurskatalog. Där finns också min kollega Hans Sterby med som har skrivit en artikel om F#.

Månadens profil på MSDN
I höstas blev jag intervjuad av Johan Lindfors på Microsoft vilket resulterade i att jag blev månadens profil i december. Grymt kul!

TechDays
Den 17 och 18 mars kommer Microsofts konferens TechDays att hållas i Västerås och under julledigheten har siten fått ett uppdaterat innehåll. Nu finns en hel del av sessionerna och talarna med. Från Connecta får ni hålla utkik efter fyra talare på tre sessioner:
• Varför F# och vad är funktionell programmering? – Hans Sterby
• SharePoint Workflows, experiences from the field – Daniel Karlsson (med Mattias Lindberg från Microsoft)
• Runda gränssnitt i en fyrkantig värld - Hur man kan kombinera styrkan i WPF för rika gränssnitt med Office 2007 – Pelle Johansson & Björn Eriksen
Missa inte chansen att delta i vad jag tror kommer att bli en riktigt bra konferens på (nästan) hemmaplan.

Projectplace
Från januari kommer jag att börja skriva inlägg på Projcetplace blogg. Projectplace har funnits sedan 1998 och erbjuder ett webbaserat projektverktyg. Det är den webbplats jag brukar referera till när man säger att Software As A Service är något nytt. Där kommer jag att skriva om allt möjligt som har med agile och Scrum att göra.

Microsoft Surface!
Nu är det äntligen klart. Vi kommer att beställa ett Surface-bord till Connecta! Mycket mer om detta senare!