fredag, juni 08, 2007

MSAD Orlando lukker

Så er det ved at være tid til at lukke afdelingen i Orlando. Det har været nogle begivenhedsrige dage, med både godt fagligt indhold, gode oplevelser uden for messecentret og godt selskab :-)


Forude venter et antal flyture, hvoraf den første med lidt held (og sikkert en del bestikkelse), vil give mulighed for at se den kommende affyring af Atlantis fra Kennedy Space Center. Flyafgang er en time før countdown, så der bliver nok ikke tale om nogen kollision, men det er da interessant at man flyver i samme område og på samme tidspunkt :-)

Vi håber at kunne genåbne afdelingen den 9. - 13. juni 2008.

Fremtidig Sharepoint Udvikling

Det bliver muligt at konvertere sharepoint templates til kode og få det chacket ind i versions styring. Målet er at have styr på hvad man leverer, lave installationspakker, og at enhver skal kunne installere dem.

Why Software SUCKS

...det var titlen på et indlæg jeg deltog i tidligere. Der var fuldt hus og mere til - så meget at foredragsholderen blev lidt paf og måtte tage billeder til scrap-bogen. Nu var det heller ikke det største lokale på messen, men alligevel må vi være en del, der synes at software kune være bedre.

Der var som sådan ikke så meget nyt under solen:
  • Udviklere synes det er sjovt at skrive fancy kode, men det er ikke sikkert at brugeren har et behov for denne funktionalitet - den kan snarere bidrage til forvirring og frustration.
  • For ti-tolv år siden var kun en brøkdel af den nuværende brugerskare på nettet, og de, der var, var nørder, som tænkte på samme måde som de, der leverede inholdet/ydelserne. Siden da er brugerskaren mere end 500-doblet, men uden at man nødvendigvis tænker på at brugeren derved også er en anden.
Som eksempel brugte han docking-mulighederne i office. Kommer en almindelig bruger til at flyttet på en værktøjslinie, kan dette medføre frustration over hvad der er sket (forudsat at brugeren ikke kender til konceptet).

Hans hovedpointe var "Kend din bruger for han er ikke dig" - en lille reminder til os nørder.

Et eksempel en god app var google, hvor man default får vist google i det sprog som IP-adressen tilhører, men hvor man meget nemt kan sætte en cookie, hvis man ønsker et andet sprog. Modsætningen hertil var UPS (amerikansk postselskab), hvor man på deres hjemmeside først skal vælge et land, før man overhovedet kan få noget funktionalitet. Og her var der da også muligt at sætte en cookie, men det skulle man selv vælge (hvilket brugeren først gør ved 2., 3. eller måske 4. besøg). Før der er valgt sprog, kan man ikke lave noget som helst, og hans pointe var, at man skal klikke en hel det, før man kan komme til f.eks. at søge via Track and Trace. I modsætning hertil, kunne han i google sætte et T&T-nummer ind i søgefeltet og herefter få vist et hit, der foreslog at gå direkte til UPS' T&T service. Altså meget hurtigere, end på UPS' site!

Windows Server Core

Windows servere kommer nu også i en core version hvilket vil sige at de kun indeholder de applikationer de er beregnet til.
F.eks. kan man få en med IIS. Brugergrænsefladen består af en shell. Fordelen ved dette er at serveren kræver mindre og det gør dem ideelle til brug i virtuelle server farme.

torsdag, juni 07, 2007

Workflow til at styre forløbet i din applikation.

Matt Winkler kom og fortalte om et nyt lille framework de har lavet som bruger Windows Workflow Foundation til at styre flowet i brugergrænsefladen. Det virker lidt ligesom struts, men vil kunne bruges på tværs af web og windows klienter.


Ideen bag det er at i stedet for at skrive logik på sine sider, sender siderne events. Workflowet holder så styr på hvad der så skal ske. Man har i workflowet en klar model over hvordan brugergrænsefladen hænger sammen. Den enkelte side ved til gengæld ikke noget om de andre sider og kan fokuseres til kun at tage sig af visning.

Afkoblede brugergrænseflader med CAB

Composite UI Application Block hedder det og er f.eks. beregnet til de steder hvor man gerne vil have at en bruger skal kunne bruge flere applikationer der skal opføre sig som en.


