9. dec 2013 16:03 |

The Missing LINQ

I gave a presentation as part of ANUG's (Aarhus .NET User Group) .NET school a28th of November: https://www.facebook.com/events/219950541508173.

The topic was LINQ and related language and .NET framework features.

If you are interested you can download a PDF with the slides targeting C# and VB.NET respectively (in Danish):

"The Missing LINQ" slides - C# version

"The Missing LINQ" slides - VB version

22. okt 2012 16:58 |

I am creating a Windows Store app in which a search can be made based on the text in a TextBox. The search function can either be activated by clicking a button or by pressing the “Enter” key while the TextBox has focus. If the search string does not validate I present a MessageDialog with an appropriate error message.

This works well when the search function is activated by clicking the button but it fails with an “System.UnauthorizedAccessException” when the “Enter” key is used for activating the search function. The reason for this is that the “Windows.UI.Popups.MessageDialog.ShowAsync” method is called twice at the same time which again is due to the KeyDown event firing twice when the “Enter” key is pressed.

According to C# textbox keydown triggered twice in metro applications this is a confirmed bug.

There are a couple of simple work-arounds:

  • Subscribe to the KeyUp event instead of the KeyDown event (mentioned in the thread).
  • Create a condition based on e.KeyStatus.RepeatCount value (also mentioned in the thread).
  • Set the e.Handled property to ‘true’.

20. aug 2012 13:29 |

After installing Windows 8 Enterprise from MSDN subscribers download I got an error when I tried activating it.

The error was:

Code: 0x8007232B<BR>Description: DNS name does not exist.

Looking in the event log the error presented itself as:

License Activation (slui.exe) failed with the following error code:

Activation of Windows 8 Enterprise failed

The installation used a predefined product key which (apparantly) was not useable in my setup. I was however able to activate windows after changing the product key to the one from the "My Product Keys" page running slmgr from an elevated command prompt (run as administrator):

slmgr.vbs -ipk <Windows 8 Enterprise product key>

23. aug 2011 09:42 |

If you encounter a blank page when you run your Azure based ASP.MVC application it might be worth checking that you have enabled Internet Information Server HTTP redirection:

Enabling HTTP redirection in Internet Information Server

18. jul 2011 20:42 |

Failed to initialize Windows Azure storage emulator.

When I tried to start an Azure project I  got an error stating that azure “Failed to initialize Windows Azure storage emulator.”.

I usually have a SQL Server Developer instance on my development machines, but Windows Azure Tools for Microsoft Visual Studio apparently assumes, that I have a SQL Server Express instance installed on my development machine.  So the reason for the error is that Azure looks for a wrong SQL Server instance.

The “Development Storage Initialization” command line tool (DSInit) can however be used to make Azure Tools look for another SQL Server instance.

As I just wanted to point Azure to the default SQL Server instance I could get away with running the following:

dsinit /sqlInstance:.

in the “Windows Azure SDK command prompt”.

You can get a bit of help on dsinit command by providing the /? switch:

dsinit /?

31. maj 2011 22:46 |

The Mono project

The family of Mono related products has lived a rather bumpy life. The original Mono project is an open source implementation of the .NET framework created by XimianIn 2003 Novell acquired it and they created Moonlight – an open source Silverlight implementation based on Mono. Lately MonoTouch and MonoDroid – closed source .NET oriented frameworks for creating application for the iOS and the Android platforms respectively – were added to the family. Novell has however as of November 2010 been acquired by Attachmate which subsequently laid off what appear to be most of the people working on Mono.

So what is the current state of Mono?

The original Mono project as well as Moonlight are open source projects and while their direct impact on software development is rather limited they have an important role to play in showing that the .NET framework and Silverlight can be implemented by someone else than Microsoft. Whether the necessary efforts will continue to be committed in the development of the open source projects will have to be seen but they will most probably continue to exist in some form or another.

MonoTouch and MonoDroid on the other hand actually had the potential to be part of a puzzle creating maybe not a uniform .NET platform for the mobile world but then at least a somewhat coherent offer for the .NET developer that wants to reuse competencies as well as part of the application logic. Unfortunately it seems that with Attachmate’s layoff of Mono people MonoTouch and MonoDroid is currently caught in a limbo. As it does not seem that Attachmate will continue to support the products one can only hope that others will take over. One contender for doing so is Xamarin – a new company founded by Mono’s father Miguel de Icaza and other members of the former Mono team. In his inaugural blog post Miguel says that Xamarin will create multiple offerings for the mobile platforms: “we will first deliver the iPhone stack, followed by the Android stack, and then the Moonlight ports to both platforms.“. He continues to say that the new (commercial) versions of .NET for the iPhone and Android “will be source compatible with MonoTouch and Mono for Android”. Whether that approach will lead to legal complications I have no idea but from all angles it would probably be better if Xamarin could acquire the rights to continue the existing work on MonoTouch and MonoDroid.

The most interesting point in Miguel’s post is however in my opinion the above reference to “Moonlight ports to both platforms” and the phrase saying that Xamarin will “Explore the Moonlight opportunities in the mobile space and the Mac appstore.”. I am a bit uncertain what exactly that means as Apple still doesn’t seem to like the “virtual machine/download applications on-the-fly” approach we know from traditional Silverlight. One feasible approach might however be to bundle the Moonlight engine with each and every app so that the Moonlight engine and the Moonlight application is considered one standard application from a marketplace point of view. In that way Apple would still get it’s say in what applications are allowed to run on iOS - and it’s share of the profits…

As a .NET developer I think that it could turn out to be a killer feature if the same Silverlight based application could run on iOS, Android and WP7. So best of luck to the code-monkies at Xamarin.

6. apr 2011 17:42 |

 Captator's code standard

To avoid chaos most developers follows some kind of code standard - implicitly or explicitly. I believe that one of several ways to make developers take ownership of code they have not created themselves is to make the code look like they have actually created it themselves. Collectively following a code standard is a vital way of achieving this.

If you take a look at our code standard you will probably notice that it is a pretty rigid one - it does however not cover everything as volume is not necessarily a quality in it self. If you think something important is missing I would appreciate suggestions for further rules and guidelines.

In many cases reuse - of components or even better of a framework - can however make rules and guidelines unnecessary by implementing the guidelines as methods, classes, patterns, components and frameworks. So while code standards are important, reuse is almost even more important. No matter how big a framework you create you will however still have to create code standards and guidelines - in the very least on how to create and use the framework.

You can get Captator's code standard here.

6. apr 2011 16:03 |

The Missing LINQ

Yesterday I gave a talk for computer science students at Business Academy Aarhus. The topic was LINQ and related language and .NET framework features.

If you are interested you can download a PDF with "The Missing LINQ" slides (in Danish).

29. mar 2011 12:22 |

Windows Phone 7

Microsoft has a Windows Phone 7 competition that is open to international contestants.

The competition ends at the 6th of June 2011. Besides the eternal fame for the winners there are also ten prizes consisting of free admission to the Worldwide Partner Conference in July.

More information can be found at Windows Phone 7 App Challenge.

5. jul 2010 16:01 |

World Cup Pivot

Personally I do not have much interest in neither football nor the currently running world cup (the 2010 FIFA World Cup) but I have to admit that Metia's World Cup Pivot application is a very nice Silverlight application. After playing a bit with it the only thing I miss is some kind of tooltip when moving the mouse over the picture of a player (or maybe just some information embedded  into the picture of the player). Having to zoom a players picture to see who he is seems a bit cumbersome, but overall it is a very nice application. The reason that the World Cup Pivot application works nicely though is probably simply due to the fact that it is based on the The Silverlight PivotViewer control. A control you can use yourself when creating similar applications.

Now I just have to get my hands on some interesting data so I can create my own pivot application...

2. maj 2010 09:50 |

During April 2010 I gave a series of talks for members of SAM-DATA. The topic of the talks was (news in) Visual Studio 2010 and .NET Framework version 4.0.

I have extended the slides with a review of the Visual Basic 10 language news.

If you are interested you can download a PDF with the slides (in Danish).

16. mar 2010 14:35 |

During March 2010 my colleague Carsten Juel Andersen gave a series of talks for members of SAM-DATA. The topic of the talks was the ASP.NET MVC 2.0 Framework in general as well as a comparison between ASP.NET Web Forms and ASP.NET MVC.

If you are interested you can download a PDF with the slides (in Danish).

16. mar 2010 14:17 |

At the moment we are in the last phase of creating a new product that is built using Silverlight, WCF and the Entity Framework and the last couple of days we have been adding transaction support.

Because we need transaction support for both traditionel ADO.NET as well as the Entity Framework and because we need transactions that spans multiple datasources (and thereby multiple data access layers) we are using System.Transactions - and more specifically we are using TransactionScope for handling transactions.

When specifying the isolation level for Microsoft SQL Server it is often emphasised that because of a low degree of concurrency the Serializable IsolationLevel should only be chosen when necessary (see for example the MSDN article: SET TRANSACTION ISOLATION LEVEL (Transact-SQL)). Actually you should of course only use locking as a whole when it is necessary ;^)

The Entity Framework supports optimistic concurrency. To enable optimistic concurrency the columns that are to be checked are specified by the use of the ConcurrencyMode attribute on the relevant properties in the conceptual model. According to the documentation (Saving Changes and Managing Concurrency (Entity Framework)), this should produce an OptimisticConcurrencyException when the concurrency check fails. But to our surprise it did not - it resulted in an UpdateException with an inner dead lock SqlException (the message of which was "Transaction (Process ID 93) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction."). The reason for this is simply that a TransactionScope has Serializable as its default IsolationLevel. Even though this is documented in various articles on MSDN (see e.g. Implementing an Implicit Transaction using Transaction Scope) it was not entirely obvious for us - probably because the TransactionScope help topic itself does not mention it and because we had the SQL Server recommendations in mind.

There are good reasons for TransactionScope to have Serializable as its default IsolationLevel, but the lack of consistency between SQL Server and TransactionScope is a bit misleading.

8. dec 2009 21:38 |

At a course today I was asked how you instantiate an anonumous type using reflection.

The answer is simply that you do it in the same way that you instantiate all other types. The one thing you have to know though is that an anonymous type is defined with a single constructor with parameters corresponding to the parameters in the object initializer, so you have to provide these parameters when instantiating the anonymous type.

Lets say we have an object duck instantiated from an anonymous type in the following way:

var duck = new { Name = "Donald Duck", Address = "Duckburg" };

Now you can create a new object from that anonymous type:

System.Type duckType = duck.GetType();

object[ ] parameters = { "Daisy Duck", "Duckburg" };

object newDuckObject = System.Activator.CreateInstance(duckType, parameters);

If you want to be able to specify the parameters by name instead of by position then you could quite easily achieve that by using e.g. a dictionary for specifying the parameters and a bit of reflection for mapping each name to the position of each of the constructor parameters.

Is it useful to be able to instantiate anonymous types using reflection? Probably not - but you never know ;^)

3. dec 2009 08:19 |

 I host a software architect group in which we often use a way of structuring our meetings that I - in lack of a really cool name - have termed the descriptive "Emerging Agenda".

The goals of Emerging Agenda are to

  • ensure that everybody expresses something at every meeting¨
  • that the topics discussed are the topics that people think are the most interesting at the moment of the meeting

Emerging Agenda has three phases

      I.   A round table phase during which everybody says something

      II.  A planning phase during which the agenda is determined

      III. A discussion phase during which the selected topics are discussed

Emerging Agenda consists of the following steps

Round table phase 

1)   Every person has the same predetermined timeslot during which they can talk about anything remotely relevant to the subject matter. We started off with 2 minutes timeslots, but have increased it to 5 minutes which seems to be appropriate for our group. During this timeslot they can talk about what they have been working on since the last time we met (most people do that), but they could also talk about something they have found interesting, something they have experienced, a problem they have had or ... It’s completely up to them. Other people might ask questions or make comments, but it is up to the person talking whether they wish to answer the questions or prefer to continue their own line of thought.

2)   Anytime during the round table phase anybody can walk to the whiteboard and write a topic that they think could be a good/relevant/interesting topic. The topic often relates to something that the actively talking person mentions: “Hm – that sounds interesting. I would like to hear more about that. Let me make a note of it on the whiteboard.” But it might also be an unrelated topic. Maybe something you have wanted to discuss for quite some time. When topics are noted on the whiteboard, they are not discussed. This is basically the brainstorming step during which potential topics are collected.

Planning phase

3)   People can now ask for explanations about the topics noted on the whiteboard and we typically ask whether there is something more that people want to have added to the list of potential discussion topics.

4)   Depending on the number of potential discussion topics people now get a number of votes (typically we have three votes each) and then they vote for their favorite topics. You can spend one or multiple votes on each topic. The voting should in principle probably be simultaneous and secret, but we tend to be rather relaxed about that. The voting determines the order in which we discuss the topics. Sometimes the voting process is short circuited if a member has something urgent they would really like to discuss/get input to. In those cases we tend to accept such pleas. Having a concrete problem to discuss is almost always much better than talking about a problem in abstract terms.

Discussion phase

5)   The discussion is typically kicked off by the person suggesting the topic, but after that it is an open non-structured discussion that runs until nobody feels there is anything more to add. When the discussion fades out, we move on to the next topic on the prioritized list and so on and so forth.

Our meetings are half-day meetings and we typically discuss from one to three topics per meeting. Don’t be too ambitious – I personally prefer to have just a couple of really good and thorough discussions than to have lots of superficial discussions with no real value.

We typically go out for a beer and some grub after the meetings. The discussions tend to continue in those aftermath sessions, but they are not to be considered a mandatory part of Emerging Agenda J

26. nov 2009 14:33 |

I have been running a variety of Windows operating system versions on my workstations. At the moment my collection consists of Windows XP, Windows Vista and Windows 7. Some time ago I decided to install Windows 7 on my Windows XP machine. That was however easier said than done as I got the infamous Code 5 error: "Cannot boot from CD-ROM Code 5".

Just as a lot of other people I was getting frustrated about the lack of exact information about this issue.

I did however stumble upon a very simple and very effective solution. The solution is described at: http://www.sevenforums.com/installation-setup/2591-boot-error-code-5-a-2.html#post31719.

I can tell you that it was quite a nostalgic feeling having to find a diskette to boot from. ;^)

The reason I am writing this blogpost, which basically is just an echopost, is that I hope that others might benefit from an increased focus on this solution. I do not know AlfaMikeDelta, but I do know that he is a personal hero of mine at the moment.

22. nov 2009 14:50 |

Yesterday we ran a WPF Code Camp for members of anug: Code Camp: WPF.

Attendees at the event can download a solution example for the code camp exercise: WpfCodeCamp.zip.

31. okt 2009 20:40 |

The Entity Framework designer gets a lot of criticism because it is buggy, doesn’t scale too well when the number of database tables increase and because it does not support all of the features of the Entity Framework.

We use and like the Entity Framework but we have dumped the Entity Framework designer long time ago.

When using the Entity Framework you have to have an EDM (Entity Data Model) description consisting of three parts: A storage model, an entity model and a mapping between the two. The EDM is XML based and is defined by either a single XML file with three parts or three separate files.

Furthermore you need a set of classes matching the entity model described by the EDM.

When using the Entity Framework designer both the EDM and the classes are automatically generated. Alternatively the EDM and the classes can be generated by using either the command line edmgen tool or the functionality defined in the System.Data.Entity.Design namespace defined in the component of the same name.

Instead of using the Entity Framework designer we have used the functionality in the System.Data.Entity.Design namespace for implementing our own simple command line tool (called EdmModifier) for generating both EDM files and classes.

EdmModifier reads a specified XML file containing instructions for generating EDM and code files as well as instructions for modifying the generated files.

Snippet from an EdmModifier specification file.
Above: Snippet from an EdmModifier specification file.

If needed multiple EdmModifier specification files can be combined and executed one after another - could be beneficial if the development team and/or the the number of tables is large.

The tool does the following:

1)      EdmModifier reads the XML based specification file.

2)      It uses functionality in the System.Data.Entity.Design namespace for generating an EDM consisting of three XML files corresponding to each of the three parts of the EDM.

3)      It modifies the EDM files (renaming entities, associations, changing cardinalities, …).

4)      It uses functionality in the System.Data.Entity.Design namespace for generating classes based on the EDM specification.

By defining the changes we want to apply to the EDM in a separate file instead of editing directly in the EDM, we gain the same basic advantages that a developer gains, when defining changes to classes generated by Visual Studio in a partial class instead of directly in the generated code.

By using EdmModifier

  • we avoid the flaws of the Entity Framework designer
  • we speed up generating the EDM
  • we avoid editing directly in the EDM file(s)
  • we can regenerate the EDM without losing our modifications
  • we can - if needed - specify our own abstractions that makes it simple to define functionality that is complex to define in the EDM.
  • we can use EdmModifier as part a build process

