Årets blogger hos MSDN

by DotNetNerd 15. December 2008 07:19

Som afslutning på året vil Microsoft kåre årete blogger herhjemme, hvilket man kan læse mere om i den seneste udgave af MSDN flash newsletter.

Stem venligst på den blog du synes har været mest interessant på [email protected], med navnet på bloggeren, og den blog som du synes fortjener titlen.

Jeg vil naturligvis være glad for at modtage din stemme, da det kunne være en sjov titel af få. Det er desuden altid rart hvis folk sætter pris på det man skriver om - det er trodsalt det at det hele handler om ;-) 

Tags:

IronRuby - godt begyndt

by DotNetNerd 13. December 2008 19:49

Nu synes jeg igen det er ved at være på tide at rode lidt med et nyt sprog, så jeg har kastet mig over (Iron)Ruby, som opfylder samme krav som F# gjorde da jeg gik i krig med det. Det er nemlig et sprog der giver nye udfordringer idet jeg ikke får har arbejdet så meget med dynamiske sprog, og samtidig er det anvendeligt på .NET platformen.

Udover at IronRuby er anvendeligt på .NET platform er det samtidig Ruby varianter der er skrevet til andre platforme, så der er helt sikkert gode perspektiver i at lære sproget. En mulighed for fremtiden er også at se på Ruby on Rails, som de fleste nok har hørt omtalt som et virkelig interessant framework til udvikling af RAD MVC webapplikationer.

Hvis man skal i gang er der tre sider jeg vil anbefale som er:

http://ironruby.net/ - den officielle side der fungerer som en wiki.

http://www.ruby-lang.org/en/ - en god side om Ruby med adgang til en RIPL der kører i browseren så man kan lege lidt.

http://www.fincher.org/tips/Languages/Ruby/ - en rigtig god intro side der gør at min blogserie om emnet nok bliver en del kortere end den om F#, da man allerede kan finde meget her J

Derudover skal man for at komme i gang rubyforge.org. Herfra kan man hente og installere Ruby fra http://rubyforge.org/projects/rubyinstaller/ og nyeste version af IronRuby kan hentes fra deres svn repository svn://rubyforge.org/var/svn/ironruby. For at komme i gang kan man blot compile solutionen og køre console applikationen, så har man mulighed for at lege med lidt kode.

Tags:

Nye funktionelle tiltag i C# 4.0

by DotNetNerd 16. November 2008 09:23

Udover at inkludere features fra dynamiske sprog som er et af hovedområderne Microsoft arbejder med til C# 4.0 kommer der også nogle flere features inspireret af F# og funktionel programmering. Tupler og en Zip funktion til Enumerable klassen kan man læse om på codebetter idag.

Især tupler har jeg savnet indimellem, så jeg er spændt på at se hvordan de lykkedes med at integrere dem i C# med hensyn til dekomposition, da det er det sprængende punkt for hvor anvendelige de bliver. Zip funktionen ser også ud til at blive en ok tilføjelse, men de fleste opgaver den løser kan man trodsalt løst rimeligt simpelt i forvejen, og om ikke andet ville det være simpelt nok at skrive den selv som extention method. 

Alt i alt er det imidlertid rart at læse at de samarbejder med F# teamet for at gøre sprogene mere kompatible, og derved gøre det lettere at skrive moduler i de to sprog der kan bruges sammen. Idag er det en rimelig stor hemsko at man skal gøre en indsats for at ens API fra et F# modul kun anvender typer der er tilgængelige i andre sprog hvis modulerne skal bruges sammen.

Tags: ,

Demo søndag - C# futures og "Jasper"

by DotNetNerd 9. November 2008 15:22

Lidt af min søndag er gået med at kigge på videoer af hvad Microsoft arbejder på til .NET platformen, og i den forbindelse er jeg fladet over et par fede demoer som jeg lige vil gøre opmærksom på. 

Først og fremmest vil jeg anbetale at se Anders Hejlsbergs snak ved PDC om C# 4.0 hvor han faktisk også til sidst runder nogen af de ting de arbejder på til version 5.0. Helt kort kan jeg fortælle at 4.0 hovedsageligt handler om dynamic execution, og 5.0 handler om dynamic compilation. Det er virkelig interessant at se, og det giver nogle gode ideer til hvad de nye features kan bruges til igennem de demoer han viser frem.