Det er lavet således at man laver en hoved applikation, og der i specificerer man nogle egenskaber alle klient applikationerne skal bruge. Det kan f.eks. være at specificere at der en flade til i applikationen de underliggende programmer kan udnytte. Derudover kan det være ressourcer der specificeres, som f.eks. hvad er valgt.

Alle de underliggende applikationer kan udvikles helt adskilt og kan kommunikere med hinanden uden at kende hinanden. Det goeres igennem de kanaler hovedapplikationen har specificeret.

Et eksempel på noget, der både skal anvendes af alle applikationer, men som samtidigt kan være nødvendigt at lægge ud som plugin, er sikkerhed. Hvis man udvikler en applikation, som kun skal anvendes af én kunde, kan man godt lægge sikkerhed ind som en del af hovedapplikationen, men hvis man udvikler produkter, som kan anvendes af flere kunder, kan man i stedet lægge det ned i en (flere) komponent, som kan udskiftes alt efter om kunden ønsker sikkerhed via certifikat, fingeratryk, password, etc.


Det hele saettes sammen runtime vha. Dependency Injection i en plugin arkitektur.


Til at understøtte det hele er der Smart Client Software Factory, der kan generere noget af det for en.

VS 2008 - forbedret support for web

Den nye Visual Studio 2008 vil webudviklere med garanti blive glade for. En meget væsentlig forbedring er understøttelse af intellisense i Javascript! Og det ser faktisk ud som om det er gennemtænkt. Et par eksempler:
I min includefile inc.js har jeg følgende kode:

myDate function() {
var myString = "string";
return new Date();
}

Når jeg koder min metode og anvender myString, vil der efter at variablen er erklæret være intellisense herpå, så man kan anvende de metoder en string tilbyder i JavaScript. Når så variablen senere i metoden evt. ændres til f.eks. en integer, vil der kun være denne klasses metoder og properties til rådighed. Det virkede ret stærkt.

Men det stopper ikke her. Jeg kan også dokumentere mine metoder ved at anvende

myDate function() {
///<summary>Gør noget</summary>
///<returns>Noget</returns>

}

Den vågne læser vil nok lægge mærke til at mine dokumentationstags står inden i metoden, og det var åbenbart den eneste måde det kunne gøres på. Men det positive er, at jeg nu i min hovedside vil have intellisense til den metode der ligger i en includefil.

Udover intellisense, er der meget overblik over den CSS man anvender - dels ved at HTML'en ikke bliver stylet direkte, men at det foregår i CSS-klasser og derudover findes der et utility der viser hvorfor et bestemt element bliver stylet som det gør.

tirsdag, juni 05, 2007

PowerShell: Linux, nu til Windows

PowerShell er det der svarer til en linux prompt til windows. Med powershell kan man f.eks. kombinere kommandoer vha. pipes. Det gør bla., at man i en linies kode f.eks. kan hente alle breugerne i en brugergruppe, smide den der hedder Børge over i en anden brugergruppe, sortere denne efter efternavn og smide hele resutatet ned i en html fil.

PowerShell kommer til at blive understøttet af Microsofts server produkter og man kommer selv til at kunne integrere til den vha. Cmdlets (commandlets) fra .Net. Umiddelbart ser det ret fornuftigt ud til hvis man skal lave administrative værktøjer til at administrere sine applikationer.

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

LINQ Framework: døden for foreach (og WM-BOF)

Med det kommende LINQ, vil megen kode man skriver i dag til .Net < 3.5 forsvinde. LINQ frameworket drejer sig ikke blot om at man kan mappe sit databaseskema til objekter, men lige så meget om at lave queries mod sine data, hvad enten de kommer fra en XML-fil, et dataset, en tabel, eller simpelt hen blot fra en collection. I praksis betyder det, at alt hvad der implementerer IEnumerable interfacet, kan tilgåes med LINQ. Det betyder også at hver gang man overvejer at anvende et foreach-loop, bør man gentænke og se om ikke LINQ er svaret i stedet.
En lidt blæret ting, som meget kort blev demonstreret var, at et query på en flereprocesserarkitektur kan køre parallelt og dermed sikre hurtig afvilking. Der blev ikke gået i detalger med dette, men mon ikke der nok skal findes adskillige anvendelsesmuligheder i dette?
Hvis man anvender VB.Net, får man yderligere support for XML skrevet direkte i sin kode.

Agile development

En frokostsceance omhandlede Agile Development. Her blev Test driven development (TDD) og protoyping nævnt som elementer i en udviklingsmetode der blev præsenteret ved følgende manifest:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Det skal forståes ved at elementerne til højre er værdifulde, men at man tillægger elementerne til venstre mere værdi.