If you do not like the Entity Framework designer do not take it out on the Entity Framework – just avoid the designer. The designer is by no means neither necessary nor sufficient for efficiently working with the Entity Framework anyway.

13. feb 2009 10:11 |

For some time I have had problems updating WCF service references on one of my PCs. I got the following error-message from Visual Studio: "The components required to enumerate Web references are not installed on this computer. Please re-install Visual Studio." As I am an obedient developer, I dutifully uninstalled and reinstalled Visual Studio yesterday. That took some hours, but then I had time for cleaning up some of the paperstacks in my office and if it would fix my problem, I would be a very happy developer. Unfortunately it did not fix my problem. Updating WCF service references still resulted in the samme error-message ;^(

Hm - one could try searching the net... OK let me do that - I might after all be able to find something that could lead me in the right direction. It would propable end up taking me a long time fixing my Visual Studio installation, but what else could I do? (short of reinstalling the PC that is - and I did not want to do that right now).

Well... as it it turned out, it took me less than a minute to find a solution and fix Visual Studio using:

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" /resetskippkgs

I am of course happy that I can update WCF references again, but man do I feel stupid - and more so than usual...

24. feb 2008 17:09 |

My colleague Carsten Juel Andersen gave a Microsoft TechTalk wednesday the 20th of february 2008. The topic of the TechTalk was the ASP.NET MVC Framework (which is part of the ASP.NET 3.5 Extensions).

If you are interested you can download a PDF with the slides (in Danish).

21. feb 2008 19:17 |

In the last couple of months I have made a number of presentations on new C# and Visual Basic language features in Visual Studio 2008 at seminars and conferences such as the following:

Dynamicwebs Partnerkonference 2008: The missing LINQ – en kort introduktion til LINQ

Aarhus .NET User Group: C# og VB sprognyheder i Visual Studio 2008

As well as a couple of Microsoft events...

If you are interested you can download a PDF with the slides (in Danish).

31. jan 2008 16:02 |

Animator Vs. Animation

It can be quite dangerous to be a suffering artist - convert a simple drawing to a symbol, shake it about a bit and you may be heading towards really big trouble.

See for yourself the fantastic and very imaginative events unfold: Animator Vs. Animation.

You say that the pen is mightier than the sword - but I just want to ask: "What about the eraser then?". I was cheering for Animation, but I was clearly underestimating the real and absolute power of very simple and very common software functions.

4. nov 2007 20:28 |

I gave a TechTalk at Microsoft Denmark Wednesday the 31st of October on the evolution the .NET framework.

The presentation focused on the most important new generally applicable features in the recent versions of the .NET framework.

The Danish title of the TechTalk was: "Overblik over udviklingen af .NET frameworket - et kig på de vigtigste nyheder i de seneste versioner"

Slides (in Danish) from the presentation can be downloaded here: Download OverblikOverUdviklingenAfDotNetFrameworket - Captator.pptx.

4. nov 2007 14:17 |

Blog dotHenriksBlog = Globals.Instance.BlogEngine.GetBlogByUrl("captator.dk/rss.aspx?blog=dothenrik");
dotHenriksBlog.CurrentCulture = new System.Globalization.CultureInfo("en"); 

16. sep 2007 10:42 |

Halo 3 Believe
Se stort billede

"år efter den store krig
byggede man et kæmpe monument
til minde om dem, der kæmpede for vores overlevelse, og som hyldest
til den helt, der reddede os fra afgrunden"

Denne simple tekst er at læse ved indgangen til monumentet til minde om den store krig. En tekst der skal minde os om de mange navnløse programmører, der kæmpede det godes sag. En tekst der skal minde os om at ingen kampe vindes uden ofre.

Halo 3 Believe
Se stort billede

Når jeg med ærefrygt bevæger mig gennem monumentet, er der blot en enkelt ting der nager mig... Man siger jo at vinderne skriver historien. Så hvorfor...? - så hvorfor har vinderne valgt at skrive historien i Flash og ikke i Silverlight? Gad vide hvem der egentlig vandt? - gad vide hvilken side vi egentlig var på?

31. aug 2007 23:53 |

Man hører tit kommentarer i stil med, at Microsoft har en unfair konkurrencefordel, fordi de angiveligt skulle være de eneste, der kender specifikationerne for de gamle binære Office fil-formater.

Hvad de færreste måske ved er, at Microsoft stiller specifikationerne royalty-frit til rådighed for de, der måtte have interesse deri.

Jeg har ikke selv haft behovet, men skulle det være relevant at få specifikationerne kan yderligere information findes i artiklen: How to extract information from Office files by using Office file formats and schemas.

31. aug 2007 16:12 |

I gamle dage skrev man læserbreve, hvis man havde en mening, som man ikke kunne komme af med på anden måde.

Nu om dage har blogs overtaget denne vigtige mission (det er da naturligvis også derfor, at jeg selv har en blog). Digitale netbårne blogs anses ofte dog for at være langt mere effektive end de gode gamle læserbreve. Blogs bliver anset for at være en umiddelbar og direkte kommunikationsform, ja endog et godt eksempel på hvad Web 2.0 egentlig går ud på - hvilket i sig selv da egentlig er ganske ambitiøst.

Det kan alt sammen være meget vel. Hvad jeg til gengæld synes er en anelse pudsigt er, at en avis som Version2 offentliggør udvalgte blogindlæg i deres trykte udgave. Og endnu mere pudsigt er det, at jeg foretrækker at læse disse trykte indlæg fremfor de digitale ditto. Om det så er fordi Versions2s journalister kun udvælger de allerbedste indlæg til den trykte version, eller om det er fordi jeg foretrækker at læse artikler offentliggjort i medier, jeg kan krølle sammen i bunden af min taske, skal jeg ikke kunne sige, men "it makes me say hmmm".

31. aug 2007 16:08 |

Tafiti beta

Microsoft har, som det sikkert er en del bekendt, lanceret en beta version af deres Tafiti website. Et website der har fået mange positive kommentarer med på vejen - lige fra det afdæmpede "nice" til det mere imponerede "mindblowing".

Microsoft betegner selv Tafiti som "an experimental search front-end from Microsoft, designed to help people use the Web for research projects that span multiple search queries and sessions by helping visualize, store, and share research results". Det lyder jo umiddelbart ganske imponerende. I videoen First Look: Microsoft Tafiti beskrives Tafiti som værende en demonstration af Silverlight teknologier.

Tafiti er implementeret ved hjælp af Silverlight 1.0 RC og AJAX og bygger rent søgemæssigt på Live Search. Det er altså ikke nye typer søgninger eller bedre resultater, Tafiti søger at stille til rådighed.

Jeg synes, at Tafiti er ret lækkert rent visuelt, men hvis man ser på brugerinteraktionen, er der en række elementer, som jeg har et mere nuanceret syn på. Her følger en lille liste over nogle af de små og store kvababbelser, jeg har i forbindelse med Tafiti.

Det tager dræbende lang tid at loade siden - ikke et godt udgangspunkt for en søgemaskine -men heldigvis kan man da i det mindste indtaste søgninger inden hele siden er færdig med at loade. Kan man ramme tekstboksen når den kommer flyvende kan man endda indtaste tekst i den inden den er kommet helt på plads i venstre siden, hvilket dog giver et ret pudsigt resultat (prøv det ;^)

Inaktiv pynt optager en uforholdsmæssig stor del af siden, hvilket begrænser mængden af relevant information unødigt. Et eksempel på dette er søgeboksen, der er placeret midt i et lettere ældet stykke linjeret papir. Har man lavet flere søgninger kan man ganske vist bladre tilbage i disse, men man kan tilsyneladende ikke hoppe vilkårligt. Specielt intuitivt synes jeg ikke, at det virker, og det fylder under alle omstændigheder uforholdsmæssigt meget.

Tafitis søgetekstboks

I venstresiden er der placeret en karrusel, hvor brugeren kan skifte mellem at se resultater inden for en række indholdskategorier: Web, images, news, feeds og books. Selve kontrollen er rigtig flot og lækkert lavet - sådan en kontrol må jeg da have lavet engang ved lejlighed. Men klikker man på en kategori, der ikke ligger lige før eller efter den kategori man p.t. har valgt, skifter man ikke direkte til den valgte side, men går via den mellemliggende kategori, hvilket betyder at et kategoriskifte dels tager uforholdsmæssigt lang tid dels virker voldsomt forstyrrende rent visuelt. Flot kontrol - dårlig anvendelse.

Tafitis karruselkontrol

Udover selve søgeboksen er der endnu en tekstboks: "filter these results". Om det bare er mig, der er forudindtaget, ved jeg ikke, men mit umiddelbare gæt på effekten af at indtaste en tekst i denne tekstboks ville være, at man fik returneret de sider i Microsofts database, der både indeholdt teksten i selve søgeboksen og som samtidig indeholdt teksten i filter-tekstboksen. Det er dog ikke tilfældet - det ser i stedet ud til, at tekst i filter-tekstboksen kun matches op imod den tekst, der aktuelt står på Tafitis resultatside. Ret ubrugeligt vil jeg mene, og jeg tvivler på, at det vil være det, de fleste brugere vil gætte på - men jeg kan jo tage fejl.

Venstre sidens hylde med link-stakkene, hvor man kan gruppere en række links for så eksempelvis at maile dem som en gruppe, er i sig selv faktisk en rigtig god idé. At man kun kan se stakkens label når man flytter musen henover stakken, og at stakkens ikon er en stiliseret webside fremfor en thumbnail af eksempelvis den første webside i stakken virker dog en tand for halvhjertet. Den grundlæggende idé kunne i det hele taget sagtens trækkes meget længere end den er blevet.

Det såkaldte Tree View forstår jeg simpelthen ikke. Hvordan en rodet præsentation af links og en klodset og tung navigation skulle være en fordel, når man skal navigere i et søgeresultat går ganske enkelt hen over hovedet på mig. Sorry...

Tafiti Tree View

Man kan ikke scrolle søgeresultaterne ved hjælp af musens scroll wheel, hvilket i sig selv er rimeligt irriterende; men sammenholdt med at et klik på linket til flere søgeresultater ("More..." ) ikke automatisk scroller listen, betyder det, at det er særdeles besværligt at gå en lang liste over søgeresultater igennem.

Det er måske ikke helt fair af mig at slå på en betaudgave af et website - der er jo en grund til, at man opererer med betaversioner. Så længe problemerne bliver fikset, inden den endelige udgave af Tafiti bliver tilgængelig, er der ingen ko på isen. Men hvis Tafiti skal blive til et nyttigt alternativt user interface til Live Search, tror jeg næppe, at Microsoft kan nøjes med at rette simple fejl. Hvis man i stedet blot betragter Tafiti som en demonstration af mulighederne i Silverlight, er der til gengæld flere ret gode detaljer, som jeg sagtens kunne lade mig inspirere af. Silverlight teknologien er (ihvertfald i den .NET baserede version 1.1 af teknologien) under alle omstændigheder en meget attraktiv teknologi.

Microsoft har helt sikkert ret i, at søgninger og organisering af resultater er noget, der sagtens vil kunne nyde godt af et mere visuelt baseret interaktion. Tafiti er efter min mening til gengæld ret langt fra at indfri dette behov ... måske burde man selv kaste sig over det ;^)

27. aug 2007 12:32 |


Som en modvægt til den konstante virtualisering vi udsættes for, synes jeg, at det er fascinerende, når der laves, hvad jeg tænker på som "realworld animationer".

Se eksempelvis denne reklame med en stickieman.

19. aug 2007 19:46 |

På http://msdn2.microsoft.com/en-US/library/aa480226.aspx kan man læse om Windows Presentation Foundation Data Binding. Man kan også se noget ret anderledes VB kode (helt kompilerbar er den næppe - heller ikke VS2008):

Dim theTable As DataTable = New DataTable()
String connString = ConfigurationManager.ConnectionStrings("Northwind").ConnectionString
String query = "SELECT EmployeeID, FirstName, LastName, Title, HireDate, Photo " + _
               " FROM Employees"

' Fill the Set with the data
Using conn as New SqlConnection(connString))
  Dim da As SqlDataAdapter = New SqlDataAdapter(query,conn)
End Using

Sådan går det, når man oversætter fra det ene sprog til det andet uden at smide resultatet igennem en kompiler. Det rammer også mig regelmæssigt, når jeg tror, at jeg kan lave 100% korrekt kode på PowerPoint slides. Længe leve dovenskaben - suk...

9. aug 2007 16:38 |

 Minesweeper the movie

Der er jo efterhånden gået mode i at filmatisere computerspil, og det var derfor også på tide, at vores alle sammens foretrukne actionspil blev overført til celluid.

Se det spændingsmættede preview på: Minesweeper the movie.

Tak til John for tippet.

9. aug 2007 10:48 |

For de af jer der benytter jer af multithreading (eller er forberedt derpå via generelle komponenter) i forbindelse med ASP.NET applikationer - det være sig web applikationer eller XML web services - er det vigtigt at være opmærksom på, at det er en ret dårlig ide, at bruge thread local storage i denne sammenhæng, idet ASP.NET har det med af og til at skifte tråd undervejs i et request.

I stedet for thread local storage kan man med fordel benytte HttpContext. ASP.NET sørger for, at HttpContext er det den samme hen over et request - også selv om tråden ændres.

Vi løb ind i fejlen i forbindelse med noget transaktionshåndtering i vores Eifos framework. Da det var en ret dybt begravet - og i den konkrete sammenhæng også ret ligegyldig - teknikalitet, var det ikke helt åbenlyst, at finde frem til, hvad problemet egentlig var. Når System.Data.SqlClient.SqlTransaction.ZombieCheck smider en exception, er det ikke just TLS, der er det første, der rinder i hu. Til gengæld var løsningen forholdsvis simpel: Vi lavede vores egen thread local storage håndtering, som løste det potentielle problem en gang for alle på tværs af alle vores applikationer (jubii for at have et framework).

1. aug 2007 10:31 |

Tux 500

Nu er det ikke ligefrem meningen, at Microsofts Auto PC skal bruges til at styre/køre bilen, men derfor er det nu vist meget godt, at Microsoft ikke deltog i det i denne artikel omtalte Indy 500 løb. Det kunne jo have givet grobund for mange forskellige mere eller mindre vittige bemærkninger. Den slags vil jeg naturligvis holde mig for god til og blot nøjes med at bemærke, at pingviners bevægeapparat ikke overraskende ikke er skabt til at bevæge sig specielt hurtigt - ihvertfald ikke på landjorden.

31. maj 2007 20:31 |

Microsoft Surface

Med den pressedækning der har været deraf, kan der næppe være mange, der stadig er uvidende om, at Microsoft har lavet et kaffebord.

"Og hvad så?" tænker man måske - Apple har jo lavet et rack. Så at IT-firmaer laver møbler er vel ikke så vildt.

Næh, men det der gør dette kaffebord til noget særligt er, at det kører en specialiseret version af Windows Vista, har en skærm, fem kameraer, 10/100Mbit Ethernet, 802.11 b/g wireless, Bluetooth 2.0 og en brugergrænseflade lavet med Windows Presentation Foundation (WPF). Well - egentlig så er det i sig selv vel egentlig heller ikke noget særligt. Med undtagelse af de fem kameraer er det jo ikke voldsomt forskelligt fra det setup jeg har, når jeg sidder med min bærbare inde i stuen. Næh, det der virkelig adskiller dette sofabord fra størstedelen af de sædvanlige kakkelbelagte halvfjerser klenodier, er dets funktionalitet og den interaktivitet, det muliggør.

Som trofaste læsere af min blog (hej mor) måske vil erindre var jeg sidste år behørigt imponeret over interaktiviteten i Multi-Touch Interaction Experiments, og Microsoft Surface er i og for sig en fætter hertil - men en fætter der kører på steroider - eller eftersom der er tale om et kaffebord måske snarere på koffein. I modsætning til nogle af de andre lignende produkter/teknologier jeg har set omtaler og demoer af, synes jeg virkelig, at det er lykkedes Microsoft at skabe en brugergrænseflade, der på overbevisende måde demonstrerer nogle attraktive brugsscenarier: Kaffebordet er ikke længere noget, der er placeret i et legetøjslaboratorium - det er på vej ind i stuen.

Nedenfor følger et par links til nogle små film man kan kigge på - de er helt sikkert tiden værd.

First Look: Microsoft Surfacing Computing (virkelig god, 18 minutter lang gennemgang af mulighederne - viser nogle helt vildt cool applikationer).

