Parallel programmming techniques in F#

2008-11-13 22:15 by Mikael Albrektson

I måndags på Keynote visade Jason Zander ett gammalt C++ program, en klassiker, Pong - tennis eller pingis med två streck som man kan få gå upp och ner och imellan går en "boll" som man skall träffa. Han migrerade detta in i Visual Studio 2010 och körde programmet. Saken var den att han hade en dator med 8 kärnor. Men programmet han körde klarade bara av att använda en kärna, vilket gjorde att när han la på 3D så fungerade inte spelet särskillt bra, det gick helt enkelt inte att köra.. Processorkraften på en av kärnorna var 100%. Då introducerade han parallism. Med parallelism kan man utnyttja alla kärnor och därmed förbättra prestandan betydligt. Programmet bestod av att man i princip läste av alla X och Y positioner på alla pixlar i programmet i en for each loop. Ganska processorkrävande. Vad han sedan gjorde var att han lade till nyckelordet "parallel" innan for each. - parallel foreach (...) som då gjorde att ramverket då kan fördela mellan alla kärnor. Då gick programmet betydligt bättre.

Det är här F# kommer in. F# är speciellt bra för parallelism. F# är ett funktionellt språk. Framtaget inom Microsoft i labbsyfte, som senare blev så kraftfullt att de nu släpper det in i Visual Studio. Vi håller redan idag med C# på att skriva funktionell programmering i och med LINQ.

 

Dag 2, Welcome to Internet Explorer 8: A Developers Overview

2008-11-11 23:15 by Mikael Albrektson

Detta passet hölls av Pete LePage, Senior Application Manager i IE-teamet. Han var mycket energiskt och stolt över arbetet de lagt ner i IE8 och han berömde sig själv och sitt team för deras arbete. Nytt med IE8 är att Microsoft för första gången någonsin följer alla standards fullt ut. CSS 2.1, ARIA och HTML 5. De har följt W3Cs specs fullt ut och har donerat över 3700 tester till dem.  Innan hade W3C sammanlagt 300 tester under hela deras levnad. Han pratade om deras utmaning att helt och fullt följa W3Cs standard då vissa av deras krav är ganska flummiga, exempel "table widht messurment" som var ungefär; den skall eller bör göra si, eller annars så, men kan också göra det.. Hmm.. IE tolkar det på ett sätt, Firefox på ett annat och du får två olika utseenden, men båda tillverkarna följer standard i från W3C(!!).

Inbyggt i IE är Developers Tool, inget man behöver ladda ner, den är alltid inbyggd. Denna skall hjälpa oss att debugga applikationer på ett enkelt sätt. Nytt är även AJAX Enhancements, Accelerators and Web Slices, Accessibility, CSS Compliance mm.

I och med att nya IE fullt stödjer W3Cs standard innebär det att alla buggar vi tidigare byggt in i våra applikationer, kommer att synas. För detta har Microsoft lagt till en meta-tag där man kan tala om att IE skall använda IE7s render-motor. Detta för att man skall få bakåtkompabilliteten för dessa sajter.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Detta kan man även lägga till i HTTPHeader programmatiskt.

Accelerators - är för mappning, direktion eller översättning, snabbt genom att bara selektera en text och högerklicka.
InPrivate Browsing - öppnar ett nytt IE fönster, där allting (cookies, browser history o state) rensas direkt efter man stängt ner fönstret.
Web Slices - för att få en liten slice där du kan följa saker du vill ha koll på. Exempel istället för att ha en sida öppe och hela tiden trycka F5, så kan du få uppdateringar på en liten specifik del av en webbsida. Exempelvis en produkt på ebay.

Mer information om IE8 finns på:
http://www.microsoft.com/windows/internet-explorer/beta/default.aspx
http://msdn.microsoft.com/sv-se/ie/default(en-us).aspx
http://msdn.microsoft.com/sv-se/library/cc288472(en-us,VS.85).aspx

Dag 1, 17.15, Web and User experience - ASP.NET AJAX 4.0

2008-11-10 23:10 by Mikael Albrektson

