Welcome to MSDN Blogs Sign in | Join | Help

Windows 7 ISV Remediation workshop (uge 25)

Microsoft har søsat et nyt initativ der hedder Windows 7 Remediation Workshops. Formålet er at assistere vores ISV partnere i at sikre applikationskompatabilitet med Windows 7. Workshoppen vil forberede klientapplikationer til certificeringen “Compatible with Windows 7 Logo”.

Dette er en god mulighed for at få “trykprøvet” klientapplikation(er), sammen med en Microsoftkonsulent. Vi vil hjælpe dig med at finde eventuelle kompatabilitets problemer og opstille løsningsforslag hertil.

Før mødet anbefaler vi klart at man læser Windows 7 Application Quality Cookbook og ser den 60 minutters video om Windows 7 Compatibility på msdev.com.

Du registrer dig her. Bemærk at du skal vælge Danmark, samt en dato i uge 25 der passer jer. Vi kan ikke garantere plads til alle.

Selve workshoppen afholdes i vores lokaler i Vedbæk:

MTCC, Bygning D.
Frydenlunds Allé 6
2950 Vedbæk
Denmark

Posted by henrikwh | 1 Comments
Filed under: ,

Kom til TechTalk med David Chappell 29. maj

Chappell holder TechTalk i Vedbæk 29. maj om Cloud Computing. Du tilmelder dig her.

Her har du detaljerne:

Reach for the Cloud!

Cloud computing looks like the biggest change to hit our industry in many years.

Join this TechTalk where David Chappell will give his perspective on today’s most visible cloud platforms, including Windows Azure, Amazon Web Services, Google AppEngine, Salesforce.com Force.com, and others. The goal is to describe the basics of each platform, show how they compare to one another, then offer some guidance on how to make good decisions for using them.

This TechTalk will be in English. It is open for everybody and participation is free

When: May 29 2009 from 09:00-10:45
Where: Microsoft Development Center Copenhagen, Frydenlunds Allé 6, 2950 Vedbæk

Posted by henrikwh | 1 Comments
Filed under: , , ,

Download Windows 7 RC nu!

Skulle det være gået din næse forbi, så ligger Windows 7 RC til download her.

God fornøjelse ;-)

Posted by henrikwh | 1 Comments
Filed under:

MIX online

For de af os der ikke er i Las Vegas til MIX konferencen, så vil alle sessioner ligge online kort efter de er afholdt. MIX09 starter 18. marts og slutter 20. marts.

MIX er i udgangspunktet tiltænkt designere. Så jeg er sikker på at vi kan vente os spændende nyheder om bl.a. Silverlight 3.0. Men der vil også være masser af godt for udviklere. Bl.a. vil der komme fokus på Windows Azure og SQL Data Services, som vil komme til at understøtte relationelle data gennem Tabular Data Steam Protocol.

Posted by henrikwh | 2 Comments
Filed under: ,

Anvendelse af MEF og lidt leg med WPF og Surface

Efter at have kigget lidt på MEF i teorien (1) (2), så har jeg fået brugt det i praksis.

Sammen med Martin Esmann er udviklingen af Surface Billed/Video applikationen nu blevet til en “Surface MEF applikation” hvor man selv kan skrive plug-ins til.

surfacedemo 

Så nu fungerer applikationen på følgende vis:

  1. Læg et tag på Surface bordet. Surface tags ser sådan her ud:
    __surface_coin_bw2
    Et tag er en surface-læsbar-stegkode. Som jeg hørte det på PDC, kan et tag indholde 2 Guid’s (temmelig mange unikke tags). UI’et ovenfor er designet til at tag’et sidder på bagsiden af en telefon.
  2. Instantier en usercontrol uden om tag’et med TagVisualizer kontrollen.
  3. Kald en webservice (hosted på Windows Azure selvfølgelig) hvor input er værdien af tag’et (ovenfor er det hex 0XC0). Webservicen returnerer en Dictionary<string,string> som er name-value pairs som feks {“welcometext”,”Hej Henrik!”} som brugt ovenfor.
  4. Load plug-ins. Ovenfor loades 4 stk (Videos, Clear, Flickr og Twitter).
  5. Hvert plugin har nu, i denne implementering, mulighed for at tilføje et UIElement til et Stackpanel (ovenfor har vi været så fantasifulde at vi kun har tilføjet SurfaceButtons), og udover det, så kan hvert plugin tilføje items til et datalag der er databundet til mit ScatterView. I demoen ovenfor har Flickr plugin’et hentet billeder fra min Flickr konto og smidt dem ind i scatterview’et
  6. Når tag’et fjernes fra bordet igen, så fjernes alt som du har tilføjet.

