Tuesday, April 11, 2006

I just finished the setup of atlas and I get a nice errror :


Parse Error Message : Unrecognized attribute 'xmlns'


If you look at the image below, you can see that the framework used to run the Atlas local web site is in version 1.1. However, as Atlas would let guess, it uses the version 2.0 of the framework.


Atlas Error when using .Net Framework 1.1


To fix this little issue, you must go in your IIS management console to change the version of the isapi filter to use for this virtual directory. Right-click on your virtual directory and select "Properties" in the contextual menu. It will display the "Virtual Directory Properties" window, then click on the "Configuration..." button and select the "Mappings" tab in the "Application Configuration" window. Finally, for every Extensions that are using the .Net Framework 1.1, click the "Edit" button and change the aspnet_isapi.dll file to use and look for a 2.0 version of that file. The image below shows how it should look like.


Corrected isapi filters in IIS management console


After this fix, the atlas web site should run perfectly...


The Official Microsoft "ATLAS" Site

Monday, April 10, 2006

Nous avons remis notre appartement, il n'est donc plus nécessaire de nous contacter.


Merci à tous ceux qui étaient intéressés et désolés pour ceux qui n'ont pas eu la chance de le décrocher

Session I111 – Biztalk 2006



Probably the unluckiest session of the day…


I was waiting a lot of this talk. A bit took much I’m afraid. But, frankly, what to say about this presentation ? I really do not know, because the slides presented were nothing but what biztalk developers already know. And, unfortunately, all demos failed because of a virtual machine problem…

Session D310 – Writing Mobile Enterprise Applications Using the .NET Framework 2.0 and SQL Server 05 Mobile Edition



Probably the biggest title session of the day…


Sascha Corti is definitely a great speaker. He is fun, he knows how to speak and how to present things clearly with a lot of humor and a good rhythm.


He started his talk with the features included in the Messaging and Security feature pack among them, I could say S/MIME support, Gzip compression for emails and the possibility to push emails from the Exchange Server to the Pocket PC.


One of the major improvements in the Compact Framework 2.0 is that it is now possible to use the mobile devices such as the camera, the outlook agenda, and sending SMS or making calls. Before, it was a hassle to do these things. The new version now covers about 86% of the standard System.Xml namespace and 91% of the System.Data namespace. Moreover, there are fewer components to install afterwards than before. Controls, such as the web browser, have been added to the toolbox. With the previous version, to launch the web browser, P/Invoke calls were needed. To utilize the mobile devices, it is incredibly easy and most of the samples presented were about 10 lines of code to send SMS, catch or make a call and so on.


Following this introduction, Sascha made a demo of the publish/subscribe feature of the SQL Server 2005, publishing two tables on his laptop and subscribing to them with the SQL Server 2005 Mobile Edition. It was also amazing to see how Visual Studio 2005 can generate parent/child data bound controls without any intervention of the developer.


In the System.Xml namespace side, the serialization is now supported in the compact framework. But, using datasets in applications is not the best idea on Pocket PC. We can add a lot of memory in our PCs, but, mobile devices cans not go over 128MB of memory. That’s too bad ! That is where the SqlCeResultSet come in play. This is nothing but a brand new connected dataset only available in the compact framework. Its behavior and features are exactly the same as the Dataset. At the end of the presentation, he gave us a secret…….in the next version of the compact framework, WinFx will be included…..


 


Sascha Cortis's blog


Session A209 – New XML file formats



Probably the shortest session of the day…


Office 12 or Office 2007 will now use the OpenXML standardized format (yes, I know, it is a Microsoft format, but I hope it will be followed by others to store documents) to store Word, Excel and PowerPoint documents. This could break the compatibility with the previous versions of Office unless Microsoft provides a way to export/import new documents to older versions of Office. And they will….at the same time they will release Office 2007. For the user, the only difference he/she will see will be the extension used to name the documents. For Word, it will be either .docx or .docm depending if the document does not contain or does contain macros in it respectively. This will avoid to open a document to see that finally it contains macros.


For a developer point of view, the difference is more evident. He will see a zip file. To proof that, simply rename a .docx or .docm file to a .zip one. For the little story, you could do the same with an OpenOffice document. Into this package, at least one file, [ContentTypes].xml and three folders. The [ContentTypes].xml contains all the types of sub-document that can be found in the document, such as dooters and headers. In the .refs folder, there is one file containing all links from the main document and its sub-documents. And finally, the documents with the content in plain XML are also stored in one of these folders.