Microsoft Surface: Behind-the-Scenes First Look (ok, 4 minutters lang video - for de lidt utålmodige).

Microsoft Surface (Microsofts eget website - videoerne er dog for salgsagtige til min smag).

Kaffebordet skulle så småt komme i handelen hen imod slutningen af året - så nu har jeg da ihvertfald fundet på det første julegaveønske.

28. maj 2007 17:42 |

PDC - Professional Developers Conference

Microsofts Professional Developers Conference (også kendt som PDC) skulle have været afholdt fra den 30. september til den 5 oktober 2007.

Men PDC 2007 er nu blevet aflyst grundet manglende nyheder, der kunne danne faglig basis for konferencen. Med alle de lanceringer der ligger foran os, kan det måske lyde underligt, at der skulle mangle udviklerrelaterede nyheder; men PDC beskæftiger sig, som det måske er nogle bekendt, kun sjældent med produkter og teknologier, der allerede er i beta-stadierne. PDC har faktisk tradition for at være konferencen, hvor Microsoft løfter sløret for nogle af de teknologier og produkter som _måske_ (og måske _ikke_) bliver til realitet flere år ud i fremtiden.

Manglen på oplagte temaer for PDC 2007 har fået nogle til at gisne, om hvorvidt Microsoft virkelig var så langt med den næste bølge (efter Visual Studio 9, SQL Server Katmai og Windows Server 2008), at de kan danne basis for en egentlig konference allerede i oktober måned. Det kan man så nok konkludere, at det er de jo nok ikke ;^)

Set i det lys er det måske nok ærgeligt, at PDC 2007 er blevet aflyst, fordi man så går glip af den store oplevelse, som PDC plejer at være, men på den anden side er det jo nok bedre, at Microsoft venter til, der kan blive ordentlig med kød på konferencen.

For de der som undertegnede havde tænkt sig, at PDC 2007 skulle være årets store Microsoft konference, er aflysningen dog ret dårligt timet. Da MIX allerede er overstået, og Tech·Ed løber af stablen om en uges tid, bliver det nok desværre ikke til nogen USA-konference for mig i år...

Nu er der så kun et par enkelte spørgsmål tilbage

  • Gad vide hvornår den næste PDC så kommer?
  • Kan vi håbe på, at Microsoft holder den et andet sted end Los Angeles?
  • Hvad bliver temaet for konferencen?

23. maj 2007 22:39 |

Af hensyn til de der ikke har adgang til soapbox, kan det oplyses, at videoen (naturligvis) også kan ses på YouTube: Markedsføringsvideo for Microsofts nye oFone (og nej man staver da ikke "Fone" med "Ph" - helt ærligt! ;^)

23. maj 2007 19:52 |

Microsofts oFone

Apples iPhone er når man skærer ind til benet på de tekniske specifikationer vist ikke helt så epokegørende, som Apples markedsføringsmaskine gerne vil gøre den til.

Næh se så er der anderledes nyskabelse i designet af Microsofts konkurrende produkt: oFonen (som, i modsætning til hvad man kunne tro, iøvrigt intet har med Viggofonen at gøre) .

Se videoen og bliv imponeret: Markedsføringsvideo for Microsofts nye oFone. Man skal vel nok regne med, at virkelighedens oFone er er af en lidt anden beskaffenhed, end den man ser i videoen; der er jo trods alt tale om en markedsføringsvideo - men jeg er nu sikker på, at den alligevel nok skal få en og anden til at stirre i forundring.

Nu har jeg kun et problem - jeg har ledt og ledt på nettet, men jeg kan ikke finde et sted, der rent faktisk handler med oFonen - nogen der kan hjælpe mig?

15. maj 2007 11:27 |

The Simpsons Marge On Google

Når man bruger nogle af de efterhånden mange tjenester for kort og satellitfotos, ønsker man typisk flest mulige detaljer. Eller gør man nu egentlig også det?

The Simpsons Marge On Google

15. maj 2007 10:37 |

Opdatering af Outlook 2007

Jeg har, siden jeg sidste efterår for alvor begyndte at bruge Office 2007, oplevet massive performanceproblemer med Outlook 2007 (i parentes bemærket har jeg en mailbox på omkring 2GB - hvilket dog ikke nødvendigvis i sig selv resulterer i performanceproblemerne).

Skulle du opleve samme type problemer kunne du eventuelt forsøge dig med følgende opdatering af Outlook 2007 - opdateringen har om ikke ligefrem gjort Outlook velperformende så ihvertfald hjulpet en hel del på problemet.

Update for Outlook 2007 (KB933493)

7. mar 2007 08:13 |

Visual Studio 2005 Service Pack 1 Update for Windows Vista

Personligt har jeg ikke oplevet voldsomt mange problemer med Visual Studio 2005 på Vista (jeg har oplevet andre problemer, men det er jo en anden sag ;^ ), og Vista har ellers været mit primære operativsystem siden maj måned sidste år. Andre udviklere har dog givet udtryk for, at de har haft problemer, så det er jo nok afhængigt af det specifikke setup.

Hvor om alting er, har Microsoft nu frigivet den endelige version af Visual Studio service pack 1 til Vista.

Har du kørt med betaen af service packen skal den afinstalleres først.

Download af Visual Studio 2005 Service Pack 1 Update for Windows Vista

6. mar 2007 11:57 |

Defy All Challenges

Jeg er blevet en anelse nysgerrig efter at finde ud af, hvad det præcis er, der kommer til at ske om 6 dage 12 timer 11 minutter og 10 sekunder - jeg mener 9 sekunder, 8 sekunder, 7 sekunder, ...

Umiddelbart ligner det jo en af de sædvanlige reklamekampagner, hvis ikke det lige var for formuleringen "the adventure begins in...". Så spørgsmålet er, hvad det er for et eventyr, der vil tage fart: Er det (blot) en lang reklamefilm med den lettere uheldige stormtrooper eller er det en ny teknologi/et nyt produkt, der kan bruges sammen med Visual Studio eller er det et eventyr med Klods Hans eller er der rent faktisk en sammenhæng mellem Visual Studio og stoleleg...

Se selv nedtællingen (så længe den varer) og de små film med den uheldige stormtrooper på Defy All Challenges. Det er måske ikke ligefrem hylende morsomme film, men nysgerrig er jeg da alligevel blevet.

19. feb 2007 02:10 |

 Certified for Windows Vista

Som endnu en opfølgning på mit mini-seminar hos Microsoft den 7. februar 2007 om de tekniske krav til applikationer, der skal Vista certificeres, kommer denne gang PowerPoint-slidesene. Slidesene er udarbejdet af Microsoft.

Download Vista certification - Captator.ppt

17. feb 2007 12:08 |

 Certified for Windows Vista

Som opfølgning på mit mini-seminar hos Microsoft den 7. februar 2007 om de tekniske krav til applikationer, der skal Vista certificeres (med "Certified for Windows Vista"-logoet vel at mærke) kommer her de efter min mening to vigtigste links i den forbindelse:

Requirements for the Windows Vista Logo Program for Software er en letlæst og løs gennemgang af kravene og et godt sted at starte.

Certified for Windows Vista test cases er en mere grundig gennemgang af de konkrete krav en applikation skal leve op til. Dette dokument er så detaljeret, at man (ihvertfald et meget langt stykke hen af vejen) selv vil kunne teste applikationen på samme måde, som den vil blive testet i forbindelse med certificeringen.

11. feb 2007 11:57 |

Saturday Night Live: Steve Jobs om iPhone

Saturday Night Live har begået et ganske underholdende indslag om Apples iPhone: SNL -- Weekend Update iPhone Special.

Bemærk iøvrigt hvordan verdenskortet, der danner baggrund for optagelsen, præcist er udformet...

16. dec 2006 14:37 |

Visual Studio 2005 Team Foundation Server SP1

Også den endelige version af service pack 1 til Visual Studio 2005 Team Foundation Server er kommet på gaden.

Download af Visual Studio 2005 Team Foundation Server SP1

Flere af linksene og overskrifterne på websiderne for VS2005 SP1 og VS2005 TFS SP1 er tydeligvis forkerte, hvilket gør det lidt forvirrende, når man browser rundt, vi må håbe, at Microsoft snarest får fikset dem.

16. dec 2006 14:11 |

Microsoft Visual Studio 2005 Service Pack 1

Så har Microsoft frigivet den endelige version af service pack 1 til Visual Studio 2005.

Download af Microsoft Visual Studio 2005 Service Pack 1

Microsoft har lavet dokumentet Visual Studio 2005 Service Pack 1 release notes, der dels beskriver forhold omkring installationen, som det kan være en fordel at kende til inden man går igang, dels indeholder en liste over kendte issues og workarounds.

13. dec 2006 11:42 |

PDC - Professional Developers Conference

Microsoft har nu offentliggjort datoerne for deres Professional Developers Conference (også kendt som PDC):

Der er pre-konference den 30. september og den 1. oktober 2007 - og selve konferencen ligger fra den 2. oktober til den 5 oktober 2007.

PDC afholdes igen, igen i Los Angeles - jeg havde da godt nok håbet, at vi kunne komme til en lidt mere inspirerende by denne gang, men man kan jo ikke få alt, og jeg glæder mig helt sikkert alligevel til PDC2007.

Se flere detaljer på Microsofts PDC website efterhånden som de kommer til.

12. dec 2006 04:09 |

Microsoft har releaset en Visual Basic 2005 Power Pack rettet mod udviklere, der ønsker at undgå at lave flere ændringer end højest nødvendigt ved portering af VB6 kode til VB.NET. Power packen er et såkaldt compatibility library - altså en komponent man kan referere fra ens .NET kode - der gør, at kode der benyttede VB6s Printer objekt med nogle få ændringer, også vil kunne køre under VB.NET.

Enkelte properties understøttes dog ikke længere (DrawMode, DriverName, hDC, Port, TrackDefault, og Zoom). Til gengæld er der så kommet en række nye metoder og properties til, som man kan benytte sig af i ens .NET kode.

Download af Microsoft Printer Compatibility Library 1.0

4. dec 2006 10:29 |

Captators Tool'ekalender 2006

I anledning af den tilstundende tool'etid har vi lavet en tool'ekalender.

Som navnet antyder er årets tema værktøjer, som vi hos Captator finder nyttige i vores udvikler-relaterede arbejde. En del af de udvalgte værktøjer har også relevans for ikke-udviklere, mens andre er mere kode-orienterede og dermed i sagens natur nok ikke giver så megen mening med mindre, man er udviker.

Vi har udelukkende medtaget værktøjer, der er frit tilgængelige på nettet.

Har du forslag til sådanne værktøjer, som en .NET udvikler efter din mening ikke burde kunne leve uden, hører jeg meget gerne om dem - send mig i givet fald en email på lykke@captator.dk.

Låger kan åbnes på Tool'ekalender 2006.

25. nov 2006 19:52 |

Vores kommende geekdinner i Århus den 5. december er nu kommet på www.geekdinner.dk. Du kan derfor vælge tilmelde dig der frem for at sende email.

Du kan læse mere om arrangementet i denne tidligere blogpost derom: Geekdinner i Århus den 5. december 2006.


20. nov 2006 23:59 |

  • Er du en geek?
  • Kan du lide at spise?
  • Kan du lide en øl eller to?
  • Kan du lide .NET?
  • Kan du lide at være sammen med andre, der har tilsvarende sunde interesser?

Så bør du helt sikkert tage med til det, der giver virkelig mening i tilværelsen: Geeekdinner i Århus.

I forbindelse med Mød Microsoft i Århus den 5. december afholder vi (Thomas Jespersen  og undertegnede) efterfølgende en geekdinner. Vi mødes, når Mød Microsoft arrangementet er færdigt (kl. ca. 16:45) på Cafe Hollywood, meget tæt på CinemaxX, hvor Mød Microsoft afholdes.

Send en mail til mig på lykke@captator.dk, hvis du vil med, så vi af hensyn til Cafe Hollywood ved, hvor mange der kommer.

Bemærk: Geekdinneren har intet med Microsoft at gøre, så alt er for egen regning.

Du er naturligvis velkommen til geekdinneren uanset om du deltager på Mød Microsoft eller ej, men selvom Mød Microsoft naturligvis kun bliver dagens sekundære arrangement, så vil jeg da alligevel nævne, at Mød Microsoft denne gang har de to spor: "2007 Microsoft Office System – klient" og "2007 Microsoft SharePoint Server" og afholdes i Århus den 5. december og i København den 7. december.

Du kan tilmelde dig Mød Microsoft arrangementerne her.

17. sep 2006 18:46 |

 Virtual CD-ROM Control Panel

Jeg har gennem længere tid været en ivrig bruger af Microsoft nyttige lille tool til læsning af indholdet i blandt andet iso-filer: Virtual CD-ROM Control Panel, men desværre har jeg haft en del problemer i forbindelse med Vista - nogle gange virkede toolet, andre gange gjorde det ikke.

Men så slog det mig, at det sikkert skyldtes Vistas User Access Control - og ganske rigtigt: Efter at have slået UAC fra virker Virtual CD-ROM Control Panel igen på glimrende vis.

16. sep 2006 17:42 |


Som en servicemeddelelse til de der ikke måtte være opmærksomme derpå, kan det nævnes, at Microsoft den 25. september afholder to arrangementer for udviklere:

IE 7.0 & sikkerhed for udviklere

Vista & sikkerhed for udviklere

Jeg har netop meldt mig til begge arrangementer, som iøvrigt finder sted i København.

28. jun 2006 10:42 |

.Henrik om .NET artikel: Når ting tager tid.

Som en servicemeddelelse til de stakler, der ikke checker vores website dagligt, vil jeg henlede opmærksomheden på en lille artikel, jeg har begået i serien ".Henrik om .NET". Artiklen hedder "Når ting tager tid", og den handler om BackgroundWorker-komponenten, som kan hjælpe udviklere med at implementere responsive Windows brugergrænseflader.

15. jun 2006 22:54 |

Rygterne om at Ray Ozzie talte på TechEd keynoten i søndags, fordi han skulle køres i stilling til at indtage de højere luftlag i Microsoft, har måske ikke været helt ved siden af. Det er i hvertfald en oplagt konklusion i lyset af dagens meddelelse om, at Bill Gates træder tilbage som chief software architect for Microsoft - ganske vist ikke lige med det samme - men i juli 2008. Udover Ray Ozzie bliver også blandt andet Craig Mundie kørt i stilling til en forfremmelse - i hans tilfælde som "chief research and strategy officer"

William H. Gates (Bill Gates)

billg@microsoft.com vil fortsætte som formand for Microsoft, men vil i højere grad hellige sig arbejdet med velgørenhed i rammerne af Bill & Melinda Gates Foundation.

Og så skal Bill have 7 ugers sommerferie i år - SYV uger!! - der er nu ikke meget iværksætter over ham mere ...  ;^ )

Microsoft skal såmænd nok overleve uden Bill Gates ved en af de daglige rorpinde, men det bliver nu alligevel lidt underligt at skulle tage (ihvertfald delvist) afsked med den person, der om nogen, har personifiseret de seneste mange års udvikling i IT branchen...

Vil du læse mere kan det ske på for eksempel: Microsoft Announces Plans for July 2008 Transition for Bill Gates.

11. jun 2006 11:17 |

Microsoft har renamet WinFX til nu at være version 3.0 af .NET frameworket.

Som udgangspunkt er jeg glad for, at teknologierne i WinFX - og det vil blandt andet sige Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF) og Windows Workflow Foundation (WF) - bliver taget ind under selve .NET framework hatten. Jeg har ind til nu været lettere irriteret over, at WinFX tilsyneladende blev betragtet som en optionel komponent - der er trods alt tale om nogle meget væsentlige teknologier, der forhåbentlig i løbet af kort tid vil blive opfattet som en helt naturlig del af enhver .NET udviklers værktøjskasse. Så som udgangspunkt er jeg altså glad for, at WinFX bliver en del af selve .NET frameworket - også navngivningsmæssigt.

Microsoft har renamet WinFx til version 3.0 af .NET frameworket

De direkte konsekvenser af renamingen burde være til at overskue - der er nemlig udelukkende tale om en renaming. Komponenterne har den samme fysiske form, som de hele tiden har haft. Men det er også her jeg ser nogle potentielle - om end reelt set ret små - problemer. Version 3.0 af .NET frameworket er kun en udvidelse og ikke en erstatning af version 2.0, som det ellers har været tilfældet med de tidligere versioner af .NET frameworket. Version 3.0 af .NET frameworket bliver hermed den første version af .NET frameworket, der kommer til at forudsætte en tidligere version (af samme framework), idet version 3.0 forudsætter version 2.0.  Jeg kan sagtens acceptere,, at en ny version af .NET frameworket benytter den samme CLR som en tidligere version, men rent teknisk håber jeg, at Microsoft vil lave en eller anden form for automatisk bundling af de to "frameworks" således, at man automatisk får version 2.0 med, når man installerer version 3.0. Og så ville jeg nok også have foretrukket ,at WinFX blot var blevet renamet til for eksempel version 2.5 af .NET frameworket. Ikke fordi ændringernes omfang ikke skulle borge for et større hop i versionsnummeret - for det gør de da så rigeligt - men fordi man derigennem kunne få et hint om den tætte sammenhæng med version 2.0 af frameworket.