Der blev lagt vægt på principper om nærhed i projektet (specielt mellem udviklere og forretningsanalytikere/brugere), løbende evaluering, mange afleveringer, tidlig leverance af brugbar funktionalitet (’den nemmeste måde at spise en elefant på, er at dele den op i mindre bidder’), at give tillid og motivere den enkelte, åbenhed overfor ændringer i krav – også sent i udvilkingsforløbe og endelig løbende fokus på teknisk kvalitet og godt design.

WPF - Store muligheder til præsentation

Præsentationen 'A Lap Around WPF' ved Rob Relyea, introducerede mig for Windows Presentation Foundation. Her er tale om en helt ny platform til (ikke overraskende...) præsentation. WPF omhandler:
  • Forms (traditionelle Winforms)
  • Gaming/3D (DirectX)
  • Web (Ajax)
  • Silverlight
  • Smart Clients
Her er tale om en helt ny måde at lave præsentation på og mulighederne virker uendelige. En af mulighederne er at præsentere data på en grafisk måde, som hjælper brugeren til at oversue dem via illustration. Et eksempel var taget fra lufthavnen i Zürich: Her findes data omkring de enkelte fly, deres belægningsgrad og deres færden i lufthavnen. Et næsten fyldt fly bliver rødt ned til halespidsen, mens et halvtomt er grønt fra halen og til midten og ellers rødt. Dette illustrerer belægningsgraden. Flyenes placering i lufthavnen, deres retning og hastighed, vises på et oversigtskort, og herved kan man følge det enkelte flys færden i lufthavnen. Se mere på http://wpf.netfx3.com/direct/zurich/zeuswpf.xbap

Frameworket består af et antal typer af contents: panels, 2D grafik, 3D grafik, kontroller, imaging, flow documents, text mm. Disse er meget avancerede elementer, som har til formål at give en god brugeroplevelse. Et eksempel på hvad der gør en kontrol anderledes end det vi kender fra traditionelle kontroller, var at man kunne databinde hvad som helst til dem, f.eks. blev der i en listbox vist et antal objekter, f.eks. tekster og billeder. Det væsentlige er, at det hele er vektorbaseret, og at man derfor har rige muligheder for at lave zoom, rotation og andre fine finesser i sin brugergrænseflade. Et eksempel herpå er Seattle Post Intelligencer (Seattle PI Reader), som er en online-avis, hvor man har en langt bedre måde at læse avisen online (nemmere navigation mellem artikler, mulighed for zoom mv.).
Alt i alt er der store muligheder i dette - spørgsmålet er blot hvor moden brugerne er til at tage imod dette, men det vil tiden vise. Én ting er sikkert: Microsoft skal helt sikkert nok markedsføre det.

OR - mapning, nu også fra Microsoft

Ja, I læste rigtigt. I fremtiden vil Microsoft også have et objekt orienteret persistens framework.
ADO.Net Entity Framework hedder det. Det opererer som de fleste andre persistens frameworks med en mapningsfil, hvor relationerne er defineret. Entity framework kommer til at arbejde godt sammen med LINQ, og kommer ikke til at være låst til SQL Server (under forudsætning af at der er andre der skriver providere til andre databaser).

Under demonstrationen var der flere ting der ikke kunne demonstreres endnu. Det er på nuværende tidspunkt kun muligt at mappe på grundlag af en eksisterende database.

I første version kommer Entity Framework ikke til at kunne operere på POCO objekter, men det er meningen det skal komme til det i fremtiden. Det er til at starte med heller ikke muligt at arbejde med persisterede objekter disconnected.

mandag, juni 04, 2007

WCF. Den nemme måde at lave service orienteret arkitektur.

Tom Fuller fortalte om hvorledes man kan udnytte SOA til at opnå en afkoblet arkitektur. Det kan gøres ved at lave sine services kontraktstyrede (sagde nogen interfaces? :)).
En af de gode ting ved WCF er at man kan specificere kontrakter til kommunikation meget detaljeret, og vil derfor være en stor hjælp til at lave sin SOA bedre. En anden fordel ved WCF er at den platforms bevidst, og f.eks. ved hvilke datatyper der ikke virker på alle platforme. Alt i alt skulle WCF altså være ret godt for fremtidens SOA.

Keynote

