Vem är Johan Lindfors

Jag jobbar som teknisk chef på Microsoft i Sverige och ansvarar för vår tekniska evangelisering mot utvecklare. I den här bloggen har jag för avsikt att skriva om utveckling i allmänhet och på Microsofts plattform i synnerhet.

Är du intresserad av en XNA användargrupp?



Visa resultat!

Get Microsoft Silverlight

Missa inte dina fria timmar i molnet med MSDN

För dig som har en MSDN prenumeration finns det fria timmar att dra nytta av i Windows Azure Platform. Här finns det en riktigt bra beskrivning över hur du går tillväga för att använda timmarna och utvärdera plattformen, GRATIS!

Click to download Walkthrough DocumentsFråga: Varför måste jag ändå mata in ett kreditkort?
Svar: Tjänsten är designad så att ju mer du konsumerar desto mer kostar det. Det betyder att när dina fria timmar är slut så kommer din prenumeration att börja ticka kostnader, men du kan i processen markera att du inte vill automatiskt förnya din prenumeration på det sättet utan istället välja att “kliva av” när de fria timmarna är slut.

Glöm inte heller att ladda hem det uppdaterade “training kit” som nu finns tillgängligt. Där finns laborationer som snabbt hjälper dig igång med de olika komponenterna i Windows Azure Platform.

Postades 18. juni 2010 14:12 av Johan Lindfors
Taggar:

Hantera synlighet av element baserat på orientering

En dialog som nyss dök upp i en diskussionslista var angående hur det går att agera på förändring i orientering av enheten som då kan uppdatera gränssnittet. Med Windows Phone 7 och Silverlight så kan du markera dina sidor i en applikation till att ha stöd för både Portrait (stående) och Landscape (liggande) eller bara en av dem om så önskas. Med hjälp av de inbyggda panelerna så kommer sedan elementen i din applikation att automatiskt ställa in sig till skärmens orientering, mycket smidigt, men det finns begränsningar.

Exempelvis kalkylatorn i Windows Phone 7, har liksom kalkylatorer i andra plattformar, mer knappar synliga vid liggande orientering än vid stående. Men hur kan vi i våra applikationer förändra ett elements synlighet baserat på orientering?

Databinding och “value-converters” till räddningen.

Genom att helt enkelt databinda det element som vi vill ska kunna synas eller inte, specifikt egenskapen Visibility, till egenskapen på sidan som heter Orientation. Dessvärre så har dessa egenskaper olika typer och det är där en konverterare kommer till sin rätt. Följande kod skapar en en-vägs-konverterare (i och med att jag inte implementerar ConvertBack metoden) som hanterar konverteringen:

public class LandscapeVisibilityConverter : IValueConverter
{
    public object Convert(
        object value,
        Type targetType,
        object parameter,
        CultureInfo culture)
    {
        var orientation = (PageOrientation)value;
        Visibility visibility = Visibility.Collapsed;
        switch (orientation)
        {
            case PageOrientation.Landscape:
            case PageOrientation.LandscapeLeft:
            case PageOrientation.LandscapeRight:
                visibility = Visibility.Visible;
                break;
            default:
                break;
        }
        return visibility;
    }