The major advantage of this new format is that files will have a more little size because of the zip compression. Secondly, it is now possible to generate reports or documents automatically from a web server, for instance, without installing the well-known OLE-Com Office library.


Session D308 – LINQ



Probably the most advanced session of the day…


The problem we face every day is to transform relational data into hierarchical objects and that is why O/R mapper exists such as Nhibernate for instance. The representation of these two models is totally different. But, retrieving objects with a query like we do in traditional databases would be really nice. One of the answers could be LINK, a language agnostic concept to query not only data, but objects as well. More precisely, to query collections of objects. LINQ  means Language Integrated Query. Take for example the following statement :


var c = from Customers


            where c.City == ‘London’


            select c.Name


Var is then a new data type which is completely different from the object type. It is a location to store a projection which is, in fact, the result of a query. If you open an assembly containing such code with ILDASM, you will see that c is translated to a projection class. From this c variable, it is possible to cycle through it to display its properties. The most efficient way to do it is to avoid the use of the foreach loop statement. Indeed, this instruction is transformed to a bunch of code included in a try/catch block which is really a performance killer. That means if you want to optimize your code for speed, look at your loop statements and replace your foreach loops by a standard for(int i = 0; i < c.Length; i++). The speed will increase by a factor of 10.


Friday, April 07, 2006

Session D307 : Atlas / Ajax


 



Probably the most declarative session of the day…


Christine Dubois started his presentation with a little formula : AJAX + ASP.NET 2.0 = Atlas. In fact, AJAX is not specific to Microsoft and ASP.NET and is available on almost every platform. AJAX means Asynchronous Javascript And XML. In our days, web applications suffer of the lack of richness in their user interface and although it is possible to add cool but basic features like drag-and-drop by adding a lot Javascript, it is still a pain to code in that language, without speaking about the debugging. Moreover, on the .Net side, using the paging and sorting features of a datagrid requires a complete round-trip to the web server. That is why AJAX and Atlas are born.


To start, Atlas offers a complete framework intended to be used on the client-side as well as on the server-side of a web application. For the drag-and-drop example, the Javascript code needed – and no more – to be on the client is downloaded to support this feature. It is already written for you and the only thing to do is to add an Atlas control to you aspx page.


She also showed us an example of the use of the Intellisense on the client-side. For this, the client needs to access data and it is possible to the client-side code to call a web service to get the data. Furthermore, by adding /js to the web service Url you can directly download the Javascript code that is able to connect to your web service.


Regarding the paging and sorting issue, the way Ajax address this is by requesting, with XmlHttpRequest, the strict needed data. This means that only the differences with the previous version of the page are downloaded from the server. On the other hand, all demos were done using only declarative programming style which I can not agree with…


Agilcom's web site

Session D305 - Aero


 



Probably the buggiest session of the day…


No luck for the speaker who made this presentation. Accumulating beta versions of software is definitely not a good idea and this talk was a perfect illustration of this.


After a few Office 12 PowerPoint slides under Windows Vista, PowerPoint hang and it was not possible to continue the presentation in any way. Hopefully, the timekeeper had a laptop with the same configuration allowing the speaker to re-start after about 20 minutes of "break".


What I have learned from this session is the meaning of Aero. This nice acronym means Authentic, Energetic, Reflective and Open. I do not know what the marketing guys were smoking, but it was really, really efficient…


The user interface of Vista is unbelievable, but now, I know why it needs such a powerful machine. What a lot of graphical effects, shadows, glass, 3Ds and so on. As an example, when the cursor is passing over one of the minimize/maximize/close button, a halo is drawn around it. Switching of active application is incredible. When you do an alt-tab, all windows are stacked and viewed by the side allowing you to see the contents of all running applications like videos and other animations.


New controls have been added and will be available to the developer. But only few of them will be available in .NET natively. For example, the new progress bar or the new button styles will be there right out-of-the-box. On the other side, to use the new IOpenFileDialog window (a brand new control to browse for a file to open) will only be available through P/Invoke calls, unfortunately. It is a pity, and if you do not want to use P/Invoke, it is still possible to write your code in C++.