På nettet har navneændringen fået nogle - efter min mening - alt for barske ord med på vejen; for selvom det da er noget rod rent budskabsmæssigt, at en tidligere version af frameworket forudsættes, så er det altså heller ikke værre. Enhver navneforvirring Microsoft skaber betyder trods alt blot flere konsulentkroner til de, der skal forklare terminologien ;^ )

Samtidig med renamingen af WinFX er InfoCard iøvrigt blevet renamet til Windows CardSpace (WCS). Windows CardSpace er også en del af version 3.0 af .NET frameworket.

Se mere om Microsofts tidligere terminogiændringer i min blogpost Vis-a-vis Vista samt de aktuelle i Vice President S. Somasegar weblog.

8. jun 2006 16:17 |

Microsoft Office         Windows Vista

Både Windows Vista beta 2 og Office 2007 beta 2 er offentligt tilgængelige (hvilket i og for sig ikke er nogen dugfrisk nyhed) for de, der måtte have lyst til at se nærmere på dem.

Betaerne kan hentes på følgende adresser:

Windows Vista Beta 2 Customer Preview Program

2007 Microsoft Office system preview site

8. jun 2006 08:59 |

Microsoft Anti-Cross Site Scripting Library V1.0 til .NET

Efter mit indlæg om sikkerhed og applikationsudvikling på Developer Day 2006 konferencen, har jeg fået forespørgsler på en url til "Microsoft Anti-Cross Site Scripting Library V1.0", som er en .NET-komponent med meget simple HTML- og url-encoding-funktioner. Pointen ved funktionerne er, at de baserer sig på en positivliste (whitelist) frem for en negativliste (blacklist) for karakterer, der ikke encodes. Brug af encoding-funktioner kan være med til at forebygge Cross-Site Scripting (XSS) angreb.

23. maj 2006 23:42 |

Microsoft Office         Windows Vista

Microsoft har per dags dato gjort følgende betaer tilgængelige på MSDN Subscriber Downloads:

  • Windows Vista Beta 2 (x86)
  • Windows Vista Beta 2 (x64)
  • Windows Server "Longhorn" Beta 2 (x86)
  • Windows Server "Longhorn" Beta 2 (x64)
  • Office System Beta 2 Kit 2007 - Programs Disk
  • Office System Beta 2 Kit 2007 - Server Disk (Office Project Server 2007)
  • Office System Beta 2 Kit 2007 - Server Disk (Office SharePoint Server 2007)

Det tager så sandelig sin tid at downloade, så jeg får det desværre først installeret i morgen... Men der regner jeg så til gengæld også med at skifte til Vista og Office System 2007 som min primære platform - jeg glæder mig...

23. maj 2006 16:44 |

Google Moon

Google har lavet en ny tjeneste svarende til Google Earth. Denne gang er det dog ikke Jorden, men Månen man kan betragte. Den nye tjeneste beskæftiger sig spøjst nok kun med en meget lille del af Månen - til gengæld er der tale om den meget relevante del, hvor verdens første månelanding fandt sted - og tjenesten er da også netop ment som en måde at mindes den første månelanding på. Nu kunne man jo mene, at det er en forholdsvist uinteressant tjeneste eftersom, den kun beskæftiger sig med en meget lille del af Månens samlede overflade, men til gengæld får man så et særdeles detaljeret billede af Månens overfladestruktur. Hvis du vil have et virkeligt godt og detaljeret billede af det syn, der mødte de første astronauter, da de satte deres rumfødder på Månens overflade skal du sørge for, at zoome helt ind!

Den nye tjeneste - der iøvrigt går under navnet Google Moon - er en del af Googles omfattende Google Copernicus Hosting Environment and Experiment in Search Engineering projekt.

12. maj 2006 16:01 |

 Hello, I'm a Mac... and I'm a PC...

Jeg har ikke brugt en Mac siden slutningen af firserne/begyndelsen af halvfemserne, og jeg ejer ikke en IPod, så jeg ved ikke alverden om Apples produkter - men de er nu ret gode til at lave reklamer.

Se for eksempel denne lille serie af reklameperler: Hello, I'm a Mac... and I'm a PC...

Nu skal man nok ikke lægge for meget i reklamerne, men jeg gad nok vide, om der mon for eksempel er noget dybere budskab gemt i at en PC er nybarberet, og en at Mac har en lidt uorganiseret pletvis form for skægvækst...?

9. maj 2006 11:49 |

Endelig! Endelig fik Microsoft genindført web projekt filer, og dermed har de fået fikset det problem, de med VS 2005 fik skabt, da de ændrede måden, man arbejder med web projekter på.

Med den såkaldte "VS 2005 Web Application Project option" har man mulighed for igen, at få en (ihvertfald i min verden) mere klassisk måde at håndtere web projekter på.

"VS 2005 Web Application Project option" har blandt andet følgende features:

  • Filerne og referencerne i et projekt specificeres, som det også var tilfældet i VS 2003 i en projektfil.
  • Alle kodefiler i et projekt kompileres til én assembly.
  • Edit and Continue understøttes.

Hvis du vil læse mere om den releasede "VS 2005 Web Application Project option", kan det blandt andet gøres på VS 2005 Web Application Project V1.0 Released, og du kan downloade den fra Visual Studio 2005 Web Application Projects.

Scott Guthrie lover i ovennævnte blogpost, at den nye (eller gamle alt efter hvordan man ser på det ;^ ) model også vil blive supporteret i fremtiden ("It will also be added built-in to VS 2005 SP1, and will be fully supported with Visual Studio releases going forward."). Og det er jeg da personligt ganske glad for ;^ )

"VS 2005 Web Application Project option" understøtter ikke "Visual Web Developer Express Edition".

2. apr 2006 00:01 |

Windows Vista

Det ser ud til, at gårsdagens (lørdag den 1. april 2006) beskrevne problem med Vista-sourcekoden alligevel ikke får nogen indflydelse på lanceringen af Vista - ja der sås faktisk en vis tvivl om, hvorvidt der, når det kom til stykket, overhovedet har været et problem.

Læs mere om den dybdeborende undersøgelse vi har foretaget i vores addendum til gårsdagen artikel.

1. apr 2006 13:22 |

Windows Vista

Det ser ud til, at Microsoft ikke blot har problemer med sikkerheden og hardwareproducenters manglende support af Vista - der er muligvis endnu større problemer på vej. Vi har skrevet en lille artikel om problemstillingen. Kør den med denne artikel medfølgende kode, der viser at Microsofts udviklere med en vis sandsynlighed har kopieret kode udviklet af Sony.

19. mar 2006 20:10 |

 DScaler Mpeg Video Filter

Jeg har haft noget bøvl med at få min ret nye bærbare Dell til at afspille DVD film - bøvlet bestod både i kontrollerede fejlmeddelelser fra Windows Media Player såvel som egentlige crash af programmet (angiveligt på grund af en dårlig tredjeparts driver).

På sidste Mød Microsoft kom jeg til at snakke med blandt andet Kenneth Auchenberg om det. Han forbarmede sig over mig, og efter et par forslag, der desværre også mislykkedes, foreslog han DScaler 5. Selv om de tager alverdens forbehold for den ufærdige software, virkede den perfekt. Tak Kenneth! Linket til softwaren, der gav mig den gode oplevelse, er hermed givet videre til andre stakler.

18. mar 2006 15:42 |

Det sås af og til tvivl om, hvorvidt Microsoft selv bruger .NET i deres softwareudvikling - altså om de tager deres egen medicin.

Anvendelse af managed kode i Microsofts egne produkter og teknologier

Nu tror jeg på ingen måde, at Microsofts udviklere udelukkende programmerer i .NET - mon ikke Microsoft stadig laver en hel del C++ udvikling på især deres eksisterende produkter og teknologier - men ser man på nedenstående tal, kan der i det mindste næppe være tvivl om, at de faktisk tager deres egne .NET piller.

Man kan naturligvis mene, at sådanne tal ikke er voldsomt relevante (antallet af kodelinjer har sjældent været et godt mål for noget som helst - udover naturligvis antallet af kodelinjer ;^ ) men de kan da i det mindste være med til at give en ide om Microsofts eget engagement i .NET platformen.

Tallene, der angiver antallet af linjer managed kode, har jeg for få dage siden fået fra Microsoft.

  • Visual Studio 2005: 7.5 million linjer
  • SQL Server 2005: 3 million linjer
  • BizTalk Server: 2 million linjer
  • Visual Studio Team System: 1.7 million linjer
  • Windows Presentation Foundation: 900K linjer
  • Windows Sharepoint Services: 750K linjer
  • Expression Interactive Designer: 250K linjer
  • Sharepoint Portal Server: 200K linjer
  • Content Management Server: 100K linjer

6. mar 2006 21:47 |

Vi har lagt en ny mini-artikel på vores website om XMLHTTP Callback. Well - ret beset er der faktisk tale om en opdateret version af et en artikel fra vores Whidbey Julekalender 2004. Men ud over at koden er blevet opdateret til rent faktisk at virke med den endelige version af Whidbey (Visual Studio 2005 og version 2.0 af .NET frameworket), så er der også kommet et lille ekstra afsnit med om Firefox understøttelse.

1. mar 2006 18:57 |

Vi er hos Captator, så småt ved at gå ind på markedet for standardprodukter, og i den forbindelse gør vi os naturligvis nogle tanker om, hvordan softwaren skal markedsføres. Nu er det ikke som sådan planen at pakke vores software i fysiske papkasser, men som et tankeeksperiment kunne man jo stille sig selv spørgsmålet, hvad resultatet ville blive, hvis Microsoft skulle redesigne IPods papkasse:

IPod package - udgangspunktet  

Hvis man også vil have et bud på hvad Microsoft - og mange andre softwareudviklingsvirksomheder - kunne ende op med, kan man meget passende besøge microsoft ipod packaging parody.

IPod package - resultatet

Nu er der jo tale om en parodi, og dem skal der da naturligvis også være plads til, men efter at have set den iøvrigt flotte video har jeg ikke helt kunne slippe tanken om, hvor let man kan komme til at forlede sig selv i forbindelse med markedsføring. Forlede sig selv til medtage alle mulige mere eller mindre vigtige detaljer, fremfor i stedet at fokusere på det essentielle - selve produktet. Jeg vil ikke foregive, at jeg ved specielt meget om markedsføring, men måske kan "less is more" være lige så relevant i den verden som i forbindelse med softwareudvikling.

26. feb 2006 18:57 |

Hvis du nogle ønsker til emner, som jeg kunne skrive om i min ".Henrik om .NET" klumme - som også ligger på Microsofts danske udvikler site, så hører jeg meget gerne derom.

Det skal helst ikke være alt for omfattende emner. Så ”Hvordan laver man generiske frameworks og flerlagsarkitekturer?” er nok i sig selv et meget spændende emne, men på grund af dets ret brede formulering er det ikke et specielt godt emne for en enkelt artikel.

Hvis du har en eller flere ideer til emner, du gerne vil have mig til at behandle i en eller flere artikler, så send mig en mail på lykke@captator.dk.

17. feb 2006 18:57 |

At der er lavet en trykfølsom skærm, der kan detektere flere samtidige tryk burde måske nok imponere mig, men det gør det egentlig ikke.

At der er lavet en video, der demonstrerer skærmen er naturligvis heller ikke i sig selv imponerende.

 Multi-Touch Interaction Experiments - farverige flows

Men billederne er unægteligt flotte, og lyden passer glimrende dertil - og begge dele er jeg da absolut behørigt imponeret over (mest billederne ;^ ). Men det er slet ikke det, der imponerer mig mest - flotte billeder ser man da hele tiden.

Nej, da jeg er softwaremand, er det der imponerer mig mest de demoer, hvor de flere samtidige tryk arbejder sammen - især fordi det sker på en imponerende meningsfuld måde. Udover det ovenstående billede er de to nedenstående billeder også gode eksempler på netop dette samarbejde, men det skal du nok selv se videoen for blive overbevist om.

Multi-Touch Interaction Experiments - resize af billeder   Multi-Touch Interaction Experiments - nedskydning af ufoer med virtuelle kramper

Den kære Hr. Jefferson kan vist alt i alt godt være stolt.

Still-billederne er i sig selv naturligvis ikke specielt imponerende, men læn dig godt tilbage i stolen og se videoen (husk lyden) - jeg er faktisk lidt imponeret!

Du kan også besøge Hr. Jeffersons eget website "Multi-Touch Interaction Research", hvor han har lidt beskrivelser af teknikken.

17. feb 2006 09:35 |

Office 12 kommer til at hedde Office 2007

Så ser det ud til, at Microsoft har eksekveret følgende simple metode:

string nextOfficeName = "Office 12".Replace("12", "2007");

Om man så kan udlede alverden ud fra det nye navn er jo nok i praksis ret tvivlsomt - men det betyder naturligvis ikke, at man skal holde sig tilbage...

Det kommende Office Server SharePoint-produkt får naturligvis også et kalenderorienteret produktnavn: "Microsoft Office SharePoint Server 2007".

Lidt mere interessant end de egentlige navneskifter er nok, at Office produkterne kommer til at indbefatte Microsoft Office SharePoint Designer 2007, og at Microsoft eksplicit siger, at dette produkt er planlagt til release i dette års andet halvår. Jeg synes egentlig, at det er lidt spøjst, at udgivelsen ikke bindes til resten af Office pakken - men måske overfortolker jeg bare Microsofts formuleringer. Du kan jo så selv lave dine egne overfortolkninger efter at have læst Q&A: Microsoft Unveils Next Generation of Web Authoring and Design Tools.

Nå ja - FrontPage vil iøvrigt blive udfaset (citat: "FrontPage will be discontinued gradually"). Det er en del år siden, jeg sidst har brugt FrontPage, så for mig vil det næppe blive et stort savn, men egentlig er det da lidt vemodigt, at et produkt, så mange har elsket at hade, bare vil forsvinde ud i det store intet... nå, hvis vi gør os umage, finder vi jo nok noget andet, vi kan elske at hade...

4. dec 2005 19:41 |

Captators Adventskalender 2005 - fire visualizers til Visual Studio 2005

Sidste år handlede Captators julekalender om Microsofts kode eller mere præcist om nye features i Visual Studio 2005 og version 2 af .NET frameworket (eller Whidbey som det også hed, da far var dreng). I år handler vores julekalender om din egen kode. Julekalenderen består denne gang nemlig af fire visualizers, der hjælper med at gennemskue, hvad der egentlig foregår i ens kode (hvis man da ellers har den slags problemer ;^)

Den første visualizer kan vise runtime-kontrolhierarkiet, hvilket er særdeles praktisk, hvis man arbejder med dynamiske brugergrænseflader, hvor kontroller oprettes og tilføjes til brugergrænsefladen på runtime tidspunktet.

Download den fra Captators Adventskalender 2005.

27. okt 2005 19:41 |

Visual Studio 2005 Visual Studio 2005

Så har larven efter en grundig forpupning ladet sig udklække. Så nu kan de utålmodige godt begynde at downloade fra MSDN

28. aug 2005 15:51 |

Escape From Yesterworld

Savner du lige som undertegnede de gamle VB3 programmer Jens Lyn film, bør du absolut lægge vejen forbi Escape From Yesterworld.

Blandt de medvirkende ses

  • The Salesman
  • The Boss alias "The Man"
  • Developers spending to much time on repetitive tasks (de skovler kul i DLL-"heaven/hell")
  • The Developer
  • The System Architect
  • En fra markedsføringsafdelingen med "ideer"... ham skal man vist nok være lidt skeptisk overfor...

Se helten, som naturligvis er "The Developer", bruge en Casual Friday på at kæmpe mod tre modstandere projekt ledere med de frygtindgydende navne "Killer Deadline", "Pointless Process" og "Scope Creep" (husk at det er Casual Friday - nu er du advaret)..

Se hvorfor chefer ikke skal blande sig for meget i IT afdelingens arbejde, når tingene går godt - de skal ihvertfald ikke hive i det store håndtag.