Hvis vi kigger på lidt kode, så lad os først kigge på hvordan et plugin ser ud når MEF anvendes. Efterfølgende kigger vi på SurfaceApplikationen som konsumerer plugins.

Nedenstående kode er implementeringen af min “Clear” service/plugin, som ikke gør andet end at slette alle mine elementer fra scatterview’et.

public interface ISocialAction
{
    UIElement GetUIElement();
    IDataProvider dataprovider { get; set; }
    ICloudDataProvider clouddata { get; set; }
    string tag { get; set; }
}
[Export(typeof(ISocialAction))] public class ClearService :
ISocialAction { [Import(typeof(ICloudDataProvider))] public ICloudDataProvider clouddata { get; set; } [Import(typeof(IDataProvider))] public IDataProvider dataprovider { get; set; } public string tag { get; set; } SurfaceButton sb = new SurfaceButton(); [ImportingConstructor] public ClearService([Import("Tag")] string tag) { this.tag = tag; } public UIElement GetUIElement() { sb.Content = "Clear"; sb.Click += new RoutedEventHandler(sb_Click); return sb; } void sb_Click(object sender, RoutedEventArgs e) { dataprovider.RemoveItems("default"); dataprovider.RemoveItems(tag.ToString()); } }

Det interessante i oventstående er, at jeg først laver en [Export(typeof(ISocialAction))]. Altså udstiller jeg klassen som et plugin af typen ISocialAction. Derefter er der 3 imports som er interessante. Første import binder til et plugin af typen ICloudData. ICloudData er bare en lille wrapper om min Azure webservice og er ikke så interessant her, da jeg ikke bruger den. Dernæst er der IDataProvider som er lidt indpakning af ObservableCollection<ScatterViewItem>. Implementeringen er ligegyldig, men mit interface og Export ser sådan ud:

public interface IDataProvider
{
    IEnumerable<ScatterViewItem> GetItemsByTag(string tagid);
    void AddItems(string tagID, List<ScatterViewItem> list);
    void AddItem(string tagID, ScatterViewItem item);
    IEnumerable<ScatterViewItem> GetItem<T>(string tagid);
    void RemoveItems(string tagID);
    void RemoveItems<T>(string tagID);
}
[Export(typeof(IDataProvider))]
public class DataProvider : IDataProvider
{
    static public ObservableCollection<ScatterViewItem> items { get; set; }

….

Sidste import er mit Tag som jeg bruger i constructoren. Det vil sige, at når jeg konstruerer en ClearService, så finder konstruktøreren selv en Export der matcher dette import.

Når jeg så placerer en tag (tag’et telefon) på Surfacebordet, så kalder jeg følgende kode fra min usercontrol:

[Import(typeof(ISocialAction))]
public IEnumerable<ISocialAction> Actions;
CompositionContainer c;
public void Init(int tag)
{
    this.VisualTag = tag.ToString(); ;
    var catalog = new AggregateCatalog();
    System.IO.Directory.CreateDirectory(@"c:\temp\Extensions");

    catalog.Catalogs.Add(new DirectoryCatalog("Extensions"));
    catalog.Catalogs.Add(new DirectoryCatalog(@"c:\temp\Extensions"));
    c = new CompositionContainer(catalog);
    var batch = new CompositionBatch();
    batch.AddPart(this);
    c.Compose(batch);
    foreach (var ext in Actions)
    {
        UIElement ui = ext.GetUIElement();
        this.Stackpanel.Children.Add(ui);
    }
….

Det interessante her at når Compose bliver kaldt, så matches alle imports og exports, og jeg får instantieret min Actions property, så jeg kan kalde GetUIElement på alle ISocialAction’s.

På denne vis har vi fået en god opdeling mellem selve Surface applikationen og de funktionaliteter (plug-ins) som der er. Faktisk kan vi tilføje plugins dynamisk ved at smide dll’er som indeholder ISocialActions i c:\temp\Extensions.

Posted by henrikwh | 0 Comments
Filed under: , , ,

Metro: WPF og Silverlight kursus

Så er der igen et par kursus tilbud til eksisterende Metro medlemmer. Metro er for Certified og Gold Certified ISV’er. Før du tilmelder dig, skal du være sikker på at du er tilmeldt Metro og virksomhedens profil er opdateret. Har du spørgsmål kan ringe eller skrive til mig.

Begge kurser afholdes i Vedbæk.

MTCC, Building D
Frydenlunds Allé 6
2950 Vedbæk
Denmark

Windows Presentation Foundation (17/3 til 19/3)

Windows Presentation Foundation (WPF) er et nyt avanceret API til konstruktion af såvel traditionelle Windows brugergrænseflader såvel som 2D og 3D grafik. WPF kan bruges til at lave såvel traditionelle line-of-business applikationer som eksempelvis egentlige multimedieorienterede applikationer. Blandt fordelene ved WPF kan nævnes en fælles og ensartet tilgang til udvikling og brug af de forskellige brugergrænsefladeelementer, adgang til meget kraftfuld styling af applikationer samt let adgang til konstruktion og afvikling af animationer.

Kurset retter sig mod erfarne .NET udviklere, der har arbejdet med udvikling af Windows applikationer.

Den foreløbige agenda er som følger:

  • Introduktion til WPF
  • Tools
  • Layout
  • Kontroller
  • Fundamentale begreber
  • Data
  • 2D grafik
  • Tekst og dokumenter
  • Interoperabilitet
  • Introduktion til 3D

Tilmelding her.

Silverlight 2 (14/4 til 16/4)

Silverlight 2 er et cross-platform browser plugin der gør det muligt at udvikle rige medie oplevelser og rige internet applicationer i browseren baseret på .NET.  Med Silverlight introducerer Microsoft deres mulighed for at lave en rig applikation, der også kan understøtte og arbejde med virksomhedens forretningslogik på en nem og fleksibel måde.

Kurset giver en grundig gennemgang af alle de muligheder som ligger i Microsoft Silverlight 2.0. Deltagerne vil lære at udvikle Rich Internet Applications (RIA) med den nyeste Silverlight teknologi og lære hvordan man kan integrerer Silverlight med eksisterende ASP.NET Applikationer.

Den foreløbige agenda er som følger:

Dag 1:
- Introduction
- XAML
- New Language Concepts
- Layout
- Input
- Text
- Controls

Dag 2:
- Application Structure
- Data Binding
- Control Customization
- Animations
- Expression Blend/Design
- Data in Silverlight

Dag 3:
- Server Communication
- ASP.NET Integration
- Localization & Globalization
- Silverlight Toolkit
- Architecture
- Threading, Performance, Debugging
- Silverlight Roadmap

Tilmelding her.

Posted by henrikwh | 1 Comments
Filed under: , ,

Næste kig på Managed Extensibility Framework

Jeg kigger her på hvordan man bruger ImportingConstructor og loader assemblies dynamisk med MEF. Jeg bygger videre på eksemplet fra min første blogpost om MEF.

Når man begynder at arbejde lidt videre med MEF, så kommer man hurtigt ud i, at man har mange imports og eksports. Brug af ImportingConstructor gør livet lidt nemmere, og koden lidt mere læselig, da du kan reducere dine import attributter. Gennem ImportingConstructor så får du initialiseret alle dine variable (Imports) via konstruktøren. 

[Export(typeof(IProducer))]
public class SuperProducer : IProducer
{
    public string str{ get; set; }
    [ImportingConstructor]
    public SuperProducer([Import("MyInput")]string i) {
        this.str = i;
    }
    public string Produce()
    {
        return "Hello Universe "+ str;
    }
}

Det betyder at når konstruktøren eksekveres, så kræver det, at der er en export der matcher importen i constructoren ([Import("MyInput")]. 

[Export("MyInput")]
string input = "Input to SuperProducer";

Måske endnu mere interessant bliver det, når man begynder at kigge på hvordan parts (imports og exports) kan loades dynamisk. I det følgende instantierer jeg et AggregateCatalog som er et catalog der selvsagt aggregerer catalogs. I dette tilfælde bruger jeg AssemblyCatalog og DirectoryCatalog. DirectoryCatalog er interessant, da det læser alle assemblies i folderen som den får som parameter. Herefter bruger containeren, der matcher imports og exports i den dynamiske komponering, alle de import og exports der findes i assemblien.

var catalog = new AggregateCatalog(new ComposablePartCatalog[] { 
              new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()),
              new DirectoryCatalog("Plug-ins")
            });
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);

Jeg syntes MEF ser rigtig lovende ud. Mit fulde eksempel kan downloades her.

Posted by henrikwh | 1 Comments
Filed under: , ,

Et første kig på Managed Extensibility Framework i .NET 4.0

Set med mine øjne, så er Managed Extensibility Framework (MEF) en af de rigtig interessante ting der kommer med .NET 4.0. Sagt lidt firkantet, så er MEF beregnet til på nem vis at lave understøttelse for plugins. Guiden på Codeplex er i rimelig stand efter releasen af Preview 4.

Pointen med en plugin model er, at man istedet for at have en applikaiton der er statisk kompileret, så har man en applikation der er dynamisk komponeret. Det betyder, at der på runtime loades plugins ind, som så tilføjer funktionallitet til applikationen. På denne vis, opnås en meget løst koblet applikation.

Kort sagt, så fungerer MEF ved at du kan dekorere metoder, klasser, properties og variable med Import og Export attributter. En Export attribut betyder at man stiller en klasse, metode, property eller variabel tilrådighed og en Import betyder at man konsumerer en Export. I nedenstående har jeg lavet lavet en producer/consumer applikation. Pointen er, at jeg har 2 produceres (men potentielt set mange) og en consumer, som skal kunne consume output fra producerne. 

public interface IProducer
{
    string Produce();
}
public interface IConsumer
{
    IEnumerable<string> Consume();
}
[Export(typeof(IProducer))]
public class Producer : IProducer
{
    public string Produce()
    {
        return "Hello World";
    }
}
[Export(typeof(IProducer))]
public class SuperProducer : IProducer
{
    public string Produce()
    {
        return "Hello Universe";
    }
}
[Export(typeof(IConsumer))]
public class Consumer : IConsumer
{
    [Import(typeof(IProducer))]
    IEnumerable<IProducer> producers;