Udover C# snakken fandt jeg en channel9 video om project Jasper som er en overbygning til entity frameworket der gør det muligt at lave iterativ RAD udvikling baseret på et dynamisk opbygget EDM schema. Det i sig selv virker rigtigt interessant, især når man tænker i hvad man kan lave i samspil med dynamiske sprog.

Jasper indeholder desuden kontroller til at lave simple CRUD websider til at manipulere data, sådan at man slipper for at skrive den sædvanlige databinding logik. Jeg er selv lidt skeptisk omkring den fremgangsmåde, da en del af logikken baseres på navngivningskonventioner hvilket gør at det virker lidt skrøbeligt. Det er imidlertid stadig interessant at se, og om ikke andet kan det være enormt nyttigt til at udvikle prototyper.

UPDATE: så kom der også lige et hotfix til VS som gør at man kan arbejde med debug/release versioner af javascript libs som eksempelvis JQuery :-)

Tags:

LINQ extensions - nogen ideer til hvad vi mangler?

by DotNetNerd 31. October 2008 11:32

En af de rigtigt fede ting ved LINQ er at det er så nemt at udvide, så jeg troede egentlig det ville vælte frem med extension librarys. Der er da også kommet nogen stykker man kan finde rundt omkring, men ikke gået så stærkt som jeg egentlig ville tro. Jeg overvejer derfor selv at begynde at lave et med nogle af de helt oplagte, som man ofte står og mangler med udgangspunkt i at extende IEnumerable<T>. Fra dag ét undrede jeg mig f.eks over at der ikke findes en ToCollection i samme stil som ToList? Nu jeg roder med Silverlight er ToObservableCollection også en der springer i tankerne?! Og i god funktionel stil undrer man sig også umiddelbart over at der ikke er en foreach, men det viser sig at være fordi VB ikke kan håndtere statement lambda udtryk. Det vil sige at man eksempelvis ikke kan skrive nedenstående - da det ikke returnerer en værdi.

function(p) Response.Write(p.Name) 

Statement lambda expressions virker imidlertid i C#, så den ryger stadig med i listen over metoder jeg gerne vil have med, især da den er helt oplagt at "låne" her. Klassen der kan hentes via linket indeholder desuden også er andre interessante extensions eksempelvis til at generere sequences ud fra algoritmer/enumerators og til at skrive pretty formated strings ud fra collections. Sidstnævnte kunne iøvrigt passende laves sammen med Scott Hanselmans "Pure evil ToString"

Diverse extensions til serialisering synes jeg også virker oplagte, omvend jeg nok vil ligge dem separat således at man ikke altid får dem med hvis man vil bruge de andre - ToJSON, ToYAML, ToXml, ToBinary osv springer mig umiddelbart i tankerne som muligheder? Hvis du ellers sidder med en god ide til hvad der mangler i standard pakken, så skriv endelig for jeg tager gerne imod forslag, da det kunne være interessant at lave en pakke andre også har gavn af.

Tags:

vNext features i C# og VB

by DotNetNerd 30. October 2008 22:09

Den seneste måned er der begyndt at blive talt om nye features i næste version af kernesprogene i .NET. Personligt er jeg glad for at der er nogen features der idag kun eksisterer i et af sprogene der bliver portet så de findes i begge sprog. Her er der umiddelbart tale om optionel arguments der kommer til C# og automated properties til VB. Begge features er små forbedringer, men nogen man indimellem savner når man, som mig, springer lidt imellem sprogene.

Udover denne synkronisering af sprogene kommer der naturligvis også helt nye tiltag. Herunder named parameters som man kender det fra blandt andet F#, og den mest omtalte feature som er dynamisk bundne metodekald. Sidstnævnte gør det muligt at deklarere et objekt med keywordet dynamic hvorefter man kan kalde metoder på det, som først bliver resolved på afviklingstidspunktet. Det gør det meget enklere at skrive kode som idag vil kræve brug af reflections Method.Invoke eller DynamicMethod.

For at se eksempler og læse mere kan du kigge her hvor Justin Etheredge laver en sammeligning af performance i forhold til reflection baserede løsninger.

Tags: ,

Dotnetnerd - nu også som podcast

by DotNetNerd 28. September 2008 21:36
Så fik jeg mit første podcast under bæltet, og udover at det jo altid er forfærdeligt at høre sin egen stemme synes jeg det er blevet ganske vellykket - især da jeg lige var kommet igennem den indledende nervøsitet. Stor tak her fra til Søren Spelling Lund for en god snak og hans gode arbejde med castet.

