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:

JavaScript - fra skældsord til spændende mulighed

by DotNetNerd 26. June 2008 08:52

Ligesom for rigtigt mange andre udviklere har javascript altid været et skældsord for mig. Opgaver der på overfladen virker simple er altid overraskende besværlige fordi browserne opfører sig forskelligt, udviklingsmiljøerne har ikke haft god tool-support og det at manipulere DOM’en på en webside har altid krævet urimeligt meget kode.

Der er heldigvis sket en masse på den front det sidste stykke tid, hvor jeg tidligere har kigget på intellisence og debugging af javascript i VS2008 samt Microsofts ASP.NET Ajax framework. Nu jeg har ferie har jeg som opfølgning på dette givet mig til at lege lidt med nogle af de andre frameworks der findes, da det så småt er ved at være en lille jungle at finde rundt i. Heldigvis har det vist sig at være en jungle med mange forskellige blomster, og overraskende lidt ensartet vegetation – eller på almindelig dansk, de frameworks der er har en masse at tilbyde uden at der er en masse overlap i funktionalitet.

Jeg vil starte med lige kort at skrive lidt om javscript som sprog, da jeg har på fornemmelsen at der er mange der ligesom mig i lang tid aldrig rigtig fik taget mig tid til at finde ud af nogle af de grundlæggende ting omkring objekter og funktioner i javascript.

Lidt JavaScript basics, som du måske alligvel ikke ved

Ligesom mange andre har jeg i min karriere primært brugt javascript til simple ting, som validering og at vise alerts, popup vinduer osv. Jeg måtte derfor for lidt tid siden erkende at jeg egentlig vidste for lidt om hvordan sproget virkelig fungere, da min indlæring havde været meget drevet af tilfældighed ud fra hvad jeg lige havde haft af små problemer der skulle løses. Jeg brugte derfor lidt tid på at blive klogere og vil lige starte helt kort med nogle af de vigtigste ting jeg lærte dengang.
Som udvikler der er uddannet og hovedsageligt har arbejdet i et OO miljø, er javascript en underlig størrelse, da begreberne object og function forstås en del anderledes i javascript end i Java, C#, VB osv.

I OO sprog er en property på et object fast defineret i en klasse, og som kan tilgås via dot notation. I javascript er properties noget der tilknyttes dynamisk, og disse kan tilgås både via dot notation og via indexer syntaks. Det vil sige at i nedenstående kode vil de to nederste linier gøre præcis det samme. Den sidste måde at tilgå properties på dog giver mulighed for at bruge tegn der ellers er ugyldige i propertynavne som eksempelvis punktum og mellemrum.

var hund = new Object();
hund.Navn = "King";
hund['Navn'] = "King";

Det kan på overfladen virke smart at properties på den måde er dynamiske, men ”there is no such thing as a free lunch”. Problemet er selvfølgelig at en subtil stavefejl eller bare casingfejl vil bevirke at man tilknytter en ny property, og man derved ikke får sat værdien på den property man troede. Det er her prototyping kommer ind, da det giver os mulighed for at definere noget der minder om classes og properties samtidig med det giver mulighed for at bruge namespaces til at strukturere klasserne. Jeg vil dog vælge at springe let hen over det i denne omgang, da det er en større omgang at gå i dybden med og ikke hovedfokus for det jeg vil skrive om i det her indlæg.

Funktioner i javascript er som nævnt også meget anderledes i javscript, da funktioner er ”first class” koncepter. Det vil sige at disse opfattes som objekter og kan passes som argumenter til metoder og bruges som værdier på properties. Derfor vil de to nedenstående kodelinier betyde præcis det samme, da funktionen blot er et ”objekt” med et navn.

myFunc = function() {}
function myFunc {}

En anden vigtig forskel er brugen af this keywordet, der forstås anderledes end i andre sprog. I OO sprogene er this en reference en objektet hvorpå den kaldte metode findes, hvorimod det i javascript er en reference til det objekt der kalder funktionen. Man kan dog i javascript selv angive hvad this skal betyde ved at kalde en funktion igennem dennes .call eller .apply metode og passe en reference som første argument til det objekt man ønsker skal være this i den aktuelle kontekst.