Kampen - eller projektet om man vil - spidser til, da deadlinen bliver rykket frem (at smide flere udviklere efter projektet resulterer derefter i et større hundeslagsmål), databasen bliver ændret (hvilket medfører en eksplosion i kontrolrummet) og nye features der ikke giver mening (en stor abe med et horn i panden) bliver tilføjet. Det eneste positive er, at PONG dukker op, mens kampen ser allermest håbløs ud - men kan PONG virkelig redde projektet... eller leverer Atari blot en gang eskapistisk blår i øjnene - lidt lige som <indsæt din foretrukne projektstyringsmodel>? Eller måske er PONGs betydning for slaget en pendant til den historie en projektleder engang fortalte mig om et enormt projekt han havde været med i i de glade .com dage - et med rigtigt mange nuller - nej enormt rigtigt mange nuller. Projektets produkt blev aldrig nogensinde forsøgt brugt, men som han sagde: Det var et skidesjovt projekt uden smalle steder, og de havde en fantastisk lanceringsfest.

De kvindelige indslag er, som det sig hør og bør i gamle Jens Lyn film, begrænset til fortvivlede udbrud som "The database is down" og følelsesladede trusler som "It's me or your computer" - naturligvis gentaget gang på gang på gang på... ;^ )

Og husk hvad end du gør: "Do NOT push the button" (den med lynet) for så slipper du jura-uhyret løs - I dare you! Men så skal du altså også læse det, indtil du forstår, hvad du egentlig forpligter dig til.

Lykkes det dig at undslippe Yesterworld, får du til sidst en ganske betimelig sentens med fra software-nirvana: "Nostalgia is for television not technology"... og det kan man jo så tænke lidt over, mens man venter på, at de nye versioner af Visual Studio og SQL Server bliver releaset.

29. jul 2005 11:11 |

Microsoft har lanceret Microsoft Windows Vista Developer Center, hvor man dels kan finde links til "the bits", dels kan finde mere information om, hvilke nyheder der med hensyn til Vista-orienterede teknologier er/kommer for udviklere.

Qua min tidligere blog-post om navneændringen af Longhorn til Vista (Hasta la Vista, Longhorn!) kan det bemærkes, at der er kommet et par andre navneændringer af Microsoft-teknologier på det seneste (se tabellen nedenfor).

Det gamle kodenavnDet nye officielle navn
AvalonWindows Presentation Foundation
IndigoWindows Communication Foundation
MetroXML Paper Specification (XPS)
Least-privileged User AccessUser Account Protection
WAPWinFX Runtime Components

Jeg synes, at Vista er et ganske fint navn, der smager af lidt mere end, hvad vi har været vant til med navnene på tidligere Windows versioner (jeg havde det nu da iøvrigt også glimrende med "Longhorn"), men ganske som guidmaster er jeg en smule ked af, at Indigo og Avalon bliver afløst af henholdsvis Windows Communication Foundation og Windows Presentation Foundation (Isaac Asimov ser ikke ud til at have levet helt forgæves ;^) - så kan det da stort set ikke blive kedeligere. Mon ikke det ender med, at vi får vores dagligdag beriget med to nye tre-bogstavs akronymer (WCF og WPF) - eller måske ender vi bare med at kalde det presentation og communication api'erne. Til gengæld siger de nye navne da trods alt mere om, hvad teknologierne egentlig går ud på, end de gamle gjorde. Endelig er "User Account Protection" måske ikke i sig selv det mest sexede navn, men jeg synes da i det mindste, at det er lidt mere mundret end "Least-privileged User Access".

28. jul 2005 14:18 |

Windows Vista logo

Efter at Microsoft har offentliggjort, at Longhorn klienten kommer til at hedde Windows Vista, har der været mange mere eller mindre alvorlige gisninger om, hvad det mon betyder.

veggiedude mener, at det er et akronym for de fem største problemer i Windows: 1) Viruses 2) Infections 3) Spyware 4) Trojans 5) Adware.

Wikipedia, som iøvrigt har en udmærket oversigtsside over Windows Vista, har til gengæld følgende forklaringer af ordet:

  • Vista means "the visual percept of a region", with these synonyms: aspect, panorama, prospect, scene and view. Translated from Spanish and Italian, vista means: sight, vision, ability to see; look, glimpse; spectacle; viewfinder; range of view; point of view.
  • In Latvian, however, vista means 'hen' (grown-up female of a bird, [2]) and 'chicken' (as in food), and may also connote something or someone not particularly agile or clever.
  • In Brazilian Portuguese, vista means 'pay with money'. [3]

En del af Microsofts kunder synes sikkert, at ovenstående portugiske forklaring er den mest rammende...  ;^ )

Hvis man checker Dictionary.com, kan man se indtil flere forskellige forklaringer på ordet Vista. Den jeg tror er tættest på, det Microsoft har tænkt, er nok: "A distant view or prospect, especially one seen through an opening, as between rows of buildings or trees.". Denne forklaring ligger også ret tæt på den første af Wikipedias forklaringer. Den åbning der tales om kunne måske være Windows - men hvad der så ligger i ordet "distant", kan man jo kun gisne om - jeg håber da ikke, at det har noget med releasedatoen at gøre ;^ )

The Inquirer har en historie (What does Microsoft's Vista mean?) om, at Vista på Sanskrit kan betyde ekskrementer. Et indisk email-bekendtskab har dog forklaret (han tog forbehold for hans begrænsede kendskab til Sanskrit), at der formentlig er tale om ordet "Vistha", mens "Vista" i stedet betyder "vægt i guld" - et sprog, hvor to sådanne ord ligger så tæt på hinanden, må da give basis for nogle ret grimme misforståelser  ;^)

Der har været nogle røster fremme om, at Microsoft har valgt et (for) poppet navn - at Microsoft i stedet skulle holde sig til noget i stil med "Windows 2006 Client" eller så. Personligt synes jeg, at Vista er et udmærket navn - man skal også bemærke, at Vista kun er navnet på netop klient-versionen - server-versionen ender jo nok med et mere traditionelt navn.

På Microsoft siden Media Alert: Microsoft Unveils Official Name for “Longhorn” and Sets Date for First Beta Targeted at Developers and IT Professionals ses en Microsoft ansat ved navn Don Lionetti, der angiveligt er i gang med at prøve Longhorn Vista - men der er dukket et andet billede op, der minder meget om det dette. Historien melder ikke noget om, hvilket billede der er originalen, og hvilket der er fake ;^ )  Se eventuelt mere om dette vigtige emne - og sammenlign selv billederne på Billede af en tidlig version af Windows Vista i action - eller not!.

22. jul 2005 15:39 |

Så fik Microsofts næste operativsystem et rigtigt navn til afløsning for kodenavnet "Longhorn". Nu skal vi så til at vænne os til i stedet at kalde det "Vista"... det kommer erfaringsmæssigt jo nok til at tage lidt tid.

Ikke fordi der er så meget reelt at se; men hvis man vil, kan man se en ret forvirret og lettere støjende video, ved at slå vejen ind omkring Microsoft Unveils Official Name for “Longhorn” and Sets Date for First Beta Targeted at Developers and IT Professionals.

Jeg håber da iøvrigt, at vi kan få lige så mange til at applaudere, når vi offentliggør navnene på vores kommende produkter ;^ )

26. jun 2005 12:46 |

 Puffy - http://www.openbsd.org

Jeg har ikke selv noget detaljeret kendskab til hverken Linux eller BSD, men det ser ud til, at der ikke bare raser en OS-krig mellem Linux og Windows men også mellem netop Linux og BSD - ihvertfald hvis man skal dømme efter følgende artikel på Forbes: Is Linux For Losers?. De Raadt, som er med til at lave OpenBSD, kommer i artiklen med en række ret underholdende udsagn om Linux så som:

  • "It's terrible," De Raadt says. "Everyone is using it, and they don't realize how bad it is. And the Linux people will just stick with it and add to it rather than stepping back and saying, 'This is garbage and we should fix it.'"
  • "Linux has never been about quality. There are so many parts of the system that are just these cheap little hacks, and it happens to run."

Der kan ses endnu flere "underholdende" citater i artiklen.

På den helt lette side siges det også i artiklen (ikke et citat af De Raadt), at "In a sort of hacker equivalent of the Ford-versus-Chevy rivalry, BSD guys make fun of Linux on message boards and Web sites, the gist being that BSD guys are a lot like Linux guys, except they have kissed girls."

Man kan jo godt tvivle lidt på, at det skulle stå helt så galt til, som artiklen og dens citater giver udtryk for (specielt det med pigerne ;^) - artiklen nævner da også, at det jo kunne være, at De Raadt synes, at rønnebærrene er en anelse sure nu om stunder, eftersom Linux er en hel del mere populær end OpenBSD.

21. jun 2005 20:31 |

Jeg har lige lagt sidste hånd på en ny artikel i serien ".Henrik om .NET": Null putte. Den handler om nullable datatyper, som jeg har valgt at kalde dem på bedste nydanske manér.

Iøvrigt har vi i de sidste par måneder lagt en række faglige/tekniske artikler med fokus på Visual Studio 2005 og version 2 af .NET frameworket på vores website:

  • Refactoring
  • XMLHTTP Callback
  • Differentierede access modifiers
  • C# Delegates
  • Providermodellen i ADO.NET 2.0
  • Generics (ja ok det er lidt længere siden, at den kom på)

16. jun 2005 18:32 |

Så er der en ny udgave af VS2005 klar til download fra MSDN Subscriber Downloads: "Visual Studio 2005 CTP June 2005".

CTP'en indbefatter:

  • Visual Studio 2005 Professional Edition CTP - June 2005 (English)
  • Visual Studio 2005 Team Foundation Server CTP - June 2005 (English)
  • Visual Studio 2005 Team Suite CTP - June 2005 (English)

Det skal lige bemærkes, at denne udgave af Visual Studio ikke er kompatibel med "SQL 2005 June CTP" men med "April CTP of SQL Server 2005".

Selvom min ClickOnce-understøttelse i Visual Studio er gået ad hekkenfeldt til (burde egentlig først være sket i næste uge ;^ ), tror jeg - med mindre, der dukker (flere ;^ ) showstoppere op i min beta 2 installation - at jeg venter lidt inden jeg igen-igen reinstallerer min maskine med en ny CTP af Visual Studio - det tager trods alt nogle timer hver gang.

16. jun 2005 11:42 |

Platform SDK: Active Directory Schema - The drink (Favorite Drink) attribute type.

Hm - man burde nok have noget validering af en eller anden slags - vilkårlige strenge er lidt vel løse i det - tænk hvis man kom til at angive "koffeinfri kaffe" (ikke alene er det uhyggeligt - det er vel nærmest også en selvmodsigelse).

Tak til eCarlos for hintet og Christian Weyer for linket.

2. jun 2005 14:55 |

Hvis man efter installation af Visual Studio 2005, Beta 2, mod forventning ikke kan finde en ASP.NET konfigurationsmenu i properties for et website på IIS’en, så skyldes dette sandsynligvis en fejl i forbindelse med afinstallation af tidligere Beta udgaver.

Løsningen på problemet er:

  • Åbn regedit og find følgende nøgler:


  • Ved hver nøgle slettes alle versionsnøgler (mapper) der hedder andet end
  • Luk regedit og voila.. ..det manglende ASP.NET faneblad i properties for websites er nu hvor det skal være.

Vi gør opmærksom på, at al pilleri i registreringsdatabasen er potentielt skadeligt for Windows, og Captator fralægger sig alt ansvar for skader i forbindelse hermed.

1. jun 2005 10:56 |

Nu er statistik jo en svær ting, og jeg skal da heller ikke forsøge at gøre mig klog på, om denne statistik er korrekt eller ej, men jeg synes nu, at det er ganske interessant, at se Port80 Software's artikel om udbredelsen af application servere hos Fortune 1000 virksomheder: ASP.NET and IIS Serve More Fortune 1000 Sites than Any Other Web Server Technologies. Opgørelsen er ifølge artiklen baseret på "The Top 1000 Application Servers Survey results from May 2005 Web requests to each 2005 Fortune 1000 company’s main Web site...".

Tallene, de kommer frem til, er som følger:

Microsoft platforms (ASP.NET, ASP): 43.6%
Java platforms (J2EE, JSP, WebLogic, WebSphere, Tomcat): 12.2%
PHP: 5.2%
ColdFusion: 2.7%
Perl: 2.3%
Python (Zope): 0.1%

Application Server opgørelse fra Port80 Software

Der skelnes i tallene ikke mellem ASP og ASP.NET, men konklusionen, som kommer til udtryk i artiklens titel, går underligt nok alligevel specifikt på ASP.NET. Under allle omstændigheder er der dog tale om ret overbevisende tal, hvis man betragter al Microsoft teknologi under ét.

Hvis man gerne vil se lidt mere, om hvordan Port80 er kommet frem til tallene, kan man læse mere på Port80 Surveys the Top 1000 Corporations' Application Servers and Scripting Platforms.

Nu drejer undersøgelsen sig jo altså om de store amerikanske virksomheders brug af, hvad Port80 betegner som "application servere" (i mine øjne har Port80 nok en lidt vel bred definition af det begreb, men bevares...). Hvis man betragter virksomheders generelle brug af web servere ser tallene jo som bekendt noget anderledes ud - og absolut (stadig) til Apaches fordel. Sådanne tal kan ses hos f.eks. http://news.netcraft.com/.

3. maj 2005 10:56 |

Hvis taget kunne være amerikansk kunne du tage et kig på Housing.

Jeg hører ikke til, de der lige frem falder på halen for Google Maps og Ajax (og at Ajax tilgangsvinklen skulle være specielt ny er da noget af en overdrivelse), men som web applikation betragtet indrømmer jeg da gerne, at Google Maps er ganske niftig.

Selv om jeg har mine reservationer overfor, at Ajax og Google Maps skulle være epokegørende synes jeg til gengæld, at "Housing" - om end det er en frygtelig langsom applikation - er et rigtigt godt eksempel på, hvad Google Maps kan bruges til med den rette påhittesomhed.

16. apr 2005 11:18 |

Så ligger beta 2 af Visual Studio 2005 klar til download på MSDN Subscriber Downloads.

Kig under: Developer Tools | Visual Studio 2005 |  Visual Studio 2005 Beta 2.

Følgende stumper kan p.t. downloades:

  • Visual SourceSafe 2005 Beta 2 (English)
  • Visual Studio 2005 Standard Beta 2 (English)
  • Visual Studio 2005 Team Edition Test Load Agent Beta 2 (English)
  • Visual Studio 2005 Team Foundation Server Beta 2 (English)
  • Visual Studio 2005 Team Suite Beta 2 (English)

Men vent venligst til i morgen - eller i det mindste til i aften - så I ikke stjæler min båndbredde ;^)

10. apr 2005 13:09 |

At kalde det et egentlig API er måske lidt vel voldsomt- det jeg refererer til er egentlig blot GetSchema-metoden på System.Data.Common.DbConnection. GetSchema-metoden, der findes i tre overloads, er måske nok i dens tilgang ganske simpel, men til gengæld ganske nyttig idet den kan give metadata-informationer om en konkret datasource (for eksempel en database) - eller schema-informationer om man vil. GetSchema gør det meget simpelt at få metadata-informationer om en datasource - meget simplere end (jeg synes), at det har været tilfældet, når man fik informationer ved eksempelvis at læse dem i systemtabellerne.

Selve GetSchema-metoden virker mod forskellige former for datasources - både forskellige former for providere såvel som mod forskellige versioner af disse datasources (metoden virker eksempelvis både mod SQL Server 2005 og SQL Server 2000).

Bemærk dog at de data, som forskellige providere vælger at returnere, kan antage meget forskellige former - forskellige providere kan vælge at returnere meget forskellige kategorier af metadata - så den konkrete kode man skriver, der rent faktisk benytter meta-dataene, kan altså sagtens variere meget fra datasource til datasource, og man kan stadig sagtens have behov for at skulle læse yderligere informationer via andre mere specifikke metadata-API'er eller fra eksempelvis systemtabeller.

10. apr 2005 13:05 |

Slides fra mit indlæg om nyheder i ADO.NET 2.0 på Mød Microsoft i Århus den 5. april og i København den 7. april 2005 ligger til download på .Henrik holdt indlæg om nyheder i ADO.NET 2.0 på "Mød Microsoft" 5. og 7. april 2005.

2. apr 2005 04:10 |

Gårsdagens alvorlige bug ser ud til alligevel ikke at få den store indflydelse på lanceringen af beta 2 af Visual Studio 2005. Vores artikel der beskrev fejlen, er derfor blevet opdateret med de seneste informationer: Alvorlig bug udskyder beta 2 af VS2005.

1. apr 2005 00:21 |

