Profiel van RobbyRobby van DammeFoto'sWeblogLijsten Extra Help

Weblog


    29 november

    Google - taking over the desktop

    Today I added my Google docs (http://docs.google.com) to my google startpage.  This new feature of Google docs allows me to access my most used documents straight from my startpage.

    So now I have on my startpage:

    • my email
    • my documents
    • a calender

    Conclusion: I've got a second desktop on my PC.  This time in my browser!

    15 november

    Transact-SQL Error handling with TRY/CATCH

    Since SQL2005, you can use the Try/Catch mechanism for handling errors in you Transact-SQL code.  This essential feature has somehow managed to avoid my attention in the past year, so I was very happy that my colleague Jurgen pointed this out to me.

    Here are a few links with the detailed info:
    http://msdn2.microsoft.com/en-us/library/ms179296.aspx
    http://msdn2.microsoft.com/en-gb/library/ms175976.aspx
    http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1180620,00.html

    10 november

    Windows Powershell

    Somehow I seem to have missed this, but there's a new shell for windows coming our way: Powershell!

    I'd love to see my JAVA colleagues compare this to the shells that are available on Linux...

    You can find more info here:
    http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

    TechEd Day 4: WF usage scenario's

    When/why use WF (Windows Workflow foundation).
    Some possible cases I've encountered in last year:

    • Complaints management (a typical workflow process, I admit)
    • User/customer customized Workflow (great for sales presentations !)
    • Customization of UI (page navigation)
    • Exception management: how to handle an unusual situation your system.  I'm going to propose using this for exceptions that occur in the interfacing between our new developments and the (ERP) systems we communicate with.
    • Article creation/phase out

    As you see, there are many more possible uses than the classical 'Approval' process.
    Probably Microsoft did the right thing incorporating workflow in the .Net framework : it's everywhere!

    TechEd Day 4 - Session 1: CAB & SCSF

    First up today, "Designing and Developing Smart Clients based on Composite UI Application Block and Smart Client Software Factory".

    I've already played around a bit with CAB, and this talk confirmed what I already knew: this is not technology for small projects.  I really like the design of the thing, but unless you have right team, it will give you more headaches than solutions (it's just too smart).

    So basically, I'd only use it for bigger projects (10+ developers) - the infrastructure is too extended for smaller apps.  And of course, don't overengineer: only use CAB when the application needs to be composite (extensible, configurable).

    The Smart Client Factory adds productivity & quality by providing guidance, but this doesn't really change the context.

    09 november

    TechEd Day 3 - Part 2

    It turns out I missed the session on debugging ASP.NET Ajax because the room was full.  As an alternative I went to see the last of a 6 part session on connected systems.
    The topic was : The future of connected systems (@Microsoft anyway)

    Although a lot of it was spiced up with 'might', 'perhaps', 'should', etc there may be a few ideas worth mentioning:

    • The RFID framework that will be part of BizTalk 2006 R2
    • Transacted filesystem and registry in Longhorn (handy for installations, etc)

    My next to last session of the day featured David Chappel comparing .Net and J2EE in the coming years.  Considering the fact that recently I've been involved in several Java projects this subject particularly appealed to me.
    I wasn't completely satisfied with the content of the presentation though.  The comparison focused mainly on .NET 3.0  (WF, WCF) compared to SCA (which are just unreleased specs for the moment).
    David believes that J2EE 5 as published by Sun, isn't going to make it.  I'd love to take this up with some of are Java afficionados in the company, as I don't have the background knowledge to agree/disagree with this statement.
    I do think he heavily underestimates the force of opensource software (in the Java world).  It's a bit of a pity that he left this part of the world out of the comparison.

    The final session of the day concerned unit testing: a bit of a disappointment. I didn't learn much new tricks I didn't know about yet (if any).  But then again, perhaps that just confirms I already know what unit testing is (mostly) about.

    New York Times Reader

    Really worth looking at: the New York Times Reader.

    This is an app build on WPF, that allows reading the newspaper on your desktop. It uses some nice features of WPF to enhance your reading experience:

    • automatic resizing / adding of colums as your app becomes smaller/larger (this is an out-of-the-box control in WPF)
    • Search topic explorer: this is super -> it displays search results in an animated format that is just really handy to work with. A superb example of how an animation of a congitive model can liven up your data.

    Check it out! Currently the beta version is still free.
    You can find the download here : http://nytimes.com/timesreader/ (as kindly  indicated by Rob Relyea)

    TechEd Day 3

    Day 3 went of to a flying start with some in-depth information on Linq To SQL.  Now knowing how LINQ to SQL handles identity management, lazy loading, query composition and set operations, I feel quite reassured that I'll be using this technology in the future.  Sorry for all opensource and 3rd party ORM providers out there, but I'm afraid you'll have to start looking for another niche to focus on :-(

    the last session before lunch presented a number of best practices for building services using ASMX and with WCF.  I learned quite a few interesting thingies (I haven't had a lot of oppurtunities to build services up till now, so that wasn't too difficult).

    • Use namespaces
    • Bare vs wrapped parameterlists
    • Use wrapper objects for your parameters instead of parameterlists
    • how to refactor an ASMX into a WCF service
    • Splitting up the contract from the implementation
    • The Service Software Factory (ASMX version is already released, WCF version expected first half of december.
    • <ALT><SHIFT>F10 : create the using statement and the reference for a type you just typed in (handy if you don't have smth like ReSharper to help you with this).

    The lunch wasn't fantastic: never trust a French fries from abroad.

    And now on to a chat about scripting and debugging ASP.Net AJAX (hopefully I don't need too much coffee).

    08 november

    TechEd : Day 2

    After yet another long day at the conference center, I thought I'd share this day's experiences with you all out there.  In the mean time Kim Clijsters is playing Maria Sharapova at the Masters in Madrid, but since Kim isn't doing too well at the moment, I might as well do some writing (I know, I'm a lousy supporter).

    The day went of onto a flying start with "Developing data-driven web applications using LINQ".  Although I'd already heard a number of LINQ features in Anders Hejlsberg's talk yesterday, I did get some extra insights from this session:

    • Support for paging
    • Concurrency control when doing updates
    • Object identity (I do want to read a bit more about this)
    • Validation
    • Possibility for raw sql/Sprocs and explicit use of TransactionScope
    • BLINQ: generate a data management web app (standard CRUD) in seconds

    Next up: an intro into the .NET Framework 3.0 (formerly known WinFX).  This thingie actually runs on the .Net 2.0 framework and adds 4 components to it:

    • WPF : windows Presentation Foundation
    • WF: Windows Workflow Foundation (guess once why it's not called WWF)
    • WCF: Windows Communication Foundation
    • CardSpace: open-standards based software for identity management (bye bye UserIDs and passwords)

    It was a nice surprise that you can run all of this on Windows XP, and don't need Vista for it (actually I'm currently installing ;-))

    3rd session:  SQL Server Compact replication technologies: Seems pretty usable to me.I've had at least one project in the past where this would have allowed staying with SQL server instead of relying on 3rd party soft.

    During Patrick Tisseghem's session on the WCM (Web Content Management) features in Sharepoint Services 2007, I saw a lot of familiar topics coming back.  I've spent at least 2 years of my career getting to know the internals of Content Management Server 2000, so that's not a surprise.  Who knows if I pick this up again in the future (it would require getting to know a bit more of SharePoint of course).  Given what I saw today, that shouldn't be too much of a technological challenge.

    Last bits of the day: Custom activities in Windows Workflow foundation: although this was my first in-depth encounter with WF, I found it quite easy to follow (tnx to the coffee I guess).  This is definitely a very promising part of the .Net 3.0 framework and worth some investigation.

    In the mean time Kim is fighting to stay in the match, so I might just as well give her some support now before trying to get some demos to work.

    LINQ - Language integrated query

    As promised in my overview of my first day at TechEd, I'll dive a bit deeper into LINQ in this post.

    LINQ is a framework that will be supported by C# 3.0 and VB.Net 9.0 (in Visual Studio "Orcas"). It will provide a uniform query language for working with both relational data, XML and objects.  Because the support is built-in into the language it also can provide compile-time checking and intellisense.

    It's architecture splits up the definition of 'what' you want to do from 'how' it is done:

    • the LINQ syntax allows expressing the queries by providing a generic semantic for it.  This may be through the use of Lambda expressions, or through the simpler language-integrated syntax (which is translated into Lambda expressions by the compiler)
    • The "how" is defined by several implementations like:
      • LINQ to Objects: allows querying any IEnumerable
      • LINQ to Datasets
      • LINQ to SQL
      • LINQ to Entities
      • LINQ to XML

    Here's an example of a LINQ statement:

    var contacts = from c in db.Customers where c.City == "London" select new { c.Name, c.Phone };

    This will retrieve all customers in London and return them as anonymous objects that have properties for Name and Phone.

    The language integration is really most impressive.  You can use the Where() method on any IEnumerable object to return filtered results in your LINQ query, but sorting, joining, groupby, etc are also possible.
    Since the IEnumerable interface doesn't have a Where() method, a new feature had to be introduced to enable this kind of statement: "extension methods".  Extension methods allow adding methods to existing objects.  I believewe'd be able to leverage this mechanism as 3rd party vendors, so it might come in handy if you're building your own frameworks.

    Another key extension is the "var" keyword, a strongly-typed expression of the return value of a LINQ statement.  This may seem irrelevant, but considering the fact that anonymous types may be returned it's most certainly not.

    Anonymous types are returned when you define them inside the LINQ expression as you see above in the code example.
    Since the variable returned by the query is strongly typed, you can has code completion and compile-time checking on its usage.

    Looking at LINQ to SQL, it's not difficult to make the link with (N)Hibernate:  the mapping between the objects and the database is defined in C# attributes, like annotations are used in Hibernate 3.0.  Through the new entity query language in ADO.Net (compare it to HQL), SQL code can be generated using an object oriented query language.
    But LINQ goes 2 steps further than that:

    • The compile-time checking, strong typing and intellisense (not yet available in the CTP btw) makes it a far more controlled and intuitive developer experience.
    • The query language allow interrogating relational data, XML and objects together through a single programming model.  Even better, you can write your own "LINQ to whatever" if you'd like to.
      In a few lines you can now do what used to require tens if not hundreds of lines of code.  And this without losing control.
      It's e.g. possible to join data in 2 XML docs, or between data coming from a SQL db and an XML document in one query!

    Unfortunately there are also some downsides:

    • It's not available yet for production use: I also haven't heard of a release schedule yet.
    • Out-of-the-box, only support for SQL Server will be provided.  A provider model is in place for other Database engines but it will take some time for support for e.g. Oracle to be available.

    Today I went to "ask the experts" at the Microsoft booth how the caching mechanisms in LINQ to SQL compare to Hibernate's Level 2 cache.  The answer to my question was "this would be an interesting question for Anders (Hejlsberg)".  I guess I'll have to try to get hold of him tomorrow...

    Teched Day 1

    After a long and interesting day, I'm currently in my hotelroom writing about my experiences on day 1 of TechEd Developers.

    I'll start of by giving an overview of the topics that were on the menu today.  In later posts, I'll then dive into each of these topics separately.

    During the keynote speech, Eric Rudder touched about every topic that is part of the agenda.  I'm not going to repeat that.  I decided to focus my own schedule on the following topics:

    • Windows Vista, WCF, WPF, etc
    • .Net/C# 3.0 : LINQ, etc
    • ASP.Net AJAX
    • and perhaps a bit of Office 2007 and related technologies

    Next up was a talk about ASP.Net AJAX, an extension of ASP.Net 2.0 that allows creating more interactive, rich web user interfaces (as you probable already know).  I thought that this kit was still called ATLAS, but apparently Microsoft decided to rebrand it to the better-known term AJAX.
    Anyway, the details are for later, but I definitely think it's time for me to start a bit of prototyping with the BETA 2.

    After lunch, it was time for an introduction into WPF (Windows Presentation Foundation).  I saw some cool new stuff for building fancy UI's , but then again Windows had some ground to make up in this area.  I especially remember the fact that WPF is vector-based, allowing it to use the power of the graphics card in your machine (and releaving the CPU from the burden of rendering bitmaps).
    Furthermore there's of course XAML, but I'm not yet convinced this makes things any easier.
    A last major area where WPF wants to score, is the better integration for 'data' applications, media and documents (through the same programming model).

    Next up: Anders Hejlsberg with the introductory talk about LINQ.  Now that was impressive: I want this now, or better: yesterday.  Microsoft has been lagging behind in the field of ORM mapping in the past years but with LINQ they might just sprint to the front of the pack!
    I'll talk more on this topic later.

    To close the day, a dive into ADO.Net "past&future" was scheduled.  Some less-known ADO.Net 2.0 topics where covered, such as conflict resolution (when using optimistic locking), data caching (using SQL2005) and DB agnosticism.
    From this, ADO.NET VersionNext was presented, where the new "Entity Framework" was explained before going into the topic of LINQ again.

    So that's that for day 1.  Day two, here I come!

    06 november

    TechEd here I come

    In the coming week, I'll be scubadiving into a pool of Microsoft information at TechEd Developers in Barcelona.  Stay posted for some reviews of this weeks highlights.

    Blogging about

    My colleague Johan started a blog about his experiences with .NET.
    You can find it here:
     
    A great example for any developer.
     
    *