Tags:

JQuery nu en del af .NET pakken!

by DotNetNerd 28. September 2008 20:29

Jeg er selv en af de mange der har forelsket mig i JQuery, da det er et fantastisk værktøj der gør livet meget lettere for webudviklere. Dagens gode nyhed som kan læses fra Scott Gu her og fra Hanselman her er at Microsoft fra nu af shipper JQuery sammen med .NET og der vil blive lavet kommentarer til javascript intellisence til det :)

ANUG snak og de korte nyheder

by DotNetNerd 25. September 2008 18:10

Snak for ANUG om F#

Igår var det så langt om længe dagen hvor jeg skulle til Århus for at snakke om F# for Århus .NET usergroup. Jeg har set frem til den udfordring det er i et stykke tid, og heldigvis gik snakken rigtigt godt, og jeg blev meget positivt modtaget i smilets by. Det er fedt at se at der er så mange andre der har interesse i at lære om et sprog som F#, og at stemningen var helt i top med et fagligt højt niveau og plads til at grine lidt af tingene. Jeg gik selv derfra med en rigtig god oplevelse i bagagen, og en hel del erfaringer rigere, da det var en super fed udfordring at tale om et meget nørdet emne for en relativt stor forsamling. Alle deltagende skal ihvertfald have tak for en fed aften herfra :-)

AntiXssLibrary

I den seneste udgave af MSDN magazine faldt jeg over en artikel der hedder "SDL Embraces The Web" som jeg synes var ganske interessant. SDL står for "Security Development Lifecycle" som er et team der arbejder med af lave værktøjer til og beskrive sikring af applikationer imod angreb. Artiklen omhandler helt basale princippet for hvordan man kan sikre sine applikationer ved hjælp af validering, encoding, permission restriction og Parameterized SPROCS.

So far so good. Ikke meget nyt under solen, men det er altid sundt lige at få genopfrisket de her ting - og til det formål er artiklen ganske velskrevet og med nogen gode eksempler. Det der gjorde artiklen mere interessant for mig er hvor de nævner AntiXssLibrary som man kan bruge til at sikre imod XSS (cross-site scripting) ved at encode sit output. Der nævnes syv forskellige scenarier der kræver at man bruger en forskellig type encoding (HTML, HTML attribute,  URL, Javascript, VBScript, XML og XML attribute) og at Microsoft Application Consulting and Engineering teamet derfor har lavet det her library. AntiXssLibrary består af en hovedklasse der hedder AntiXss, som indeholder en stribe statiske metoder til at håndtere de her forskellige typer encoding let og smertefrit. Min personlige erfaring er at det er de færreste udviklere der er gode til at huske at encode deres output - selvom jeg kender nogen der gør det indimellem er det sjældent helt konsekvent. Netop af den årsag synes jeg det her library er interessant fordi det gør encoding så let at der ikke er nogen undskyldning for ikke at bruge det.

DateTime.Utc

For nylig fik jeg til opgave at skrive en applikation der skal bruges fra Danmark, Hong Kong og Kina og som skal kunne vise dato og tid korrekt. Det lød jo ikke som nogen større udfordring, for hvor svært kunne det være at korrigere for nogen tidszoner med plus minus nogen timer. Det viste sig imidlertid at det faktisk ikke er så nemt endda, hvis applikationen skulle laves så der også kunne komme andre lande til. I virkeligheden er det åbenbart ikke kun hele timer der kan være i forskel, og der er stor forskel på om lande bruger sommer/vintertid og i givet fald hvornår de skelner imellem de to. Jeg gav mig til at google lidt og fandt ud af at der faktisk ikke havde været noget til at hjælpe med den slags i .NET 2.0. Heldigvis til min store glæde fandt jeg ud af at der er dukket en ny klasse op i .NET 3.5 som er en af de små tilføjelser man ikke har hørt så meget om da det meste af snakken har omhandler større ting som eksmepelvis LINQ. Klassen hedder TimeZoneInfo, og den indeholder både metoder til at trække information ud om de forskellige tidszoner, men den indeholder også en metode til at konvertere fra UTC til lokaltid. Det eneste man skal gøre er at gemme ens datoer ved hjælp af DateTime.UtcNow eller i Sql via GetUtcDate(), og så sætte Kind på DateTime objektet til UTC når man hiver det ud af eksmepelvis en database hvor kind informationerne går tabt. Ellers håndterer metoden ConvertTimeBySystemTimeZoneId konverteringen for en, så hvad er i kort tid lignede en "tip of the iceberg" opgave hvor det ser nemt ud men der stikker mere under, blev i virkeligheden pludselig meget overskuelig at have med at gøre. Tak skal du have .NET 3.5 :)