Det er lige blevet offentliggjort, at fundet af en alvorlig bug i Visual Studio 2005s brug af clipboardet har medført at beta2 er blevet udskudt på ubestemt tid.

Se flere detaljer omkring fejlen (blandt andet hvordan den reproduceres) på Alvorlig bug udskyder beta 2 af VS2005.

25. mar 2005 18:05 |

Jeg har lige lavet en ny side med, hvad jeg har kaldt "Essentielle Microsoft downloads". Den vil fremover blive holdt opdateret med de vigtigste nye downloads, der kommer fra Microsoft, sådan at siden til stadighed indeholder links til de tools, SDKer, service packs og andet software af interesse, man i praksis får brug for at downloade fra Microsoft. I termen vigtigste ligger, at vi (Captator) foretager en kvalitativ og subjektiv vurdering af, hvad der skal med på listen. I begyndelsen vil listen sikkert ikke være helt så komplet, som man kunne ønske sig - men det skulle meget gerne rette sig op hen af vejen.

Hvis der er nogle essentielle downloads, som du mener, at vi har overset, vil vi sætte stor pris på, hvis du vil gøre os opmærksom på det: Send mig blot en mail der om: lykke@captator.dk.

Essentielle Microsoft downloads

15. mar 2005 13:07 |

At der bliver lavet latrinær kode kommer næppe som en stor overraskelse - ej heller at det kan være under bæltestedet, men hvad denne lille video handler om er ikke nødvendigvis helt indlysende.

Se her hvad der sker, når en af mine RD-kolleger Scott Hanselman og Rory Blyth mødes på toilettet.

6. mar 2005 12:45 |

Jeg har netop modtaget nedenstående mail. Den ser jo umiddelbart ud, som om den kommer fra Microsoft - men det har jeg en lumsk anelse om, at den rent faktisk ikke gør ;^ )

Det undrer mig dog noget, at afsenderen er "MS Corporation Public Services [tdjxpj@bulletin.net]" - det virker da ikke særligt gennemført...

Mail der ser ud som om den kommer fra Microsoft

2. mar 2005 12:45 |

I forbindelse med vores internationaliseringstool til .NET er vi i øjeblikket i gang med at lave parsere til VB.NET og C#. Dette projekt har vi (naturligvis ;^ ) besluttet os, at lave i Visual Studio 2005. Det var i den forbindelse, vi fandt ud af, at der må være indbygget noget, man næsten kun kan betegne som "reverse engineering" i Visual Studio 2005...

Under opbygningen af et interface i et Visitor Pattern manglede der lidt luft mellem linierne:

 Screenshot af ganske almindelig kodefil

Man skulle dog passe på med at følge sit instinkt og taste [Enter]:

 En ny form for reverse engineering?

Og nej, det er ikke en hjemmelavet macro; og nej, det var ikke muligt at benytte denne (nyttige?) feature i andre filer.

 Mange linier bagvendt

Det kan selvfølgelig også være, at det bare er et påskeæg fra Visual Studio Teamets side ;^)

16. dec 2004 14:56 |

Jeg er netop blevet spurgt, hvor man kan downloade betaen for Visual Studio 2005.

Visual Studio 2005 betaen kan downloades fra MSDN Subscriber downloads. I samme åndedrag kan det nævnes, at Microsoft har releaset "Visual Studio 2005 Community Technology Preview" for November 2004. Bemærk at disse "Community Technology Preview"-releases ikke er stabiliseret i samme grad som egentlige beta-releases - koden er altså i endnu højere grad end alrmindelige betaer at opfatte som "as-is".

14. dec 2004 09:33 |

Hermed en lille forsinket reklame for Captators Whidbey julekalender, som kan ses på Julekalender 2004. Årets julekalender indeholder hver af decembers første 24 dage et tip eller en nyhed til .NET 2.0 eller Visual Studio 2005.

24. sep 2004 11:34 |

Nogle gange fatter jeg ikke, hvordan Google helt præcist finder frem til dens resultater. Den seneste lidt spøjse overraskelse fik jeg i forbindelse med en søgning efter Microsofts PDC 2003 website.

Du kan jo selv prøve: Google søgning efter "PDC 2003"

Det overraskende var ikke, at Google fandt den relevante side og præsenterede den som nr. 1 på listen over (cirka) 401.000 hits - det har man jo efterhånden vænnet sig til. Næh, det overraskende var, at Captator kom op som det femte site på listen!! Det femte!! Det er nok kun, fordi jeg har har et ret nært forhold til Captators website, at jeg overhovedet studsede over det; men helt ærligt er det da lidt spøjst. Jeg kan ihvertfald ikke gennemskue, hvordan vores website kan blive det femte mest relevante, hvad "PDC 2003" angår; men jeg takker da Google for tilliden ;^ )

23. sep 2004 01:52 |

For de der selv måtte være interesserede i høre lidt om, hvad det er, Anders mener om det at tilgå databaser, kan det anbefales, at se følgende meget relevante video fra Channel9. Der er lidt kommentarer i den til videoen hørende diskussion. Tak til Søren Hebsgaard fra Microsoft fordi han gjorde mig opmærksom på den.

Anders sagde iøvrigt til rundbordsamtalen i går, at Cw blot var nogle forsøg, man havde gjort med, hvordan man kunne implementere database tilgang. Det lød nærmest på ham, som om han ville understrege, at sådan kom det ikke til at se ud på sigt - men nu får vi at se, hvad der kommer til at ske...

Channel9 har iøvrigt ofte nogle ret spændende videoer - i hvertfald hvis man interesserer sig for hvad der (måske ;^) kommer til at ske i fremtiden. De er ofte af meget håndholdt natur og tit fyldt med en masse ligegyldig sniksnak (Don Box'es rundtur i Indigo teamet er et godt eksempel på nogle videoer, man faktisk ikke bliver alverden meget klogere af), men nogle gange er der altså nogle meget interessante videoer imellem.

22. sep 2004 01:52 |

Mandag den 20. september 2004 holdt Anders Hejlsberg et indlæg på Århus universitet om de nye features i C# version 2.

Ud over selve beskrivelsen af C# features havde Anders også en lille indledning, hvor han blandt fortalte meget kort om sin egen baggrund, som han opsummerede med ordene "Jeg har konkurreret med Basic de sidste 25 år - og gør det sådan set stadig."

Anders indledte beskrivelsen af de nye C# features med at konstatere, at der er ikke sket alverden med programmeringssprog i denne periode - der er ganske vist kommet objekter, men... Selvom syntaks jo nok ikke er det aller mest afgørende træk ved et programmeringssprog, kunne man måske nok være så fræk at mene, at denne oplevelse kunne hænge sammen med, at han/de har valgt et mere end 30 år gammelt programmeringssprog som udgangspunkt for den basale C#-syntaks. ;^)

Jeg har efterhånden hørt hans "C#v2" foredrag en del gange, men dels holder Anders altid nogle glimrende og spændende foredrag, dels kom han denne gang med en hel del bevæggrunde for de forskellige designvalg, der var truffet i forbindelse med udviklingen af C# - og specifikt i forbindelse med de nye features i version 2. Disse begrundelser, som det var utroligt spændende at høre om blev i høj grad initieret af et meget spørgelystent publikum. Ikke overraskende var emnerne først og fremmest generics, anonyme metoder, nullable typer og iterators, men som noget nyt i forhold til det sædvanlige foredrag brugte Anders også en del tid på, at demo'e C# editoren i Visual Studio.

Men var selve foredraget spændende, var det endnu mere spændende at være inviteret med til den efterfølgende roundtable diskussion, og det var vi tre fra Captator (Jens, Morten og undertegnede), der var så heldige at være. Diskussionerne her kom vidt omkring, men en af de efter min mening meget relevante diskussioner gik på, hvordan man får den relationelt-orienterede databaseverden til at hænge sammen med de objekt-orienterede programmeringssprog og -platforme. Så længe virksomhederne er gift med deres relationelle databaser - og det vil de helt sikkert og meget forståeligt være meget længe endnu, vil der være behov for en eller anden form for mapning mellem de to verdener. Anders mente ikke, at de nuværende O/R-mappere var specielt gode - om ikke andet fordi man stadig reelt set skal lave relationelle SQL-statements (uanset om de placeres direkte i koden eller om man lægger dem i stored procedures). Der findes naturligvis systemer, der kan generere disse SQL-statements, men sådanne systemer kan typisk ikke håndtere alle de situationer, man har brug for at kunne modelere, og så ender man tit, som hvad Anders kaldte "en blikkenslager", der skulle få de forskellige tilgangsmåder til at passe sammen.

Et forslag fra det runde bord var, at man kunne lade det konkrete objekt-orienterede programmeringssprog få en forståelse for relationelle databaser, sådan at de specifikke tabeller (Person, Firma etc), kolonner og rækker dukkede op som egentlige entiteter i programmeringssproget. Men Anders' glimrende svar på dette var, at så skulle man vel i princippet også lade programmeringssproget have forståelse for alt muligt andet. En pointe som jeg som udgangspunkt er helt enig med Anders i: Et generelt programmeringssprog som C# skal ikke have en specifik opfattelse af, hvad databaser eller andre lagringsservices er; for hvor ville det i givet fald stoppe: Så skulle C# måske også have en specifik forståelse for XML, HTML og endog kommaseparerede filer.
En helt anden sag ville det være, hvis man kunne lave en generel mapning mellem programmeringssprog og database - vel at mærke en mapning, der ikke skabte en binding mellem programmet og den konkrete lagerservice, men som samtidig var tilstrækkelig fleksibel. Anders mente godt, at det kunne lade sig gøre at lave en sådan mapning, men han var helt tydelig ikke glad for at fortælle alt for meget konkret derom - om end han da ikke helt kunne lade være med at komme med et par enkelte hints ;^) Det skal blive spændende at se, om der mon på et tidspunkt dukker noget op på den front, med hans signatur på.

En anden til ovenstående relateret idé, der har været fremme en del gange er at lade SQL syntaksen blive en integreret del af almindelige (objekt-orienterede) programmeringssprog, sådan at man ikke blot betragter SQL-kode som strenge i ens almindelige kode. Jeg er ret sikker på, at Anders også ville være lidet begejstret for denne ide. For udover at kombinationen af f.eks. C# og SQL nok hurtigt rent stilistisk ville blive et utroligt grimt sprog, så ville man igen få problemstillingen: Hvorfor skulle man lige vælge at integrere SQL - hvad med alle de andre måder at tilgå data på - det være sig relationelle databaser, objekt-orienterede databaser, XML filer eller noget helt andet. Nej, det der er brug for, er en mere generel tilgangsvinkel. Og hvis det ikke er muligt, så vil vi sikkert mange år endnu lege blikkenslagere, når vi tager fat i vores relationelle databaser.

28. aug 2004 01:52 |

Microsofts næste operativsystem (som går under kodenavnet LongHorn) består af en række forskellige services (samlet kendt som WinFX), hvoraf de mest omtalte er WinFS, Avalon og Indigo.

Der har indtil nu været et noget usikkert budskab omkring, hvilke services og features der vil blive tilgængelige på hvilke operativsystemer, men det har bl.a. været nævnt, at Indigo ikke ville blive begrænset til Longhorn. Microsoft vil i dag offentliggøre, at planen nu er at Avalon og Indigo også ud over Longhorn vil blive tilgængeligt på både Windows XP og Windows 2003 Server.

Denne beslutning er fra både udvikleres og brugeres synspunkt en rigtig god nyhed, der gør at de fremtidige applikationer, der udnytter disse avancerede services vil få en hurtigere og bredere udbredelse end tilfældet ville være, hvis Avalon og Indigo var begrænsede til Longhorn.

Til gengæld har Microsoft besluttet, at releasen af Longhorn ikke kommer til vente på færdiggørelsen af WinFS – eller udtrykt på en anden måde: WinFS når ikke at komme med i den første Longhorn release (som bliver Longhorn-klienten). Det er jo desværre i sig selv ikke en specielt god nyhed. Det kan iøvrigt forventes, at ved lanceringen af Longhorn er WinFS i beta-stadiet.

Longhorn er nu planlagt til at komme i 2006 – et årstal der også tidligere har været nævnt i forbindelse med Longhorn, men på den anden side har jeg lige som sikkert mange andre haft en ide om, at den endelige dato sagtens kunne ende med at ligge engang i 2007. Og set fra det synspunkt er det absolut positivt, at planen nu er, at vi får i hvertfald en del af kommende features uden at skulle vente på at de alle sammen bliver færdige – og før end jeg egentlig havde forventet.

Om man samlet set betragter de nye planer som en positiv eller en negativ nyhed afhænger jo nok af, hvilke Longhorn services og features man har mest fokus på. Personligt synes jeg, at det er lidt svært at vurdere de nye planer, så længe man ikke har set præcis, hvilke features der kommer med under hvert af de tre hovedområder, men på et overordnet plan tror jeg, at det vil have en positiv effekt, at vi får en hurtigere lancering af en række vigtige services – også selv om det måske betyder, at vi ikke får hele visionen med i første huk.

2. aug 2004 12:48 |

Jeg får regelmæssigt spørgsmål om Microsoft næsten sagnomspundne ”Project Green” (Microsofts nye .NET baserede økonomisystem), men desværre har det ind i mellem været ret sparsommeligt med konkrete informationer. Men jeg har nu nogle få konkrete informationer, som jeg kan videregive.

Efter at ObjectSpaces led en forholdsvis stille død, har Microsoft defineret et fælles Object Persistance API (kunne efter Microsofts beskrivelser passende betegnes som et sammenskudsgilde ;^ ) baseret på bl.a. ObjectSpaces og WinFS. Dette data access API vil komme i det som Microsoft betegner som ”Longhorn timeframe” – det vil sige cirka samtidigt med Longhorn (næste version af Micrsofts Windows system), men det vil også understøtte Windows 2003 og Yukon (eller Microsoft SQL Server 2005 om man vil). MBF (Microsoft Business Framework), som baserer sig på det nye data acess API, har den samme tidshorisont og vil komme som en del af VS.Next.Next (den version af Visual Studio der kommer sammen med Longhorn, og som går under det lidt mere officielle kodenavn Orcas). Project Green (som baserer sig på MBF) vil formentlig dukke op 6-12 måneder efter Longhorn.

Det er intentionelt, at jeg ikke kalder APIet et database API, men i stedet et data access API. APIet understøtter via en provider model ganske vist Yukon, men er ikke rettet specielt mod database tilgang, idet også det kommende WinFS kan benyttes som datalager.

Disse oplysninger (specielt tidsangivelserne) skal nok nok tages med et sædvanligt gran salt – det er stadig ret tidligt i udviklingsforløbet, og mange ting kan stadig nå at ændre sig markant, inden vi ser de færdige produkter.

14. jul 2004 14:45 |

Som mange .NET udviklere sikkert også har erfaret, kræver det en hel del diciplin at benytte Visual SourceSafe - specielt sammenspillet med Visual Studio kan unægteligt kræve sin koder. Skal man undgå at blive en traumatisk og samspilsramt .NET udvikler kræver det, at man vedvarende efterlever en række spilleregler, og som det er også tilfældet med alt andet indenfor software- udvikling kommer der hele tiden nye regler til. Så sent som i går fik vi føjet endnu en regel til listen over SourceSafe-relaterede overlevelsesregler, om end det skyldtes nogle ret utraditionelle årsager: Mine sko og Captators gulvtæppe. Efter at disse havde været i nærkontakt gennem længere tid, skulle jeg skifte et lydkabel og fik som en prompte reaktion på berøringen af maskinens kabinet et ordentligt rap ikke bare over fingrene, men hele vejen op gennem højre arm. Mens jeg gispende og rystende mumlede noget om, at der var det lige ved, at jeg havde kodet min sidste linje, valgte en af mine kolleger (tak Jens) med et morbidt blik i øjnene, at føje endnu en regel til vores liste over Visual SourceSafe-relaterede best-practices: "Husk at checke ind inden du checker ud!". Så selvom jeg ikke fik alverden medmenneskelig sympati fra mine kolleger, så fik jeg da i det mindste endnu et eksempel på, at man i eXtreme Programming-baserede projekter til stadighed tager kodens tilstand alvorligt...

24. maj 2004 09:30 |

Microsoft har netop på TechEd 2004 lanceret WSE 2.0 . Vi er pt. i gang med udviklingen af et forholdsvidt komplekst system, hvor vi aktuelt benyttter WSE 2.0 Technology Preview versionen, og selvom preview versionen virker ganske udemærket, er det da på alle måder glimrende, at Microsoft nu er kommet med en endelig version. Vi benytter først og fremmest WS-Security (til bl.a. authentication og kryptering) samt WS-Attachment (til download af nye versioner af applikationer, komponenter og datafiler).

