onsdag, november 05, 2008

Mer från PDC; Oslo

Följande sessioner om Oslo tittade jag på:

TL23 A Lap around "Oslo"
TL27 "Oslo": The Language (M)
TL18 "Oslo": Customizing and Extending the Visual Design Experience (Q)
TL28 "Oslo": Repository and Models

Och trots min envishet, så är jag inte så säker på att jag blev så mycket klokare av det. Javisst, om du har behov av att skapa en DSL, så blir detta nog M-delen ett rent lätt och bra sätt. Men det är en bit kvar till att jag tror att det blir "The Way" att bygga applikationer, Q som det visuella verktyget heter är byggt på Oslo-sättet, och är fullt customizerbart för att användas som visuellt verktyg för din egen app, för att lyckas med det bör du nog ha varit med i teamet som byggde Q. Oslo är bara en CTP på ett ambitiöst halvårsgammalt projekt. Spännande, titta gärna, men det är långt kvar till något färdigt.

En del av tanken bakom Oslo projektet är att applikationer som SharePoint och Microsoft Dynamics ska "out of the repository business".

Mer från PDC; TL51 Research: Contract Checking and Automated Test Generation with Pex

Denhär sessionen var kanon, jag missade ett par minuter i början, och har inte Spec# helt aktuellt, men som jag fattade det är Contract Checking-delen det som kommer in i C#4.0 från spec#, mycket trevligt, det kan ju aldrig skada att få ytterligare en möjlighet att uttrycka sina intentioner. men precis som t ex när man skriver unittester så är det viktigt att välja rätt saker att styra upp betendet kring, annars kan det snärja dig längre fram.

Sen kommer PEX som ett imponerande extra verktyg. Det hjälper dig att kolla om du under alla omständigheter håller vad du lovar i både kontrakt och asserts. Jag tvivlar på att jag kommer att använda PEX dagligen, men i en del sammanhang kan det absolut vara till hjälp.

Sessionen som helhet rekommenderas varmt.

Mer från PDC; PC54 Mono and .NET

Den här sessionen gav en underhållande inblick i nuvarande status för Monoprojektet. Bl a annat visade Miguel features som Anders Hejlsberg förhandsvisade för C# 5.0, och som han då kallade compiler as a service. Som eval i JavaScript.

Mer från PDC; TL58 Research: Concurrency Analysis Platform and Tools for Finding Concurrency Bugs

Har en stund över innan det mer intensiva valvakandet börjar i New York, så jag skriver några korta rader om ytterligare saker som fångade mitt intresse lite extra på PDC. Som en hjälp att söka i djungeln av sessioner.
Concurrency Analysis Platform and Tools for Finding Concurrency Bugs, rekommenderas varmt, hjälp för att hitta concurrency buggar genom att köra ditt testprogram med olika schedulering av trådarna i förhållande till varandra. Något som är mycket svårt att få fram på egen hand, ger dessutom möjlighet att debug'a den kombination som framkallade ett fallerat testfall. Både för native kod och för .NET.
Hmm, jag gör så att jag beskriver en session per post.

tisdag, oktober 28, 2008

PDC 08 keynote tisdag

Massor av spännande saker visades, jag rapar upp ett litet urval av det som råkade fastna:
Som gammal MFC-programmerare blir man ju lite sugen på att skapa en ny MFC-app o se hur det ser ut med den nya ribbonskontrollen...
Släpps idag bl a en ribbonkontroll till WPF. Och en VisualStateManager, så man kan hantera visual state på samma sätt som i Silverlight.
Fortsätter om en stund, dax att rusa till nästa session.

C# 4.0

Från PDC08 måndagen
Anders Hejlsberg höll en bra session om nyheterna i C# 4.0.
Jag tar och sliter ut min favorit från det han sa:
Dynamic den nya statiska typen i C# 4.0, fantastiskt trevlig i många sammanhang. Som object, men man kan anropa alla tänkbara metoder på den, det kompilerar, sen kan det naturligvis bli runtimefel. På så sätt kan man slipper en massa casts. Men man får o andra sidan ingen intellisence.