Stephen Walther, speaker för denna session har lång erfarenhet av webbutveckling och har pratade om skillnaderan mellan
webbsajten och webbapplikationer. Hans vy var att en webbsajt var en kollektion av statiska webbsidor medans en webbapplikation
är mer som en desktop applikation. Han pratade om hur man kan förbättra prestandan i våra webbapplikationer genom att
använda mer client-side coding. Han hade 5 olika scenarios, vilket han körde genom fiddler (www.fiddler2.com) för att logga
request och respons för alla anrop för att visa hur mycket data som skickade mellan server och klient.

1. Classic Server-side approach
2. ASP.NET AJAX Full postback approach via UpdatePanel
3. ASP.NET AJAX Partial postback approach via UpdatePanel
4. ASP.NET AJAX via AJAX Library
5. ASP.NET AJAX 4.0

Han började med 1) Classic Server-side approach, och sparade antal kilobytes skickade mellan server o klient för att visa att
prestanda förbättrades för varje ny approach. De stora skillnaderna kom när vi kom till approach 4) ASP.NET AJAX via AJAX Library.
Han använde en asp:DropDownList som databands via en sql:datasource, men ingen asp:gridview utan bara en html-table, sen genererades
tabellen upp via en javascriptmetod med hälp av JSON-webservice interface. Nackdelen med denna approach är att man måste själv ta
hand om rendering av htmlkoden via strängar, exempel function() { document.getElementById('grid').innerHTML = "<tr><td>" + value + "</td></tr>"; }.

5) ASP.NET AJAX 4.0
Nu kommer det coola. Här kan man använda namespace till ett library som Microsoft ger oss (som man får full intellisene på) där
man kan skriva tempaltes som man kan använda vid rendering.

<table name="master">
 <tr>
  <td> {{ Name }} </td>
  <td> {{ Description }} </td>
 </tr>
</table>

<script>
 function foo() {
 var view;
 $get("grid").set($get("master), WebService.WebService.GetView());
}
</script>

Dag 1. 14.00, Keynote

2008-11-10 21:52 by Mikael Albrektson

Tech-ed 2008 öppnades av Pierre Liautaud, Microsoft Vice President, Western Europe, en fransman som lät som Peter Selleck i Rosa Pantern vilket var ganska småkul.

Han pratade om hur Microsoft ser på framtiden ur ett business-perspektiv, vilket jag inte skall gå in på i denna bloggposten. Bättre då att prata lite om hans efterträdare i
talarsätet. Jason Zander, General Manager, Visual Studio Team. Han är en teknisk talare och koncentrerade sig mycket på demos, vilken var bra.

Han presenterade en del av nyheterna i Visual Studio 2010 (vi fick tyvärr inget release-datum) som han körde  i pre-alpha beta, och på en pre-alhpa beta version av Windows 7(!!).

Vi fick en glimt av en del grejer som de förbättrat; här kommer en del av dessa. Uppfräshning av IDE och prestanda. Bättre "fokus" där man står i koden. Refactoring har tagits
till en helt ny nivå. Dynamisk sökning i intellisense-fönstret efter metoder eller attribut. Intellisense med JQuery, bättre snippets-möjligheter. Exempel i HTML-code så kan man skriva "table" + Ctrl = generering av en hel
<table><tr><td></td></tr></table> stubb. Samma för allting inom asp.net. "aspgridview" = generering av en hel GridView stubb.

Det coolaste av allt var testing. Ett vanligt svar som utvecklare ger: "Jag kan tyvärr inte reproducera felet", är nu helt uteslutet. Nu kan en testare spela in hela testfallet på video, spara state och context över hela testet, inklusive ett
"snapshot" av testarens dator (med OS och allt) som man kan öppna i Virtual machine. Detta innebär att man kan se exakt hur testaren gjorde (via videofilmen) och debugga och felsöka applikationen med exakt den state, context och OS
som testaren hade när själva testet gjordes.

Lite länkar som presenterade via ppt-slides:

http://blogs.msdn.com/e7/
http://www.silverlight.net - silverlight
https://www.mesh.com/ - synkronisering app
http://www.microsoft.com/geneva - user access

TechEd Developers 2008

2008-10-30 17:13 by Mikael Albrektson

Måndagen den 10:e november börjar TECH-ED i Barcelona. Matts, Marius & Mikael kommer att hålla Relation Plus® fanan högt och spana in alla nyheter som vi kan ha nytta av.

Du kan läsa mer om eventen på http://www.microsoft.com/emea/teched2008/developer/

Mvh Produktutveckling