WSE 2.0 kan downloades fra Web Services Enhancements (WSE) 2.0 for Microsoft .NET

23. maj 2004 09:30 |

Så er TechEd 2004 startet. Denne gang er San Diego valgt som udgangspunkt for, hvad der bliver årets hovedkonference fra Microsofts side af. Konferencen er da også fuldstændigt udsolgt med mere end 11.000 deltagere.

Sidst jeg var med til TechEd var helt tilbage i 1997. Dengang fandt jeg, at TechEd var alt for meget rettet mod drift af IT-systemer og alt for lidt rettet mod min hovedinteresse: softwareudvikling. Så i de mellemliggende år har jeg foretrukket at deltage på bl.a. PDC, som specielt i sommeren 2000 var en helt fantastisk oplevelse (PDC 2000 var konferencen, hvor Microsoft for alvor offentliggjorde .NET platformen i dets fulde omfang; indtil da var det kun overfladiske informationer, der var kommet frem om .NET). PDC er desuden en konference, der retter sig mod fremtidige teknologier og produkter. Da nogle af de berørte teknologier har en forholdsvis lang tidshorisont kan man faktisk ikke forvente, at alt, hvad der bliver vist frem på PDC-konferencerne, bliver til endelige produkter. Eftersom det fremadrettede fokus for PDC konferencerne passer ganske udmærket ind i mine interesser og i mit daglige arbejde, kan det så måske godt undre, at jeg i år deltager på TechEd. Det er der to primære grunde til: Dels bliver der (desværre) ikke afholdt en PDC konference hvert år. Grunden hertil er den simple, at det ikke er hvert år, der er tilstrækkeligt med nye (læs: kommende/fremtidige) teknologier og produkter til, at det berettiger til afholdelse af en PDC konference. Dels har TechEd ændret sig en del, siden jeg sidst deltog tilbage i 1997: I dag er der et langt større udvikler fokus end tidligere, og der deltager nu lige mange udviklere (38%) og driftsfolk (37%).
Selvom jeg normalt absolut foretrækker de fremadrettede emner, kan manglen på de helt store .NET framework og Visual Studio nyheder måske lige frem vise sig at være en fordel for mig, idet jeg dermed har chancen for at få set på nogle af de andre Microsoft produkter, samt måske høre lidt om de mere eksotiske hjørner af .NET platformen - hjørner som jeg her og nu ikke nødvendigvis har et reelt og praktisk anvendeligt behov for viden om, men som måske alligevel kan vise sig at være nice-to-know i forbindelse med kunderådgivning, undervisning og lign.

I dag søndag deltog jeg i et lukket strategimøde for Regional Directors. På sådanne strategidage diskuterer vi først og fremmest Microsofts fremtidige strategier i forbindelse med formidling af indholdet af kommende lanceringer og produktfrigivelser. Selvom sådanne strategidage ikke først og fremmest har et teknisk tilsnit, er det alligevel yderst spændende at diskutere Microsofts nye tiltag overfor udviklere, med de selv samme folk hos Microsoft, som har dette arbejde som deres ansvarsområde - formidling, undervisning, mentoring og rådgivning er trods alt en væsentlig del af det, jeg foretager mig til daglig, og tidlig viden om hvilken retning Microsofts produkter og teknologier bevæger sig i, og hvad der er Microsofts kommende fokusområder er af uvuderlig betydning for mig i mit daglige arbejde. Denne gang var strategidagen iøvrigt specielt spændende, fordi der deltog flere af de for udviklere relevante produktgrupper – jeg glæder mig utroligt meget til i den kommende tid at få endnu tættere relationer til disse produktgrupper omkring fastlæggelse af features og lign.

Dagen startede iøvrigt med en lidt pudsig oplevelse. Da jeg skulle checke ind på TechEd konferencen, stod jeg ganske vist på deltagerlisten, men man kunne ikke umiddelbart finde mit badge (et lille plastikkort med mit person- og firmanavn). En sådan situation var Microsoft naturligvis ikke uforberedt på, og man printede blot et nyt kort ud - eller rettere sagt så forsøgte man uden held at udprinte kortet hele tre gange. Til sidst stod der tre ansatte (samt undertegnede) og undrede sig over, hvad der var egentligt skete med de udskrevne kort, men en tilkaldt specialist kom til sidst op med en teori: Måske havde det noget med et specialtegn i mit navn at gøre. Da deltagerne selv angiver teksten, der bliver trykt på plastickortet, havde jeg nemlig med sædvanlig frækhed (læs: hybris) skrevet ".Henrik Lykke Nielsen, Captator". Mens Microsoft personalet helt sikkert undrede sig over, hvem der dog finder på at give deres børn et navn med specialkarakterer (jeg opgav ret hurtigt at forklare det administrative personale, hvad punktummet betød), undrer jeg mig til gengæld stadig over, hvem der dog nu til dags kan finde på at lave software, der - om jeg så må sige - ikke er dot-kompatibelt. Hvad der var sket, hvis jeg havde føjet "de danske .NET eksperter" til fimanavnet, tør jeg slet ikke tænke på...

7. apr 2004 09:30 |

I kan downloade slides samt source koden til IssueVision demoapplikationen fra mine og Jørgen Thymes indlæg om udvikling af smart client applikationer på "Mød Microsoft" i Århus den 29. marts og i København den 30. marts 2004. Koden er tilgængelig i to versioner - dels VB.NET og C#.NET.

Downloaden kan ske fra artiklen Captators .Henrik holdt indlæg om "smart clients" på Mød Microsoft 29. og 30. marts 2004.

7. apr 2004 09:30 |

I kan downloade slides samt source koden til IssueVision demoapplikationen fra mine og Jørgen Thymes indlæg om udvikling af smart client applikationer på "Mød Microsoft" i Århus den 29. marts og i København den 30. marts 2004. Koden er tilgængelig i to versioner - dels VB.NET og C#.NET.

Downloaden kan ske fra artiklen Captators .Henrik holdt indlæg om "smart clients" på Mød Microsoft 29. og 30. marts 2004.

2. apr 2004 09:30 |

Google lancerede i går nogle særdeles spændende jobmuligheder i forbindelse med deres Google Copernicus Hosting Environment and Experiment in Search Engineering projekt.

Det er dog, som det fremgår af det følgende citat fra jobbeskrivelsen, værd at bemærke, at selv om Google mener, at de er en fordomsfri arbejdsgiver, der giver lige muligheder til alle, stilles der dog underligt nokvisse ret skrappe krav til ansøgerens baggrund: "Applicants must be at least 18 years of age by April 1, 2007 and have proof of earth residency. Google is an equal opportunity employer.". Men som guidmaster, og jeg blev enige om, skulle alderen ikke være nogen hindring for mig i forhold til at ansøge - og resten kan jeg vel snakke mig fra...

21. mar 2004 09:30 |

Jeg fik for et par dage siden spørgsmålet om, hvordan man modificerer den (HTML-) kode, som sendes ud til browseren fra en ASP.NET side. Én mulighed er at overskrive sidens Render-metode:

  protected override void Render(System.Web.UI.HtmlTextWriter writer)

      System.Text.StringBuilder builder = new System.Text.StringBuilder();
      System.IO.StringWriter theStringWriter = new System.IO.StringWriter(builder);
      System.Web.UI.HtmlTextWriter theHtmlWriter = new System.Web.UI.HtmlTextWriter.HtmlTextWriter(theStringWriter);


      string html = builder.ToString();

      //Her kan man så lave sine erstatninger...
     //Som for eksempel at erstatte karakter-sekvenser i html-variablen



Man skal dog nok være opmærksom på, at den ret simple implementation, som ses ovenfor, ikke er den optimale set ud fra et performance-mæssigt synspunkt, idet hele siden opsamles i streng-variablen "html", hvilket mindsker muligheden for en effektiv streaming af store sider. Det vil dog ikke, hvis man ønsker det, være det store problem, at lave alternative implementationer der håndterer denne problemstilling. Til gengæld er nærværende implementation jo unægeligt dejlig simpel, hvilket da også har sine fordele ;^ )

7. mar 2004 09:30 |

I forbindelse med Captators udvikling af et større system bestående af dels en web-portal dels et par tilhørende Windows-applikationer har vores softwareudviklere utålmodigt rykket mig for en beslutning om, hvilken grid vi skal benytte os af i projektet. Den med Visual Studio .NET følgende DataGrid anser vi for at være en halvdårlig demokontrol, så den er forlængst blevet sorteret fra.

Jeg har nu langt om længe truffet beslutning om, at den grid, vi benytter os af (ihvertfald indtil videre), er FlexGrid fra ComponentOne. Jeg har tidligere (tilbage i COM verdenen) haft særdeles gode erfaringer med FlexGrid, og jeg håber nu inderligt, at disse erfaringer viser sig også, at kunne overføres på deres .NET version.
Det er et væsentligt grundlag for beslutningen, at FlexGrid fungerer ganske glimrende i unbound mode. Vi arbejder faktisk ikke ret meget med databinding i den kode, vi typisk laver, da vi godt kan lide at have fuldstændig styr på implementationen af den ønskede funktionalitet.

Hvis jeg skal være helt ærlig var det nu heller ikke en helt uvæsentlig grund til mit valg, at FlexGrid har en ret billig licensmodel: Den er nemlig gratis!

Hvordan får man så fat i denne gratis version af FlexGrid?

  • Gå til http://msdn.microsoft.com/vbasic/vbrkit/default.aspx
  • Vælg "Download: Download the free Visual Basic .NET Resource Kit."
  • Bestil en licens nøgle ved at vælge:
    License key: If you already have the Visual Basic .NET Resource Kit CD, sign up to receive your ComponentOne Studio Enterprise license key e-mail: Outside the United States
  • Pak Visual Basic .NET Resource Kit'et ud og installer det.
  • Kør punktet "Visual Basic .NET Resource Kit" | "Visual Basic .NET Resource Kit" i start menuen.
  • Vælg Enter.
  • Installer ComponentOne Studio Enterprise (i ikon-menuen øverst).
  • Inde i Visual Studio tilføjes C1FlexGrid til toolboxen ved f.eks. at højreklikke i toolboxen og efterfølgende vælge Add/Remove Items.

Så burde FlexGrid være klar til brug... god fornøjelse...!

En sidste advarsel: Jeg (og andre) har haft særdeles dårlige erfaringer med andre af ComponentOnes kontroller. Så træf beslutning om brug af den enkelte kontrol baseret på nøje overvejelser, afprøvninger - samt naturligvis en grundig gennemlæsning af den tilhørende licens.

6. nov 2003 09:30 |

Microsoft Enterprise Instrumentation Framework (EIF) som jeg nævnte tidligere i Min session om "exception håndtering" på "Mød Microsoft" er ikke længere kun en MSDN download. Den kan nu også downloades fra siden Microsoft Enterprise Instrumentation Framework. Tak til guidmaster for at bemærke dette.

29. okt 2003 23:32 |

Hoved-keynoten mandag formiddag satte temaet for PDC 2003. Egentlig bestod keynoten af to mere eller mindre selvstændige keynotes. Den første (del) stod Bill Gates for. Hans budskaber indeholdt ikke de store overraskelser: Det drejede sig i høj grad om Microsofts ”commitment” på sikkerhedsområdet: At Microsoft vil gøre deres yderste for at skabe en sikker og stabil platform for udvikling og afvikling af applikationer. At dette budskab var en væsentlig del af Bills keynote hænger naturligvis sammen med, at Microsoft rent faktisk bruger enorme ressourcer på teknisk set at højne sikkerhed og stabilitet, men også at det kræver lang tid og store ressourcer at kommunikere dette sikkerhedsbudskab ud til Microsofts brugere, kunder og partnere. Et eksempel som han gav på dette var, at den optionelle fejl-rapportering man kan foretage, når en applikation går ned, havde vist, at specielt ”kreative” drivere til video-kort var skyld i en uforholdsmæssig stor andel af programmers nedbrud. Microsoft har derfor indledt et tættere samarbejde med leverandører af grafik-kort med det formål at skabe mere stabile video-drivere. Det er i sig selv naturligvis meget positivt, hvis et tættere samarbejde med tredjeparts-leverandører kan skabe mere stabile systemer, men det understreger også at det kræver nye og øgede initiativer, hvis målet om stabile applikationer og services skal nås – det er ganske svært at garantere, at alle applikationer og komponenter i et åbent og fleksibelt system som Windows til enhver tid opfører sig korrekt, men det er helt sikkert positivt, at Microsoft har fokus på det.

Udover at understrege Microsofts sikkerhedsfokus satte Bill Gates også udviklingen af softwareplatforme ind i et historisk perspektiv – denne historiske perspektivering skete bl.a. ved hjælp af en fabelagtig morsom kortfilm – med en række af ”interviews” af kendte personer – bl.a. Altair-entusiasten Bill Gates og internet-specialisten Bill Clinton.

Indholdet af Bill Gates keynote var forventeligt, betimeligt og underholdende. En solid præstation - men uden de store nyheder og overraskelser.

29. okt 2003 00:44 |

Anden del af mandagens hoved-keynote var ikke helt så underholdende, som de indlagte videoer i Bill Gates keynote. Til gengæld var den fyldt med spændende og imponerende teknisk indhold. Temaet var næste version af Windows operativsystemet (med kodenavnet Longhorn). Longhorn er mange forskellige ting, men de tre største nyheder er nok Avalon (basis for udviklingen af brugergrænseflader i Longhorn), WinFS (”filsystemet” i Longhorn) og Indigo (basis for udviklingen af service orienterede systemer i Longhorn).

Havde jeg været mere forberedt, havde jeg sikkert taget keynoten mere tilbagelænet. Men jeg havde som tidligere sagt kun konceptuel viden om Longhorn inden ankomsten til PDC. Og min reaktion blev derefter. Den kan nærmest kun beskrives med ét ord: Waaauuuv! Og det underlige er, at jeg faktisk godt vidste, hvilke områder det var Microsoft arbejdede med – jeg havde blot ikke helt forventet det imponerende resultat, jeg fik at se.

  • Avalon tilbyder en - især grafisk set - langt mere righoldig og dynamisk Windows-brugergrænseflademodel end tidligere set - byggende på eksempelvis nye brugergrænseflade-komponenter, animerede brugergrænseflader og en mere uniform tilgang til almindelige brugergrænseflade-elementer og multimedier. På det programmeringsmæssige plan har Microsoft indført mulighed for deklarativ definition af brugergrænseflade elementer v.h.a. de såkaldte XAML-filer. XAML-formattet er et XML-baseret format, der minder om det, vi kender fra aspx-filer. Det er i øvrigt ret spøjst, at den deklarative definition af Windows brugergrænseflader, som vi kendte fra VB6s frm-filer, nu atter i en moderniseret version vender tilbage i forbindelse med .NET udvikling til Longhorn.

  • Selve brugergrænsefladen i Longhorn (kaldet Aero) har fået et markant løft. Et løft der af nogen sikkert vil blive opfattet på linje med skiftet fra Windows 3.11 til Windows 95. En af de nye features er transparente vinduer - hvor man kan se de vinduer, der ligger under det aktive vindue. Om det rent faktisk er en brugsmæssig fordel at kunne se en information, i de underliggende vinduer eller om det bare øger forvirringen, må praktisk brug over en længere tidsperiode vise, men det har overraskende nok under alle omstændigheder en ganske imponerende effekt og giver et nyt ”look and feel” i forhold til de eksisterende Windows versioner. Animeringer af vinduer er en anden imponerende feature – et eksempel er vinduer, der blafrer som flag, når man bevæger dem. Nyttigt? Tjah... Imponerende? Helt bestemt! En vigtig pointe er i denne sammenhæng, at sådanne grafiske effekter og animationer (som i øvrigt er vektor-baserede) ikke belaster CPU’en særligt meget, da de i størst mulig grad håndteres af grafik processoren.

  • WinFS er set udefra det nye filsystem i Longhorn (NTFS er dog stadig det underliggende basis-filsystem) - et filsystem hvor man kan tilknytte ekstra metadata til filer. Metadata der dels beskriver selve filen, dels beskriver relationer mellem filer og andre informationsenheder. Det afgørende skal ikke længere være, hvilken folder en given fil er placeret i, men i stedet hvilken type dataene er af, samt hvilke metadata der er tilknyttet dataene. Målsætningen fra Microsofts side er, at det skal være langt lettere at katalogisere, navigere og fremfinde informationer – også i de kommende år hvor informationsmængden forventes at eksplodere i forhold til de relativt små (sic!) informationsmængder, vi arbejder med i dag.

  • Indigo er et API til brug ved udvikling af distribuerede, serviceorienterede arkitekturer. Et af hovedmålene for Indigo er at skabe en mere uniform tilgang til forskellige teknologier, der benyttes i forbindelse med udviklingen af distribuerede arkitekturer. Indigo er en fælles SOAP-baseret programmerings- og kommunikationsmodel der sammensmelter ASMX-teknologi (traditionelle XML web services), Enterprise Services (.NETs COM+ programmeringsmodel) samt .NET remoting.