var myCaller = new Object();
myFunc.call(myCaller);

JSON eller JavaScript Object Notation, er en anden måde at skabe objekter på i javascript, som er ved at vinde frem, da den kan være rarere at arbejde med i javascript, samtidig med det er et oplagt format til at serializere objekter i når de skal sendes imellem klienten og serveren og konverteres imellem javscript og dit OO language of choice. Jeg har skrevet om dette før men kort fortalt fungerer det ved at tuborg-klammer definerer et objekt, hårde klammer et array, kolon adskiller property navn og værdi, og elementer adskilles af komma.

var hunde = [
{Navn: ’King’, Fødselsdato:  new Date(2004,8,12)},
{Navn: ’Pluto’, Fødselsdato:  new Date(2006,6,10)}
 ];

JQuery – bliv gode venner med din DOM

Oprindeligt troede jeg egentlig bare at JQuery var en open source udgave af det scripting library der følger med til ASP.NET Ajax – en sammenligning jeg også har læst andre fremføre. Den sidste måned havde jeg imidlertid hørt nogle gode ting om det, så jeg ville lige kigge lidt nærmere på det. Efter at have læst og leget lidt med det, må jeg konkludere at det er meget lidt det har til fælles med ASP.NET Ajax, da det er nogle grundlæggende forskellige ting de to librarys søger at løse. ASP.NET Ajax er lavet med fokus på at give mulighed for at arbejde med et typesystem der minder mere om det der er i .NET, samtidig med at det understøtter udviklingen af Ajax Controls og Ajax Control Extenders. JQuery derimod har hovedfokus imod at det at arbejde med DOM’en på en html side, sådan at man på en præcis måde kan finde og modificere Dom elementer. Rigtigt nok er der overlap imellem ASP.NET Ajax og JQuery, da begge eksempelvis indeholder wrappere til at lave kald til webservices – men hovedfokus i de to er helt forskelligt.

JQuerys udgangspunkt er som navnet antyder at det giver mulighed for at ”query” elementer på en webside. Dette gøres meget naturligt igennem selectors ligesom man kender dem fra CSS. JQuery giver mulighed for at anvende et bredt udsnit af disse – og herunder flere end dem der reelt er standard i CSS i alle browsere i dag. Et helt basalt eksempel kunne være:

$(document).ready(function() {
$("div:odd").html("Woot"); 
});

Eksemplet viser et par forskellige ting som JQuery gør muligt. Den første linie kode viser brugen af et event som JQuery stiller til rådighed der bliver affyret når sidens elementer er hentet, men inden eksterne elementer som f.eks. billeder er læst helt ind. Det løser et problem man tit render på som er at hvis man skriver javscript i starten af en side, så kan man risikere at denne køres inden alle elementerne endnu er loaded, og omvendt hvis man bruger onload eventet ender man med at vente til alt er læst helt ind hvilket heller ikke altid er ønskværdigt. Den næste linie viser brugen af en selector der henter hvert andet (ulige) div element på siden, og sætter deres indhold til ”Woot”. Dette illustrerer hvor powerfull JQuery er, da man faktisk kan manipulere flere elementer i det der kaldes et wrapped set med meget lidt kode.

Udover at kunne manipulere eksisterende elementer vil man selvfølgelig også ofte gerne kunne tilføje nye elementer. Også her er det JQuery to the rescue, da det gør det meget enkelt.

$("<div>Totalt dynamisk indsat tekst der!<div/>").appendTo("#someParentDiv");

Her ses en af de andre mådet at bruge $ funktionen på, da den her fodres med noget html, som så udgør ens wrapped set. Derefter kaldes appendTo med en selector der finder de eksisterende elementer som der skal føjes til.
JQuery tilbyder en bred vifte af metoder til at arbejde med disse wrapped sets, manipulere elementer, properties, attributter osv. Fælles for dem alle er at de virker crossbrowser, hvilket er en af hovedpointerne i JQuery – nemlig at gøre det nemt og ensartet at skrive sine scripts. Udover almindelig element manipulation skal det nævnes at JQuery tilbyder funktioner til at lave animationer og effekter, wrapper funktioner til at foretage Ajax kald og det er bygget til at kunne extendes med plugins, som der allerede findes flere af.