Med detta kommer en rad olika bindings mot olika språk. Mot .NET objekt så används .NET bindingen, som via reflection anropar invoke på metoden, alltså inget magiskt nytt, men snyggare och renare syntax.

Det finns även bindings mot COM, IronRuby, JavaScript, IronPython, så nu plötsligt blir det samma rena syntax oavsett språk :o)

dynamic game = GetGame(); //Game kan vara ett COM-objekt eller t ex ett
game.Play(); // JavaScripts-objekt

måndag, oktober 27, 2008

Nyheter i .NETs typsystem

Första vanliga sessionen på PDC, en usel presentation, men ett intressant ämne. Det handlade om att bädda in interface i det konsumerande assemblyt. Om man som i talarens exempel ska automatisera excel via COM-interrop så är interropassemblyt 1,2 MB, men med den nya kompilatorswitchen slipper man deploya det stora interropassemblyt utan får istället en kopia av de lilla man använder i sitt eget assembly. I hans lilla exempel blev det 2 kB. Så det var nummer ett: inbäddning av typer. Den andra delen var typekvivalens eller type equivalence. Detta gör att om interfacet ändras så kan man ändå använda de gemensamma delarna. Gissningsvis har detta även kommit för att bättre kunna stödja dynamiska språk, walks like duke, sounds like a duke, it must be a duke...
Sammanfattningsvis, mycket kortfattat, så får vi verktyg för att hantera system där klient- och server-kod utvecklas och deployas oberoende av varandra. Trevligt. BTW, på keynoten annonserade Microsoft sin nya serviceplattform, Azure, men det kan ni säkert läsa om någon annanstans.

First day of PDC

OK now I have finished the pre conference. This was about WCF. Juval Löwy tried to convince us that we should use WCF for all classes, that WCF is not about communication, but it's the new way of programming. Interesting. Ron Jacobs finished with some demos about how easy it is to make RESTful services with WCF 3.5.

onsdag, augusti 13, 2008

PDC and TestAutomationFx


Great, I'm going to PDC this fall :o)
BTW, the user interface toolkit integrated in Visual Studio that I mentioned before, is now released, TestAutomationFx, test it.

lördag, maj 17, 2008

NUnit runners with memory leak, and the solution

I found amazingly few references to people having problem with the NUnit test runners. We came to a point where the the NUnit test runners consumed over one gigabyte of memory and the same tests run from Resharpers test runner from inside Visual Studio would only consume about 250 megabyte of memory. I also found that the memory was not released between assemblies if you run a NUnit project file with multiple assemblies.

The problem was that a reference to each TestFixture decorated class was kept in the result even if it was unnecessary. Or to be more specific, the Fixture part of the result released it's reference to the tested Fixture class after TestFixtureTearDown, but the TestMethod in the result kept a reference to the very same Fixture...To find out about this I used a nice memory profiler, SciTech's .NET Memory Profiler

I posted a patch to the NUnit project on SourceForge. With this patch the nunit-console test runner use about the same amount of memory as the Resharper one, and I suppose this would be the case for the GUI one too, since this was a change in the core.

måndag, februari 25, 2008

Nice, smart and simple GUI testing

If you would like to test your windows GUI, try this Test Automation Fx.
You will get a new project in Visual Studio 2005 and 2008 and a designer to create your test project.
Then you record some clicks in your application to test. The designer generates C# or VB.NET code.
You can run the test to verify that your application behaves ;o)
It's nice that the output is .NET code so we can make adjustment if we need to. And even better, the recorded clicks doesn't only use stupid coordinates, but it identifies and finds buttons by name :o) So it could handle some changes without breaking the tests.
It works for both native and .NET applications.
It's a beta, but definitely worth looking at.

tisdag, januari 08, 2008

The old find in files error

Sometimes when I try FindInFiles in Visual Studio, I can get this error:
"No files were found to look in.Find was stopped in progress." in Visual Studio 2003, 2005 and now also in 2008
...the solution is to press Control + Scroll Lock.

I used to believe VisualAssist had something to do with it, but in VS 2008 I only use ReSharper, so I suppose Visual Studio itself is the problem?