Personligt havde jeg - som tidligere nævnt - på forhånd selv opfattet PDC 2003 som en PDC med fokus på først og fremmest Whidbey og Yukon. Men en meget stor del af sessionerne på PDC drejede sig rent faktisk også om Longhorn (hovedsagligt Avalon, WinFS og Indigo). Og Microsoft betegnede overraskende nok selv PDC 2003 som ”the Longhorn” PDC og ikke som ”the Whidbey and Yukon PDC”. Da der stadig kommer til at gå to til tre år (mindst ;^), før vi ser den endelige release af Longhorn, kan man måske godt i sit stille sind fundere lidt over, hvorfor Microsoft allerede nu går så meget i detaljer om udvikling af programmer til Longhorn. Selv om vi fik udleveret DVD’er med Longhorn, Whidbey og Yukon tror jeg trods alt, at det for nuværende nok vil være forholdsvist få udviklere, der for alvor vil gå i gang med Longhorn-baseret udvikling. Muligvis handler det om, at Microsoft vil give mange - og meget forskellige - udviklere god tid til at eksperimentere med de nye features i Longhorn. Man er eksempelvis helt sikkert i stand til at lave flotte og imponerende ting med Avalon – men hvilke effekter der rent faktisk viser sig at være nyttige i rigtige applikationer, der skrives af rigtige programmører til rigtige brugere må tiden vise. Og jo før udviklere begynder at tænke Longhorn-tanker jo større er muligheden nok også for, at der ved lanceringen af Longhorn forefindes nogle overbevisende applikationer med nyttige og brugbare anvendelser af de nye teknologier.

28. okt 2003 20:41 |

Søndag er ikke en egentlig del af selve PDC hovedkonferencen - søndag er en dag helliget forskellige heldags-tutorials eller pre-konferencer, om man vil - alle fokuseret på den eksisterende version af .NET. Da jeg i sin tid tilmeldte mig PDC, var der ikke umiddelbart nogen af pre-konferencerne, der fristede mig. Emnerne virkede som værende af meget introducerende karakter, hvilket naturligvis også er udmærket, men nok ikke lige det, jeg forestillede mig, skulle give det største udbytte. Men efterfølgende dukkede der endnu en tutorial op på programmet: Jeffrey Richters ”CLR Internals: Writing Great Managed Components and Applications”. Undertitlen var måske nok lidt misvisende - emnet var ikke (komponentbaseret-) udvikling som sådan, men mere specifikt tekniske aspekter af .NETs komponentmodel - et emne jeg ganske vist er meget interesseret i, men som jeg derfor også i de sidste par år har arbejdet meget med og undervist i. Jeg tilmeldte mig dog alligevel, da jeg synes virkelig godt om Jeffreys bog ”Applied Microsoft .NET Framework Programming” (den kan varmt anbefales!). Det viste sig da også, at deltage i hans tutorial var en beslutning, jeg absolut ikke kom til at fortryde.

Det var ganske vist ret begrænset, hvad tutorialen gav mig af egentlig ny viden – men Jeffrey, som ikke er ansat hos Microsoft, men som bliver hyret af Microsoft som konsulent i forbindelse med udviklingen af kerne-funktionerne i .NET frameworket, havde naturligvis en masse gode historier og anekdoter han kunne fortælle – hvilket han i øvrigt også gjorde i en særdeles fornøjelig og underholdende stil. Og naturligvis kunne han fortælle et væld af spændende, tekniske detaljer om, hvordan CLRen virker.

I princippet måtte han ikke fortælle om den næste version af .NET frameworket (fordi den først må beskrives fra tirsdag), men det var heldigvis et princip, han ikke helt var i stand til at overholde. En af de meget interessante nye features han nævnte var, at man i den nye kommende version af .NET frameworket kan lave assemblies, med flere sprog i samme kompilerede fil. For de, der har valgt kun at udvikle i et enkelt programmeringssprog, lyder det måske nok lettere sekterisk, men for Captator er det potentielt set en overordentlig vigtig ny facilitet. Vi udvikler nemlig lige gerne i VB og C#, og det betyder, at alt efter hvad vores kunder har foretrukket i konkrete projekter, har vi udviklet applikationer og komponenter stort set 50-50 i både VB og C#. Da vi systematisk høster generisk funktionalitet i udviklede applikationer til inklusion i vores .NET baserede Eifos framework, betyder det så også, at dele af Eifos er skrevet i VB, og at dele er skrevet i C#. Med den eksisterende version af .NET frameworket betyder det så også, at Eifos er implementeret i to assemblies – én med VB Eifos-kode og én med C# Eifos-kode. Vi kan med den eksisterende version af .NET frameworket allerede i dag lave en assembly baseret på flere forskellige programmeringssprog, men det kræver p.t., at vi laver en multi-file assembly vha. netmodules (en ikke særlig elegant løsning vi bevidst har fravalgt). I den ideelle verden ville vi foretrække kun at kunne distribuere Eifos frameworket som blot én enkelt-fils assembly, og det får vi så netop mulighed for i forbindelse med Whidbey. At vi så af helt andre grunde rent faktisk overvejer, at samle al vores generiske Eifos-kode i ét enkelt programmeringssprog er en anden sag – hvad det ender med er endnu ikke besluttet, men med Whidbey har vi fået endnu en frihedsgrad, vi kan vælge at benytte os af.

28. okt 2003 01:55 |

Så er PDC så småt ved at varme op. Alle deltagere, som jeg har snakket med indtil videre, er meget spændte på, hvad ugen vil bringe: Hvad er det Microsoft har i posen til de næste versioner af .NET frameworket, Visual Studio, SQL Server og Windows? Jeg er absolut ikke selv mindre spændt. Men min spænding er nok af en noget andet form end de fleste andre deltageres. Eftersom jeg dels har været i Seattle som reviewer af næste version af .NET frameworket (kendt under kodenavnet Whidbey), dels er alfa/beta tester på både .NET frameworket og SQL Server (med kodenavnet Yukon), er der nok ikke så store overraskelser i vente for mig mht. disse produkter. Men selv om min begejstring nok ikke i første omgang kommer til at gå på, at jeg kommer til at høre om en for mig masse nye og ukendte features i frameworket, er jeg sikker på, at jeg nok skal blive meget begejstret alligevel. Det har igennem de seneste måneder været svært ikke at måtte fortælle om de nye features, men det er jo vilkårene, når man er reviewer og betatester. Afholdelsen af PDC i denne uge gør, at jeg nu på linje med de andre, der har været med i beta-processen, må begynde at fortælle om de nye features i artikler, foredrag og kurser. Der er stadig nogle enkelte ting, som vi skal holde for os selv, men langt størstedelen af den nye software, der er på vej, er efter PDC at opfatte som helt offentlig viden, som må deles med andre – så jeg har altså mine helt egne grunde til at glæde mig til ugens program!

Nu skal det på ingen måde forståes sådan, at jeg mener at have komplet check på alle de nye features i de nævnte produkter – det er i sandhed langt fra tilfældet. Der er kommet så mange nye features og sket så mange fundamentale ændringer, at det kommer til at tage meget lang tid, før man får et nogenlunde overblik over bare de vigtigste. Det gælder ikke mindst for næste version af Windows operativsystemet (kendt under kodenavnet Longhorn), som jeg endnu kun kender på et overordnet niveau. Af de nye produkter er det dog også det, der har den længste tidshorisont – Whidbey og Yukon er til gengæld noget tættere på at blive en realitet - en realitet som man så småt kan begynde at forholde sig til i praksis. Disse to produkter - der vil blive lanceret i samme "timeframe" – vil være færdige om ca. et års tid (med al den usikkerhed en sådan angivelse indebærer).

Man kan godt mærke at .NET er blevet en udbredt og vigtig platform – en platform som udviklere er ægte interesseret i fremdriften af. Ved PDC i Orlando i 2000 hvor Microsoft for første gang offentligt fortalte om den dengang kommende platform, var vi en særdeles begrænset men naturligvis udsøgt håndfuld danskere, der var draget over Atlanten for selv at tage den nye, fremtidige udviklings- og afviklingsplatform i øjesyn. I år er der draget ca. 80 danskere af sted til Los Angeles; og selv om godt halvdelen er Microsoft-ansatte vidner væksten trods alt om, at .NET platformen er blevet en vigtig del af mange virksomheders centrale udviklingsstrategi. Samværet og diskussionerne med de andre deltagere på PDC er i øvrigt også noget, der står meget højt på listen over det udbytte, som jeg helt sikkert vil få med hjem fra Los Angeles.

Jeg vil i de kommende dage forsøge her i bloggen kort beskrive de vigtigste og mest interessante nyheder. I skal nok ikke forvente de helt store dybdegående afhandlinger - vi har et hårdt program hele ugen med både faglige indlæg og sociale aktiviteter - et program der ikke levner megen ekstra fritid - men også et program der gør, at jeg glæder mig - og som gør, at jeg allerede føler mig begejstret...

27. okt 2003 05:01 |

I relation til mit indlæg om "exception håndtering" på Mød Microsoft den 20. og 21. oktober har jeg fået et spørgsmål om, hvordan jeg forholder mig til følgende artikel fra "Joel on Software": "Exceptions".

Joel mener aldrig, at man bør benytte exceptions – som det fremgår af nedenstående er jeg dog ikke enig heri. Joels to hovedpointer er (med min egen frie opsummerering), at
  • Exceptions laver implicitte hop.

    Når en exception kastes sker der et hop i eksekveringen af applikationen - et hop der ikke (nødvendigvis) fremgår eksplicit af koden i en given procedure. Et eksempel på dette kunne være, at proc1 kalder proc2, som kalder proc3. Hvis der kastes en exception i proc3, som ikke fanges i proc2, vil der set fra proc2s synspunkt blive foretaget en return fra proc2 ved kald til proc3.

  • Exceptions skaber for mange returns fra en procedure.

    Hvis en exception ikke fanges i en given procedure, vil der ske en umiddelbar return fra proceduren. Det betyder, at alle eksekverede statements, der kan kaste exceptions, i princippet vil kunne opføre sig som en return fra proceduren.

Jeg er ganske enig i Joels forudsætninger for vurdering af brugen af exceptions: At eksplicit kode er godt og at man bør begrænse mængden af returns fra en given procedure, men jeg er ikke enig i, at disse pointer skal føre til, at man slet ikke benytter exceptions.

Naturligvis kunne samtlige procedurer returnere en fejlkode (eller noget bedre: et fejlobjekt). Kaldsproceduren kunne så forholde sig til denne fejlkode og tage de nødvendige aktioner og forholdsregler. Gør en udvikler sig rigtigt meget umagen, vil det være muligt at lave applikationer, der aldrig fejler (med en exception). Desværre har historien med al tydelighed vist, at det er yderst sjældent, at en udvikler vitterligt håndterer alle situationer.

Essensen ved at benytte exceptions er, at opstår der en uforudset fejl (i en procedure) er man sikret, at proceduren meddeler dette til kaldsproceduren på en måde, så det ikke kan overses. Og hovedpræmissen for brugen af exceptions er, at man langt vil foretrække, at et program går ned frem for, at der eksekveres ”uforudset” kode: Naturligvis er det træls og ærgerligt, når en applikation går ned pga. en unhandled exception – men det er trods alt for intet at regne i forhold til de problemer, man kan få, hvis applikationen dag efter dag, år efter år producerer fejlagtige resultater.

At betragte exceptions på linje med simple hop (gotos) og returns, opfatter jeg som en overforsimpling af deres funktionalitet – og en tæt på blåøjet holdning til hvor grundigt og systematisk applikationer opbygges.

At benytte exceptions er på ingen måde en undskyldning for ikke at lave pæn kode. Er det overhovedet muligt at forudsige/gætte, hvilke fejl der kan opstå i et givet kodeelement, bør man naturligvis kode defensivt og eksplicit. Men når man så rent faktisk har gjort sit yderste i forhold til at udvise rettidig omhu, er det så også betryggende at vide, at skulle der opstå en uforudset fejl, vil systemet ikke blot køre videre, som om intet var hændt, men at det i stedet vil sige fra i en sådan grad, at det ikke kan ignoreres – ved at kaste en exception.

Selvom jeg ikke er enig med Joel i, at exceptions bør undgåes, betragter jeg det dog som et problem, at man ikke kan se, hvilke exceptions der kastes fra en given assembly (samt de assemblies der kaldes fra denne). Dette problem kunne evt. afhjælpes ved hjælp af et værktøj, der foretager statisk (kode)analyse af assemblyen (og dens refererede assemblies). Udskifter man en (direkte eller indirekte) refereret assembly, skal man ganske vist foretage en ny analyse (på samme måde som man altid bør gennemteste sit program forfra), men det kunne i det mindste give en vis sikkerhed for, at man har behandlet (eller i hvert fald overvejet, hvorvidt man ønsker at behandle) alle relevante exception.

På samme måde som det gælder for så mange andre mekanismer, bør exceptions bruges med god smag og uden, at det overdrives eller misbruges. Men brugt på den rette måde, mener jeg så også at exceptions kan hjælpe med til at ens applikationer opfører sig mere korrekt.

24. okt 2003 23:18 |

På "Mød Microsoft" den 20. oktober i Århus og den 21. oktober i København holdt jeg et indlæg om "exception håndtering". Interesserede kan downloade min præsentation fra artiklen Mød Captator på "Mød Microsoft" og "Microsoft Løsningsforum 2003".

Jeg er blevet spurgt efter de Microsoft links, som jeg henviste til. De kan dels ses i præsentationen, men de kommer også lige her:

  • Exception Management Architecture Guide
    En glimrende artikel som jeg på det varmeste vil anbefale alle, der interesserer sig for at lave systematisk exception håndtering, at læse. Jeg er ikke enig i alt, hvad der står i artiklen, men det er klart noget af det bedste, jeg har læst om emnet.

  • Exception Management Application Block
    Som jeg også sagde på seminaret, synes jeg nok, at exception application blocken er noget simpel af natur (noget der desværre gælder for alle de application blocks, jeg har kigget på indtil nu). Dels er den ikke beregnet til generel logning, dels har den ikke indbygget failover funktionalitet, og endelig er opsætningen af den ønskede logning bundet til (standard) XML konfigurationsfiler - hvilket nok er noget primitivt for de fleste virkelige applikationer.

  • Enterprise Instrumentation Framework findes på "MSDN Subscriber Downloads:" under Tools, SDKs, and DDKs
    Et generelt logging framework som er en hel del mere generelt anvendeligt og langt mere fleksibelt end application blocken. Men også denne komponent lider under den svaghed, at der mangler failover funktionalitet samt at der er en vis binding til en XML konfigurationsfil (om end bindingen ikke er så hård som for exception application blocken).
Både "Exception Management Application Blocken" og "Enterprise Instrumentation Frameworket" kan være glimrende udgangspunkter for at lave systematisk logning af opståede exceptions. Under hensyntagen til ovennævnte mangler valgte vi dog selv, at lave vores eget logging framework, men har man ikke mod på det, er det absolut værd at se på specielt EIF.

16. okt 2003 10:14 |

I den kommende tid vil der fra Microsofts side af komme mange nye alphaer og betaer til .NET platformen. En af disse er et værktøj, der kan hjælpe med migrering af gammeldaws ASP sider til ASP.NET.

Nu skal man dog nok ikke stille alt for store forventninger til den ASP kode, der kan migreres fuldstændigt automatisk. Selv om VBScript kode i princippet kan migreres, er det nok ikke alt, der kommer til at gå 100% smertefrit ;^ ) Endvidere skal man også være opmærksom på at det, at man får noget kode til at kompilere og eksekvere under ASP.NET ikke betyder, at man får en pæn ASP.NET applikation. Skal man udnytte ASP.NETs styrke (fuldt ud) skal man lave applikationens struktur markant om i forhold til en traditionel ASP applikation.

Download alphaen af migrerings assistenten.

15. okt 2003 01:43 |

Velkommen til min blog/weblog: .Henrik om .HvadSomHelst. Jeg vil i denne blog beskæftige mig med - i princippet - hvad som helst, men især med .NET og andre EDB-relaterede emner. Har du kommentarer til min blog, kan du sende dem til mig på lykke@captator.dk.

Abonnér på mit RSS feed.