Så er keynoten overstået. Iscenesættelse er de gode til :) Bob Muglia skulle fortælle lidt om alle de nye ting. Først kom Christopher Lloyd dog og tog ham tilbage til fremtiden for at fortælle ham at han nok hellere skulle fortælle om realitererne end om hvilke visioner ms har langt ud i fremtiden.


Til at hjælpe sig havde Bob Muglia en række medtalere, og den bedste var nok vice precident i Gartner der fortalte om hvad der skal til for at en virksomhed klarer sig... Forandringsvillighed og ikke kun økonomiske hensyn og process som f.eks. CMMI.


Ellers var det meste en lang salgstale for en række nye produkter, bl.a. Windows Server 2008 og Silverlight - et stort show der desværre trak ud så man ikke kunne nå at være med til starten af de første sessioner.

torsdag, maj 31, 2007

TechEd - et overflødighedshorn af sessions

Fly og hotel er bestilt, passet kom for en uge siden, kreditkortet er pudset af (og koden genfremsendt) og i eftermiddag bliver der hentet lidt startvaluta i banken. Forude venter tre flyveture - fra afgangen hjemme i Aalborg og til vi ankommer til hotellet, går der ca. 20 timer. Så er de praktiske detaljer efterhånden på plads.

Her to dage før afrejse til TechEd er det derfor oplagt at forberede sig ved at udpege de indlæg der er interessante. Det er ikke lige ud ad landevejen, idet der er 874 sessions (dog med enkelte gengangere imellem) at vælge imellem.

Mit fokus vil nok være på arkitektur, og gerne et par sessions der anlægger en filosofisk synsvinkel på softwareudvikling.

Ét indlæg der umiddelbart kunne pege i den retning er: "Why Software Sucks", som måske kan forklare hvorfor jeg af og til bander og svovler over det stykke hardware ligger foran mig, men som dybest set jo ikke er skyld i den dårlige brugeroplevelse man nogen gange får.

Naturligvis skal der også være nogle lidt mere hardcore tekniske sessions. Her vil jeg satse på at få mere viden om specielt LINQ men også AJAX og hvad der nu ellers er på programmet. Læs om indholdet her: https://www.msteched.com/public/sessions.aspx.

Bloggen vil blive vedligeholdt af både Rune og undertegnede, og når vi først kommer rigtigt i gang vil vi nok i fællesskab forsøge at holde den opdateret.

På vej til TechEd2007

Jeg har læst programmet til teched igennem for at få et overblik over hvad jeg skal høre om. Det er dog ikke sådan lige til. Til tider er der 36 paralelle spor og det er meget svært at vælge.

Jeg vil prøve at fokusere på følgende typer information til konferencen.

  • Integration til 3. part
  • Windows Communication Foundation
  • Windows Presentation Foundation
  • Windows Workflow Foundation
  • Silverlight
  • PowerShell
Jeg har på forhånd fravalgt farvede indlæg som f.eks.: "Hvorfor VPC er bedre end Vm-Ware". Det lyder ikke særligt sagligt :)


Tirsdag aften er jeg blevet inviteret ud at spise med ms' hjælpeværktøjs afdeling. Jeg modtog en mail hvor man blev opfordret til at skrive tilbage hvis man havde noget på hjertet mht. hjælpesystemerne til udviklerne.

Jeg listede hurtigt et par punkter op:

  • Det er ikke muligt at dokumentere alle dele af sine .net applikationer. F.eks. er det meget svært at dokumentere operator overloads
  • Da .Net ikke har checked exceptions, er man MEGET afhængig af at exceptions bliver dokumenteret ordentligt. Jeg har brug for en måde at være sikker på at exceptions fremgår af dokumentationen.
  • Hvis navngivningen er fornuftig er hjælp ikke så vigtig. Her tænker jeg f.eks. på System.Collections.Generics
  • Selvom understøttelse af flere sprog er et stort salgsargument, vil jeg som udvikler gerne undgå at skulle tage stilling til flere sprog. Det gælder i hjælpen såvel som i bøger.
  • Frameworket i .Net er en lukket kasse. Det er ikke muligt at debugge ind i frameworkets metoder. Hvis du f.eks. prøver at databinde og får en fejl er det ikke sikkert det er særligt nemt at finde ud af hved der er gået galt.

Hvis der er nogen af jer der har en issue mht. ms hjælpe værktøjer kan i jo skrive det som en kommentar her.