    public IProducer producer { get; set; }

    public IEnumerable<string> Consume()
    {
        foreach (var producer in producers)
        {
            yield return producer.Produce();
        }
    }
}

I ovenstående implementerer de to produceres interfacet IProducer. Begge producerklasser er dekoreret med [Export(typeof(IProducer))], hvilket vil sige, at de begge stiller klasserne tilrådighed eksponeret gennem IProducer interfacet. Man kan også bruge [Export("MinExport")] og tilsvarende import istedet for at bruge et interface eller en klasse som parameter (jeg foretrækker brugen af interfaces). Min consumerklasse implementerer IConsumer og er dekoreret med [Export(typeof(IConsumer))]. Desuden har Consumer klassen også en attribut der er dekoreret med [Import(typeof(IProducer))], hvilket er den mest interessante attribut i ovenstående, fordi den “binder” alle Exports til sig der matcher typeof(IProducer). Variablen “IEnumerable<IProducer> producers” vil altså i den “dynamiske komponering” blive instantieret med alle de exports der matcher importen (Producer og SuperProducer). 

Men lad os kigge på den dynamiske komponering. Nedenfor anvender jeg ovenstående consumer.

class Program
{
    [Import(typeof(IConsumer))]
    IConsumer cons;
    public void Run()
    {
        foreach (var item in cons.Consume())
        {
            Console.WriteLine(item);
        }
    }
    public Program()
    {
        var catalog = new AggregateCatalog(new[] { 
new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()) }); var container = new CompositionContainer(catalog); var batch = new CompositionBatch(); batch.AddPart(this); container.Compose(batch); } static void Main(string[] args) { Program p = new Program(); p.Run(); Console.ReadKey(); } }

Hele magien sker i constructoren Program(). Det er her den dynamiske komponering sker. I dette eksempel er komponeringen ret simpel. Jeg kigger kun på “Executing Assembly”, men jeg kunne have kigget på andre assemblies, hvis jeg have haft imports eller exports i dem som jeg ville drage nytte af. I sidste linie af constructoren kalder jeg compose. Det er compose der matcher alle imports og exports, som er indeholdt i mit catalog.

Når jeg har kaldt compose, så er alt instantieret. Variablen “IConsumer cons” nu bundet til et Consumer objekt. Mit Consumer objekt har desuden fået instantieret “IEnumerable<IProducer> producers” og jeg kan nu gennem min cons enumerere mine consumeres og kalde consume på dem, hvilket jeg gør i Run().

mefConsoleOut

Ret elegant. Meget nemt. Super letvægtigt. Det er nu helt frit for alle at lave Produceres til min applikation, bare de implementerer IProducer og er dekoreret med korrekte attributter. Blandt venner, så fungerer dette fint, så længe der ikke er nogen der laver en EvilProducer : IProducer.