Session D304 - WinFX : Presentation Foundation



Probably the most terrifying session of the day...


Remember the days you wrote your personnal web site in Notepad or, if you were lucky enough, in Ultra-Edit. Was it......15, 20 years ago ? Ok, so let's go back in 1990's and replace HTML by XAML. No kidding, this presentation was awful. Not because of the quality of the speaker nor the content itself but only because, so far, the only way to write user interface in XAML for Windows Vista is by hand !


Of course, the only limit in designing a UI with XAML is your imagination. It was demonstrated that it will be possible to completely separate the code from your UI description. This offers you a way to customize the look-and-feel of a windows application as you want or depending of the current user, for example.


One reason why Microsoft started with the WPF is to avoid an application UI to freeze. This is mainly caused because the UI thread is consuming so much CPU avoiding a refresh of the UI. 


WPF is using a DirectX surface to draw the user interface. Moreover, when Vista draws a user interface, the WPF extracts what Microsoft call CompNode from the XAML definition in one thread and it will use an other thread to draw in the DirectX surface by using the CompositionEngine. A CompNode is generated for every controls or widgets that compose the UI, building a tree of CompNode. Then, the CompositionEngine will take this tree and generates the right graphic instructions to render properly the user interface. This avoids then any UI freeze.


Now, the question that may raise is : what will happen with GDI+ and DirectX applications ? For old applications, using GDI+ application, Vista will open a DirectX surface and will take GDI+ instructions and draw them in the surface. For DirectX applications, there will be no problem at all and they will be supported.


The Nicolas Clerc's blog


Tekigo's web site

Wednesday, April 05, 2006

Session D303 - WinFX : Workflow Foundation



Probably the most interesting session of the day...


By introducing a new framework such as Windows Workflow Foundation in .NET 2.0, Microsoft is offering a very nice way to design and modelize business and human workflows. Altough Nicolas Clerc talked about the possibility of the use of BizTalk server to build human workflows which I really doubt because there is simply no possibility to build a state machine with it, I found this presentation really interesting.


The first demo he showed us was the creation and the instanciation of a workflow in about 10 lines of code. He showed the possibility to create composite activities as we already do with ASP.NET controls.


An example of persisting a workflow instance in a database with an examination of the content of the table was demoed as well. Simply do a ".Save()" on your workflow and....that's it !!!


On the other hand, it is also possible to define a workflow using XML. Indeed, Microsoft developer XOML to modelize workflows and, after a little discussion with Nicolas, it would be possible to change a workflow definition at the run-time. But, in the meanwhile, when a workflow is designed, it is compiled by the workflow compiler (wfc.exe) and then compiled by the C# compiler as well. Then, this generates a dll. To run a workflow, it needs a host which can be an exe or any other type of application.


http://www.windowsworkflow.net


 

Session D302 - WinFX : Communication Foundation



Probably the most utopian session of the day...


Do not take my words at the first degree. When I say "utopian", I mean that putting all communication means together in a single framework and providing a single layer to the developer is a very challenging goal.


The Windows Communication Foundation (previously known under the name "Indigo") will offer a unique framework with which it will be possible to interoperate with applications that are using web services, .Net remoting, MSMQ or COM+.


The applications written with this framework will take their communication settings such as the access point, transactional behavior or security, from a single configuration file like a web.config one. Some new attributes have been introduced among them the [ServiceContract] and [OperationContract]. With these attributes, a web service can implement an interface which is radically new.


http://www.windowscommunication.net


 

This is a first post about the TechDays 2006 in Geneva. I will try to write what I heard during the sessions and all comments are welcome...


Session D301 - A real project using WCF and WF



Probably the most b.....ing session of the day...


The speaker of this session spent, at least, the first 30 minutes of his presentation to explain the structure of the Universities of Applied Sciences of Switzerland and its implication at the HEVs level (HEVs means Haute Ecole Valaisanne, which is located in Sierre). From my point of view, this is not a topic for such conferences where almost all the people were here to listen others talking about technology.


Finally, he talked a bit about a coming project that will maybe start in May or June.


The goal of the project is to use a RFID in a tracking system for cheese (this was taken as an example). Basically, it will use the WCF, BizTalk Server or the WWF. Nothing really technical and the last 20 minutes were spent to talk about RFID, once again a bit off-topic...


http://www.hevs.ch