En vigtig ting hvis JQuery skal bruges i samspil med andre javascript librarys er funktionen $ som også bruges af andre librarys. For at undgå denne konflikt kan man disable brugen af $ og i stedet tilgå funktionen direkte som ”jQuery”, hvilket $ i virkeligheden blot er en genvej til. For at disable $ skal man blot kalde jQuery.noConflict();

Har du fået lyst til at læse mere om JQuery kan jeg anbefale bogen JQuery in Action, som har været min primære inspirationskilde.

LINQ to JavaScript – endnu et skridt imod begrænsningen af for-loops

Navnet siger jo egentlig det hele, da de fleste efterhånden har hørt om og sikkert også leget lidt med LINQ. LINQ to JavaScript er helt enkelt et codeplex projekt, som implementere det der svarer til LINQ to objects i JavaScript. Fordelene ved LINQ er der allerede skrevet alt for meget om rundt omkring, så jeg vil gå lige på og fortælle lidt mere konkret om JavaScript implementationen.
Indtil videre er følgende operatorer implementeret, men der er med garanti flere på vej:

From, Where, Select, OrderBy, OrderByDescending, Count, Distinct, Any, All, Many, Reverse, First, Last, ElementAt, InterSect, DefaultIfEmpty, ElementAtOrDefault, FirstOrDefault og LastOrDefault.

Et eksempel på at bruge de mest gængse kunne være.

var myArray =  [
{Name:"Hans", Age:20 },
{Name:"Erik", Age:10 },
{Name:"Christian", Age:26 }
];

var myResult =
    From(myArray).
    Where(function(item){return item.Age > 15}).
    OrderBy("item.Name").Select(function(item){return item});

Som eksemplet viser kan operatorerne generelt tage to slags argumenter til at beskrive hvilken property der arbejdes på, idet man enten kan bruge en streng (eksempelvis ”item.Name”) eller en funktion der tager item som argument.
Jeg synes personligt at de er sluppet meget godt af sted med det der er implementeret i LINQ to JavaScript, og jeg er sikker på jeg selv nok skal komme til at bruge det en del fremover.
Ellers er der ikke mere jeg har tilbage at skrive om javascript og javascript frameworks for denne gang, men jeg håber det giver andre blod på tanden. Det i hvert fald har givet mig lyst til at arbejde mere med javascript efter at jeg har set hvad nogle af de her frameworks giver af muligheder.

Presseomtale og usergroup i Odense

by DotNetNerd 30. May 2008 16:39

Presseomtale 

Så nåede vi til den tid på året hvor der blev offentliggjort årsresultat, og pressen var ikke lang tid om at skrive om hvor godt det er gået det seneste år - som det kan ses på TV2fyn, Bureaubiz og fyens.dk.

Update: også børsen, erhvervsbladet og computerworld har nu bragt artikler om årets resultat :-) 


Det har også været et spændende og hektisk første år - men det er også sådan jeg helst vil have det :) Det ser heldigvis ud til der fortsat er masser af spændende opgaver og udfordringer fremover, så vi kan vidst godt tillade os a være lidt glade.

"Its a nerd!" Onug blev født!

Torsdag var jeg på hotel Radisson Sas til Microsoft Community arrangement hvor hovedformålet var at få startet en .NET usergroup i Odense. Opbakningen til initiativet var fantastisk, og især det at der var en flok fra Anug der var kommet forbi for at hjælpe os igang var helt fantastisk. Idag (fredag) fik jeg så luftet det for min chef, og nu ser det ud til at vi bliver sponsorer for gruppen, og han var bestemt positiv over for muligheden for at vi kan benytte vores lokaler. Det er jo altid fedt at møde nogle ligesindede ildsjæle, så jeg glæder mig meget til at se hvordan det skrider frem.

 

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

bedava tv izle