Vil man stille en plugin arkitektur til rådighed for eksterne, så ville jeg også kigge på CLR-Addins, som blandt andet stiller plug-in/add-in sandboxing og security tilrådighed. Der er er par gode artikler om CLR-addins her (1) (2).

Posted by henrikwh | 2 Comments
Filed under: ,

Erfaringer med “Den indvendige hestesko”

Nu har vi forsøgt os med den indvendige hestesko. Formålet med at stille bordene op i en indvendig hestsko, har været at minimere afstanden mellem de personer som laver eller burde lave mest videnudveksling. Lidt inspireret fra Pair programming. Vi har nu siddet i den indvendige hestesko i 2 månender.

IMG_2960_small

Lidt (objektive) erfaringer:

  • Det generelle støjniveau er blevet højere. Det lader til at både vi i hesteskoen og andre kollegaer mærker det – specielt når emner der interesserer alle bliver bragt på banen.
  • 3/4 af os der sidder i hesteskoen får noget fagligt ud af det og syntes det fungere fint og har positive tilkendegivelser over for setuppet
  • Teknolgiske problemer/udfordringer kommer hurtigere på banen.
  • Løsningerne bliver formentlig bedre, fordi der kommer forskellige synsvinkler på problemstillingerne kva bedre diskussioner.
  • I og med at dialogen og interaktionen er blevet tydligere mellem os på gulvet, så har cheferne også fået bedre indblik i hvad vi laver, samt hvordan vi samarbejder.
  • Arbejdssituationen/konteksten burde være den samme for alle i hesteskoen. F.eks. ville det være helt optimalt hvis man arbejder på samme produkt/projekt.
  • Alle i hesteskoen skal være indstillet på at give køb på lidt privatsfære, og være klar på at bidrage med noget intellektuel båndbredde til hesteskoen for at få det til at fungere

Så der er ingen tvivl om, at det klart betyder noget. 3/4 af hos har klart øget vores interaktion og videndeling. Jeg syntes det fungerer fuldstændig efter hensigten. Prøøøøv det ;-)

Posted by henrikwh | 3 Comments

VS 2010 & .NET 4.0 training kit

God bagjul og godt nytår:-)

Jeg faldt lige over et VS 2010 & .NET 4.0 training kit

Training kittet indeholder to præsentationer:

  • Overview of the .NET Framework 4.0
  • Overview of the Visual Studio 2010

Desuden er der en række hands-on-labs:

  • Visual Studio 2010: Office Programmability
  • Visual Studio 2010: Test Driven Development
  • Parallel Extensions: Building Multicore Applications with .NET
  • Introduction To Managed Extensibility Framework
  • ASP.NET AJAX
  • ASP.NET Dynamic Data
  • Intro To Project "Velocity"
  • Intro To F#

Hvis du vil prøve nogle af hands-on-labs, så skal du downloade VS 2010 og .NET 4.0 VPC'et. 

Effektivitet *= 3.14 …. helt gratis

Hvad gør I/du for at blive bedre og hurtigere, og/eller hurtig bedre? Smid en kommentar og del med os andre. Vi snakker lavt hængende frugter! Lad os starte med hvad jeg ikke tror det er (hvis det skal være gratis). Bedst illustreret ved et opslag i manualen:

Unit test, code review, Continuous Integration/Automatiseret build, versionsstyring, UML, ALM og meget meget mere. Alt sammen er super vigtigt, men intet af det er gratis. Sikkert langt fra. Personligt, så er jeg strukturfascistJ Så det der kan sættes i system og/eller automatiseres er jeg stor tilhænger af at får gjort, så længe systemet ikke kommer i vejen. Formålet er selvfølgelig at få frigjort mere tid til egentlig udvikling, samt at få mere kvalitet i både proces og produkt. Men, det er heller ikke noget af det der kommer af sig selv.

Så kan vi tage fat i management disciplinerne og metoderne: Scrum, eXtreme Programming, Den lærende organisation, Knowledge management, Selvstyrende teams, LEAN og meget mere. Men der er heller ikke noget her der er gratis. Desuden har, syntes jeg, teorierne en tendens til at blive lidt højtsvævende og noget som er drevet af en eller anden stabsfunktion, som har mange gode intentioner.

Her er min lavt hængende frugt (måske):

Den indvendige hestesko

Nedenfor er der et billede af vores afdeling – det kunne være et billede af et hvilket som helst kontorsetup! Jeg mener grundlæggende at der noget galt med den måde vi (ja sikkert også dig) indretter os på rent fysisk.