    public object ConvertBack(
        object value, 
        Type targetType, 
        object parameter, 
        CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Hoppas att du får användning av den! Det är precis lika enkelt att skapa en PortraitVisibilityConverter, men det fixar du själv va, eller hur Smile

Postades 16. juni 2010 23:08 av Johan Lindfors

Optimera prestanda i Silverlight-applikationer för WP7

När du börjar utveckla applikationer för Windows Phone 7 med Silverlight så är det naturligtvis viktigt att kontinuerligt ha koll på systemresurser och optimera applikationens olika delar som exempelvis animationer. Allt för att få till en så bra upplevelse som möjligt för användaren.

Då kan det vara bra att slå på följande egenskap:

Application.Current.Host.Settings.EnableFrameRateCounter = true;

UPPDATERING:

I applikationer som väljer att visa SystemTray (som visar batteri osv) så kommer räknarna att hamna bakom denna, det betyder att för att vara säker på att se räknarna så är följande kodrader att föredra:

this.SetValue(Microsoft.Phone.Shell.SystemTray.IsVisibleProperty, false);
Application.Current.Host.Settings.EnableFrameRateCounter = true;

Då kommer du att få fem stycken räknare högst upp i vänsta hörnet som ger följande information:

  1. imageRender thread frame rate
  2. UI thread frame rate
  3. Vram used
  4. # textures used
  5. # intermediate textures used

Mer information om detta kan du få här: http://live.visitmix.com/MIX10/Sessions/CL60

Postades 11. juni 2010 17:35 av Johan Lindfors

Windows Phone 7 applikationer med lokal cache av data

Vill varmt rekommendera en presentation från TechEd 2010 i New Orleans som har titeln “Occassionally Connected applications with Windows Phone 7” som hölls av Rob Tiffany. Rob pratar om hur vi kan optimera våra applikationer både på servern och klienten för att underlätta kommunikation mellan telefonen och servern med hjälp av exempelvis WCF,  REST och JSON. Rob tar också upp en användning av Singelton-mönstret för att skapa en lokal “databas” av objekt som kan serialiseras ned på disk (i IsolatedStorage) för cachning av data samt hantering av tillstånd.

En mycket intressant diskussion med bra kodexempel och pedagogiskt upplägg!

Postades 11. juni 2010 17:06 av Johan Lindfors
Taggar: ,

Windows Phone 7 Developer Hub den 9:e juni!

Nu har det äntligen blivit dags för den första utvecklardagen som helt fokuserar på Windows Phone 7. Till min stora glädje så har vi lyckats få hit två internationella talare som bidrar med ytterligare djup och förståelse för plattformen, Ben Riga och Neil Hutson!

image003 Under dagen kommer vi att titta på både Silverlight och XNA som tekniker för applikationer på Windows Phone 7. Vi kommer också att titta ytterligare på vilka typer av applikationer som redan har börjat skapas samt hur Metro, det nya designspråket för Windows Phone 7, kan användas för att göra eleganta och effektiva applikationer som följer mönster och rekommendationer för plattformen.

Mellan 09.00 och 16.30 håller vi på den 9:e juni på Hotell Clarion Sign i centrala Stockholm. Anmälan kan göras redan idag! Vi bjuder på både lunch och fika under dagen!

Jag hoppas kunna publicera en detaljerad agenda inom kort, men det kommer bli mängder av teknik, massvis med demos och riktiga telefoner på scenen, säkerligen lite klämma och känna möjligheter också!

Här följer agendan för dagen:

Titel Längd
Introduction to Windows Phone 7 45 minuter
Lap around tools 15 minuter
Building Silverlight Applications for Windows Phone 90 minuter
Hardware Access (camera, accelerometer, touch, etc. ) 60 minuter
Building Windows Phone games with XNA 60 minuter
Efficient Design 75 minuter
Market Place 30 minuter

Vi hoppas fortfarande på att ha några fysiska enheter på plats för dig som deltagare att klämma och känna på, inget går väl upp mot “the real thing”. I värsta fall får jag bygga några själv enligt den här beskrivningen Smile

Ben Riga
Ben RigaBen Riga is Senior Technical Evangelist for Windows Phone 7 in Microsoft's Developer and Platform Evangelism  (DPE) group.  His responsibilities include demonstrating the compelling business value of the Windows Phone platform and how it extends the Microsoft stack to the device to help customers and ISVs to more quickly deliver mobile applications.  Ben supports the Microsoft field by engaging in key projects, recruiting target customers/partners, engaging customers and partners with feedback and managing the all-up engagement pipeline.

Neil Hutson
Neil Hutson Neil Hutson is the Senior Director of Technical Evangelism at Microsoft Corp.  In this role he is responsible for exciting developers about Microsoft’s emerging platform technologies and tools and leading key activities for Microsoft’s Premier PDC and MIX events. Over the past year the group has been focused on a number of major launches such as Windows Azure, Windows 7, Sharepoint and Visual Studio 2010. With the developer announcement of Windows Phone 7 at MIX10, Neil would like to share his knowledge of the platform here in Sweden. Prior to his current role, Neil was Director of Technical Evangelism for Windows Server, Microsoft Corp and also Chief Architect for .NET, Microsoft Europe, Middle East and Africa.

Jag kommer inte heller att kunna hålla mig från scenen, vad hade du väntat dig? :)

Anmäl dig idag!!!

Postades 19. maj 2010 20:33 av Johan Lindfors

MSDN TV Live – Nyheterna i Silverlight 4 nu på Channel9

Fredagen den 14:e maj höll Danwei Tran en presentation om nyheterna i Silverlight 4 som nu går att se på Channel9. Det kom tre frågor efter presentationen som jag här vill ge lite svar på:

Fråga: Hur ser det ut för Silverlight på andra plattformar?
Svar: Silverlight utvecklas av Microsoft för Windows (både PC och Windows Phone 7), Mac OSX och även för Symbian. Novell håller sedan på i och med Moonlight projektet att göra tekniken tillgänglig även på Linux.

Fråga: Finns Expression Blend med i MSDN prenumerationer?
Svar: Jajamensan, i prenumerationern med MSDN Premium eller högre så finns Expression Studio med och där ingår Expression Blend.

Fråga: Kan olika Silverlight applikationer i samma webbsida kommunciera med varandra?
Svar: Japp, tekniken som används är så kallade Senders och Recievers. Det finns en bra artikel på MSDN och jag har laddat upp ett kodexempel som använder VS2010 om du vill testa på tekniken själv.

Nästa vecka kommer Dag König att gå igenom CodeContracts i och med .NET Framework 4.0!

Postades 14. maj 2010 22:50 av Johan Lindfors

Integrera BlogEngine.NET med Facebook

Hittade ett inlägg på tyska som beskrev hur du kan integrera Facebooks “Gilla” knapp med BlogEngine.NET och det var väldigt, väldigt enkelt.  Här är en enkel och snabb guide även på svenska:

Du öppnar PostView.ascx som finns i ditt temas underkatalog till just Themes-katalogen. Lägg sedan till nedanstående kod där du ser det vara lämpligt och där du vill ha knappen synlig. Jag har som synes exempelvis valt att lägga den direkt under titeln på respektive inlägg.

<iframe style="border-bottom: medium none; border-left: medium none; width: 700px; height: 25px; overflow: hidden; border-top: medium none; border-right: medium none" src="http://www.facebook.com/plugins/like.php?href=<%=Post.PermaLink %>&layout=standard&show-faces=true&width=50&height:25px&action=like&colorscheme=light" frameborder="0" allowtransparency scrolling="no"></iframe>

Hemligheten ligger i <%=Post.PermaLink %> som genererar en permanent länk till inlägget och alltså blir det som registreras hos Facebook.

Vill du veta mer om funktionen och olika parametrar så rekommenderas facebooks dokumentation!

Postades 7. maj 2010 22:22 av Johan Lindfors

Uppgradera ASP.NET 1.1 till senare versioner

Något som börjar dyka upp hos svenska webbhotell är önskan att flytta kunder som ligger kvar på tidiga versioner av ramverk till senare, uppdaterade versioner. Exempelvis kunder som idag köra ASP.NET 1.1 bör åtminstone flytta till ASP.NET 2.0. Frågor som ofta dyker upp i dessa situationer kan vara följande:

Fråga: Varför ska jag överhuvudtaget fundera på att flytta?
Svar: Jag har tre skäl som jag tycker väger ganska tungt:

  1. Bättre prestanda!
    Med den nya processmodellen och arkitekturen i ASP.NET 2.0 erbjuds en betydligt bättre prestanda än tidigare.
  2. Större ekosystem!
    ASP.NET 2.0 har funnits ute i flera år och har under tiden skapat en stor community av både utvecklare, företag och ramverk som baserar sig på åtminstone .NET Framework 2.0. Det betyder att det finns komponenter, tillägg, produkter och även support att hitta i betydligt större utsträckning än tidigare versioner.
  3. Bättre säkerhet!
    Det här är en sanning med modifikation för så vitt jag vet så finns det idag inga kända säkerhetshål i ASP.NET 1.1 som inte är patchade, men däremot så finns det bättre verktyg och beskrivningar för hur en säker webbplats ska skrivas, skapade för ASP.NET 2.0 och senare. Det borde i slutändan också leda till säkrare lösningar.

Fråga: Hur kan jag förbedera mig inför en flytt?
Svar: Det finns massvis med bra dokumentation och artiklar skrivna om just migrering från ASP.NET 1.1 (och .NET Framework 1.1 generellt) till senare versioner. Här är en uppsättning länkar:

Den sista artikeln svarar också på en del av frågorna runt vilka applikationer som ska migreras, och vilka som helt enkelt ska tas bort eller skrivas om, bra läsning!

Postades 6. maj 2010 15:00 av Johan Lindfors
Taggar:

Utveckla mot HTC HD Mini

Onsdagen den 5:e maj lanserades HTC HD Mini mot en skara utvecklare i Stockholm och jag hade förmånen att få stå på scenen och berätta om enhetens förmågor och hur vi som utvecklare kan dra nytta av dessa i våra applikationer.

Jag började med att berätta om Visual Studio 2008 och hur du kan fixa till en lite roligare upplevelse i utvecklingsmiljön genom att lägga till en formfaktor, enligt det tidigare publicerade inlägget. Jag har därför publicerat upp en ny .zip-fil med de filer som behövs för att få till upplevelsen med HTC HD Mini som formfaktor.

Design-upplevelsen
Tyvärr så kan inte Visual Studio 2008’s grafiska designer visualisera hur gränssnittet i HTC HD Minin ser ut med upplösningen 320x480 och en DPI på 128. Det innebär bland annat att den nedre menyraden kommer att vara högre (45 pixlar totalt) på enheten till skillnad från hur den ser ut i designern. Toppfältet med formulärnamn osv är på 25 pixlar, designytan för formuläret blir då 410 pixlar vilket jag har tagit för vana att sätta explicit på formuläret. Jag har också stängt av AutoScaleMode vilket gör att WISIPMWIG eller “what I see is pretty much what I get!” Smile

imageEmulator för HTC HD Mini
Jag visade också att jag använt den ovannämnda .zip filen (eller åtminstone innehållet) och skapat en skräddarsydde emulator-bild för HTC HD Mini. När du gör det, se till att välja “Windows Mobile 6.5.3 Professional Square QVGA Emulator” som bas-image och modifiera sedan gränssnittet till att vara 320x480 istället för 320x320. Det räcker eftersom den bas-image har samma DPI som HTC HD Mini. Dessvärre har jag inte fått iordning på knapparna på emulatorn, eller egentligen att mappa alla knappar till dess riktiga funktioner. Just nu fungerar bara samtalsknapparna, power och volymknapparna.

MyMobiler, ett måste för presentatörer
Ett verktyg som jag verkligen har börjat gilla är MyMobiler som låter dig via USB visa skärmen från din fysiska enhet direkt på din vanliga skärm, utan dokumentkameror osv. Det enda som kan sägas vara negativt egentligen (som jag kommer på vid skrivandets stund) är att bilden tenderar att ha lite “lag” och vara lite hackig, men det kan är också riktigt trevligt att kunna demonstrera funktioner som sensorer som annars är lite svårt att visa. Även MyMobiler har stöd för skräddarsydda “skins” och här har jag laddat upp ett skin för HTC HD Mini som du kan använda om du känner för det. Packa upp i en underkatalog till installationen av MyMobiler och peka ut konfigurationsfilen i MyMobiler.ini så bör allt fungera. Även här har jag inte lyckats att få iordning på knapparna, men det kanske är sekundärt eftersom jag ändå vanligen visar enheten som styrs som vanligt med ett finger.

Funktioner i HTC HD Mini
Jag pratade sedan en del om några funktioner som kan användas med olika ramverk och exempelkod. Exempelvis SensorAPI som finns på codeplex och som exponerar G-Sensorn (accelerometern), ljussensorn och även en orienterings-funktion som kan användas för att ta reda på hur enheten hålls och på det sättet trigga stående eller liggande upplösning.

Gester
Jag tog också upp de gester som det finns stöd för i Windows Mobile och hur det redan finns tillgängligt både exempelkod och videos som visar hur den kan användas via MSDN.

Widgets
En applikationstyp som ibland glöms bort är så kallade widgets. Widgets är webbapplikationer som körs lokalt men använder vanligen AJAX för att via XmlHttpRequest objektet hämta externa data asynkront. Widgets kan precis som “vanliga” exe-filer distribueras och säljas via Marketplace, så om du har byggt gadgets tidigare så kommer du snabbt igång och kan även tjäna pengar på dina alster. Widgets körs i en sandlåda men kan ändå persistera visst tillstånd mellan exekveringarna. Med det senaste DTK’t till Windows Mobile 6.5.3 så finns det även två projektmallar som kan användas för att bygga, testa och installera widgets på enheten (eller i emulatorn). Det som kan underlätta är då visserligen att när du vill testa din widget så har det så kallade “harness” som används för debuggning inte stöd för HVGA upplösning utan bara QVGA och VGA. Därför har jag också publicerat en alternativ “harnessHtcHdMini.html” med medföljande javascript fil som du kan kopiera in i debuggningskatalogen för din widget (på din dator) och sedan testa med. Då får du en upplevelse som mer stämmer överrens med den faktiska enheten. Eller så använder du emulatorn så klart Smile. Mikael Söderström har skrivit en utförlig artikel om hur du kan bygga widgets för Windows Mobile, väl värd läsningen! Han har också byggt en egen widget-emulator och publicerat på, ja just det, codeplex.

Model-View-Controller
Jag nämnde också det MVC-ramverk som kan användas på Windows Mobile 6.5 och som också finns publicerat på codeplex. Det är ett riktigt trevlig ramverk som kan underlätta testbarheten och flexibiliteten i din applikation. I och med den eleganta designen, så finns det även stöd för visuell design av vyerna vilket säkert kommer att uppskattas av flera, men förkastas av några Winking smile.

Rikare upplevelser
Mot slutet visade jag några exempel på ramverk som erbjuder en rikare upplevelse än vad som vanligen erbjuds med WinForms i Visual Studio 2008. Här är listan på de som jag nämnde och visade:

image
Avslutningsvis så vill jag inte missa att tipsa om de mängder av instruktionsfilmer som finns publicerad på MSDN om just utveckling mot Windows Mobile, där kan du hitta lösningen på flera av de vanligaste utmaningarna både med video-exempel, kod och dokumentation.

Tack till dig som deltog på frukostseminariet och glöm inte, må bäste man vinna Winking smile

Postades 5. maj 2010 20:21 av Johan Lindfors
Taggar: ,

MSDN TV Live – SharePoint 2010 och integration

SharePoint 2010 är numera en släppt produkt och du kan ladda ner den från MSDN. “Bland alla nyheter så är det främst integrationsmöjligheterna i produkten som är intressantast”, anser André Henriksson, Partner Evangelism Manager på Microsoft. Under fredagens presentation kommer han att titta på integration både bakåt och framåt, dvs mot bakomliggande servers via Business Connectivity Services och framåt via Client Object Model från olika typer av klienter.

Om du har frågor redan nu som du vill ha besvarade under webbsändningen, kontakta André via hans blogg!

Datum Fredagen den 30:e april
Tid 12:00-13:00
Plats Klicka här för att ta del av sändningen!

OBS: Webbsändningen använder Office Live Meeting och kommer att innehålla presentation, demonstration och ljud (via datorn). Innan du går med i webbsändningen så behöver du installera Office Live Meeting-klienten!

Postades 29. april 2010 06:34 av Johan Lindfors

Den här bloggen använder BlogEngine.NET 1.6.0.0
Temat anpassat av Johan Lindfors