Gazelle igen!

Efter et spændende år hvor der er sket rigtigt meget i butikken, både i kraft af omstrukturering, nye metodikker og større kunder der afføder mere komplekse løsninger end tidligere er det lykkedes os igen at blive Gazelle virksomhed. Det er en titel man næppe nogensinde bliver træt af, da det viser at man er der hvor det sker.

Bøger

CLR via C# og Framework design guidelines blev jeg nærmest provokeret til at læse da John Robbins skrev i sin bog "Debugging Microsoft .NET 2.0 Applications" at de to bøger var must read hvis man ville kalde sig selv .NET udvikler. Selvom det selvfølgelig er en provokation vil jeg gerne støtte op om den, da det er nogen bøger der giver noget essentiel viden henholdsvis om hvordan CLR'en er skruet sammen og om "best practices".

Jeg ender tit med at diskutere vigtigheden af best practices med folk, men en vigtig parameter i at skrive god kode (læs: “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” -Martin Fowler) er nu engang konformitet så man undgår misforståelser. Og hvem ved mere om best practices i frameworket end de folk der har udviklet det?

De næste bøger jeg selv har planer om at kaste mig over bliver "Introducing Microsoft Silverlight 2.0, 2nd Edition", "Professional ASP.NET 3.5: In C# and VB" og "LINQ in Action" som jeg netop har bestilt hjem. Især Silverlight bliver interessant for alvor at komme igang med, hvor de andre bøger mere er nogen jeg håber kan give lidt supplerende viden om .NET 3.5 og LINQ - hvorefter deres hovedformål bliver at fungere som opslagsværker.

Tags: , ,

Blogroll - et let ferie indslag

by DotNetNerd 22. August 2008 12:58

Ferie med SP1 

Så blev det endelig tid til at holde ferie, hvor jeg har været pænt heldig med timingen, da det passede med udgivelsen af .NET 3.5 SP1 - og det er jo altid godt med lidt legetøj til ferien. Jeg vil dog ikke skrive så meget om SP1 da der allerede bliver blogget på livet løs rundt omkring. Istedet synes jeg det er på tide at jeg laver et af de famøse link indlæg som alle andre bloggere også smider på fra tid til anden.

Blogs of interest

Scott Gu: http://weblogs.asp.net/scottgu/default.aspx trivielt at nævne ham, men det er bare en af de vigtigste blogs at følge som .NET udvikler.

Scott Hanselman: http://www.hanselman.com/blog/ næsten lige så trivielt, men dog mere en "fun to follow" blog end en egentlig nødvendighed.

Inside F#: http://lorgonblog.spaces.live.com/ skrives af en udvikler på F# teamet, der fortæller om både udvikling med F# men også om F# projekt systemet til Visual studio.

Code thinked: http://www.codethinked.com/ omhandler blandt andet IronRuby, som der er en serie omkring der har været rigtig interessant som Ruby n00b.

John Lam: http://www.iunknown.com/ Microsoft udvikler der arbejder med IronRuby, som skriver om integration med forskellige systemer og frameworks.

Rick Strahl: http://www.west-wind.com/weblog/ webudvikling på .NET platformen, især med fokus på klienten og dermed Ajax og JavaScript.

Save the developers: http://www.savethedevelopers.org/ slå et slag for at aflive outdatede browsere.

Video spas - som sagt er det jo ferietid :)

Not giving a fuck: http://www.youtube.com/watch?v=6wS5xOZ7Rq8

Font conference: http://www.youtube.com/watch?v=i3k5oY9AHHM

99 words for boobs: http://www.youtube.com/watch?v=DLD31GPt46w

Tags:

Who am I?

My name is Christian Holm Diget, and I work as an independent consultant, in Denmark, where I write code, give advice on architecture and help with training. On the side I get to do a bit of speaking and help with miscellaneous community events.

Some of my primary focus areas are code quality, programming languages and using new technologies to provide value.

Microsoft Certified Professional Developer

Microsoft Most Valuable Professional

Month List