Se bort fra at der ikke sidder nogen og arbejder samt at vi ikke har ryddet op. Du får den ucensurerede udgave;-)

Jeg har mange dejlige og smukke kollegaer;-) Men når vi sidder ved vores borde, så er vores primære udfordringer på skærmen og reelt set, så har vi ikke brug for at kigge hinanden i øjnene. Men alligevel indretter ALLE deres kontorer, så de sidder overfor hinanden (gør du?). Jeg vil gerne sidde med ryggen til at alle mine kollager. Når vi udvikler software, så er det en kreativ/intellektuel proces, uden at det skal lyde som om at det er sort magi. Men processen ville drage stor nytte af, at flere deltog, eller bare kiggede sporadisk med. Hvilket vel ikke kun gør sig gældende for softwareindustrien.

Så formålet med den indvendige hestesko er:

  • Fokusere mere dialog omkring det der sker på skærmen
  • At kunne give og modtage hjælp hurtigere (man vender sig om)
  • Mulighed for at blande mig i det der er sjovt (og hvor jeg kan bidrage)
  • At blive forstyrret på den fede måde, fordi en kollega har noget at bidrage med

Jeg tror det kan koges ned til mere effektiv videndeling. Måske en blidere/mere fleksibel implementering af Pair Programming?

Fredag flytter vi om! Rene, Daniel og Martin er påJ Det må stå sin prøve. Jeg ved ikke om det involverer en sav, da vores borde klart er skabt til at passe 100% i en cubicle. Jeg skal nok vende tilbage med en opdatering, og nogle erfaringer.

Jeg håber også på at få gode ideer fra jer! Små som store ideer.

Posted by henrikwh | 5 Comments

Windows 7 Developer Guide

Vi har udgivet en Developer Guide til Windows 7. Den giver er godt overblik over Windows 7. Det er et ikke teknisk dokument.

Desuden er der en række videoer fra PDC og Channel 9 som dækker mange af de samme emner som også er beskrevet i guiden.

Posted by henrikwh | 0 Comments
Filed under: , ,

Farvel Threads, goddag Tasks

Det lader til at vi med Parallel Extensions godt kan sige farvel til Threads. Daniel Moth gennemgår Parallel Extensions og Task Parallel Library i denne session på PDC. Jeg syntes sessionen giver et godt overblik over, hvorfor det giver mening at begynde at tænke i Tasks i stedet for Threads. Ved brug af Task objektet bruges de nye features i threadpoolen. I sessionen kan du spole frem til 16:30, her illustrerer Daniel hvad forskellene er i threadpoolen og viser efterfølgende API'et for Task. Ret lækkert!

Jeg deltog på preconf'en, Concurrent, Multi-core Programming on Windows and .NET, på PDC. Alle preconfs er ikke optaget. Men oktoberudgaven af MSDN Magazine omhandler også parallelisering og jeg kan se Joe Duffys indlæg på preconfen stærkt inspireret at hans artikel i MSDN Magazine.

Posted by henrikwh | 1 Comments
Filed under: , , ,

C# 4.0, hvad kommer der?

Der var så mange spændende sessioner på PDC. Og eftersom min kærste har forbudt at jeg kloner mig, så har jeg måtte lave nogle fravalg. En af dem jeg missede var Anders Hejlsberg (ja ja ja, jeg ved det godt:-/ ).

Anyways, langt de fleste sessioner ligger online. Jeg har nu fået set Anders's, Future of C#.

For det første er den temmelig underholdende. Det høres også tydeligt på grinmasserne fra publikum.

Anders gennemgår kort historikken for C#, og så tager han hul på C# 4.0. Nyhederne er kort sagt:

  • dynamisk typed objekter
  • valgfrie og navngivet parametre
    • Herunder forbedret COM Interop, som er resultat af ovenstående
  • Co- og Contra-varians

Til sidst, snakker Anders lidt om visionerne som ligger længere ude i fremtiden.

Du kan se sessionen her.

Posted by henrikwh | 1 Comments
Filed under: ,

SQL Server 2008, sildes fra Metro event med Miracle

11. og 12. november afholdte Microsoft et Metro event for ISV'er om SQL Server 2008. Vi var så heldige at Miracle havde mulighed for og lyst til at dele ud af deres erfaringer.

Alle slides ligger på deres website.

Posted by henrikwh | 1 Comments
Filed under: , ,
More Posts Next page »
 
Page view tracker