Teched 09: Day #2 part 2

Microsoft Tech.Ed just asked a lot of a human body, leaving mine sick at home for a whole week.
I finally found some time to complete the rest of my report on this big event.

Building high performance web apps

Tips and Tricks for Building High Performance Web Applications and Sites (Giorgio Sardo)

The title of this session covers the content completely.
The first item Giorgio Sardo wanted to show, is what determines the performance of websites in IE.
I have always thought that the big performance issues were caused by JS/DOM-operations,
but thes operations only cause 33% of the CPU-load.
67% procent is caused by Layout, Rendering, Formatting,… of a web page.

Performance tricks were divided into 5 categories:

1. CSS performance

Unused styles cause performance problems. The speaker demonstrates a  bookmarklet to find styles that are included, but not used on a web page.
It is also good to replace dependency selectors (i.e. ul li) to child selectors (ul > li)

2. Optimizing symbol resolution

  • Avoid global variables.

3. Javascript coding inefficiencies

  • Minimize DOM interaction, because this is very expensive.

IE 8 developer tools now offers a profiler to view the performance of your JavaScript,
this seems to be a very usefull tool.

4. HTTP performance

  • Use HTTP compression, this can be configured in IIS 7 (option enable static content compression).
  • Combine images in sprites, using SpriteMe.
  • Make use of Doloto: this new application from MS DevLabs creates a tree of your navigation to each single function in your application.
  • Put your javascript includes at the end of the HTML-page, so the browser can already load the page before loading the javascript files.

5. Layout Performance

  • Use Expression SuperPreview to see how pages are rendered in different browsers.
  • Another usefull tool is Fiddler.

What’s New in Microsoft ASP.NET Model-View-Controller (Stephen Walther)

Stephen Walther is an excellent speaker, showing some great demos in this session.

  • In ASP.NET MVC 2.0 there is a “better separation of concerns”: Use RenderAction to invoke a controller action.
    RenderPartial() in MVC 1.0 only generates the UI, RenderAction() invokes a controller action before rendering the UI.
  • Areas are introduced: some kind of mini-applications integrated in a big application (i.e. admin section)
  • Model validation: decorate model classes for validation (this looks very similar to .NET WCF Ria Services).
  • Templating is also improved.

Teched 09: Day #3

Just a short blog post for now about day 3 on TechEd in Berlin.
UPDATE: some more details on the sessions added!

Sessions from today:

Windows Identity Foundation Overview (Vittorio Bertocci)

Integrating application autorization with other platforms, Active Directory,… requires a lot of API’s.
Windows Identity Foundation (abbreviation WIF?) ables a developer to rely on another source for authentication.
This is called the identity provider, a Security Token Service (STS) in WIF.

If you have configured an STS, you can now add it to new or existing (ASP.NET) projects.
Therefore some ASP.NET controls are included.
WIF for Silverlight is not available (yet?).

Deep Dive in Windows Workflow Foundation 4.0 (Nuno Godinho)

  • The big challenge for WF 4.0: Business Analysts need to know what it is.
    Therefore Flow charts and unit testing was added.
    It is also possible to debug through the new flow charts.
  • Correlation is also added.
  • All workflows are stored in XAML.
  • The state machine was dropped and replaced by a flowchart.

Silverlight 3: what’s in it for developers? (Tim Heuer)

With the release of Silverlight 4 at PDC 09, the contents of this sessions are already outdated.
Silverlight developer Tim Heuer gives us a summary of new features in Silverlight 3.

  • Media enchangements: H.264 /AAC encoding.
  • GPU accelartion: you have to indicate this as a developer
  • Perspective 3D
  • Effects + Pixel shaders
  • Loacal messaging API: With this string based API, Silverlight API’s can talk to each other on the same page, on different browsers and different browser tabs.
    All you need are 2 classes: LocalMessageReceiver and LocalMessageSender.
  • Navigation
  • Reduced XAP size by taking assemblies and zip them up.

Securing Silverlight (Shwan Wildermuth)

In this interactive session Shwan Wildermuth discusses some security issues in Silverlight.
Because Silverlight 4 allows access to the public file system, some of these issues may be already outdated!
First, some threats are summarized:

  • Eavesdroppers (packet sniffers)
  • Hackers/Users (Reflector, Debuggers,…)
  • Neforious code

Silverlight is more secure than JavaScript, allthough it does not protect your data.
You can not store important data in the isolated storage, as these files are available for the user.

Data Driven ASP.NET Web Forms: Deep dive (Jeff King)

  • Today, databinding is always to objects.
    In this session Rich data models were introduced, using controls to present against a model.
  • The ASP.NET GridView now has EnablePersistedCollection as property to remember which row was previously selected.
  • Styles for sorting were added to the gridview.
  • If the data in the detailsview control were not valid before, you get the so called screen of death, displaying some ugly error message.
    Therefore you find on ASP.NET 4.0 GridView and DetailsView the EnableDynamicData() property.
  • DynamicData uses Field templates (i.e. for displaying Date/Time): haven’t we seen this on ASP.NET MVC too?
  • Dynamic datamananager: if you have a supplier id in your table, which has a relation to a supplier table, supplier names can be added in a dropdownlist, instead of chosing id’s.
  • You can also enable DynamicData support on a formview: this will result in generating dynamic controls for a whole formview, and also for page templates or even for a whole app this can be configured!
  • The QueryBlock Extender updates “where searching scenario’s” (similar than in RIA Services).
  • Jeff King also shows how in future releases of ASP.NET 4.0 a DomainDataSource will appear, where the business layer can be integrated more easily.

I ended the day at the Microsoft Belgium drink.
The atmosphere, the drinks and the people were just great!

Teched 09: Day #2 part 1

Sessions for today:

New dynamics of BIThe new dynamics of Business Intelligence (Donald Farmer)

As a developer this session doesn’t really look interesting,
but on my organization BI becomes more and more important.
I’m glad I followed this session, because Donald Farmer is a great speaker in the first place.
He can entertain his public perfectly by using metaphors or other funny stories when presenting serious content.

In this session Donald Farmer tackles the different cycles of analytics without deep diving into technical details.
He stated executives of a company always have to do ad-hoc analysis.
The number 1 technology to make this analysis has always been Excel, which can be used in different ways (leaving in the middle which one is the best way)
So the Donald Farmer’s team has made a new add-in for Excel 2010: PowerPivot (CTP will come out in a couple of weeks).
It can also be used in Sharepoint 2010.

What can you do with PowerPivot?
You can import data there from different sources (db, Excel files,…)
Instead of making queries you just can construct them making filters in Excel as you would normally do.
In a demo he shows an example of 100 billion (!) rows loaded in Excel, which can be filtered out and sorted very smoothly.
They don’t store all this rows in that single Excel file, but they work with a histogram behind the scenes.

With PowerPivot they want to join two worlds together: the structured report data and the ad-hoc desktop data.
It will also be easy to publish the ad-hoc reports that were generated with PowerPivot for example on a Sharepoint site.

Team System 2010: project management & architecture (Brian Harry)

“Farmer” (he shows some pictures of his farm first) Brian Harry presents us the improvements in Visual Studio Team System 2010
on project management and architecture.

For project management the process will be customizable:

  • Most of the reports in TFS are now based on Excel (instead of Reporting Services)
  • The underlying warehouse will be simplified.
  • There is a relational warehouse
  • Excel reporting

It will also be easier to share the project data:

  • The dashboards will be richer.
  • MOSS Support: publishing to the portal.
  • Use of web parts for Sharepoint.

Rich traceability

  • Now there is an hierarchy in the work items.
  • You can define relationships between the work-items.

Better scrum support

  • They have built scrum in: agile workbooks for scrum like planning.
  • Simplified template (probably no Conchango template needed anymore?)
  • They have hired some scrum experts at the team to offer a new set of agile guidance.

Scalable

  • TFS can be used for very small (TFS Basic) to very large projects.
  • It will also be possible to scale up (farm of TFS-servers) and in this farms it will be possible to have cross project reporting.

The architecture of Visual Studio Team System will also be improved. You can render or create a lot of diagrams: layer diagram, Use Case diagram,
Activity diagram, Component diagram, Logical class diagram, Sequence diagram,…

Source code management in Visual Studio Team System 2010 (Brian Harry, Martin Woodward)

  • There will be an improved conflict resolution in TFS 2010.
  • They have added the abillity to give permissions for merging or branching.
  • You can have private branches.
  • You can visualize the hierarchy of your branches.
  • There is a new conflicts tab in the pending changes window.
  • There are renaming improvements.
  • Rollback is only available at the command line, which I don’t understand, why haven’t they written a tool for this?

Also the versioning will be improved:

  • Files and folders are versioned by name.
  • You can have team project collections which can be administrated seperately.

At the end of the session Martin Woodward from the newly acquired Teamprise shows the abillity to use Team Explorer on Eclipse on Windows and Mac

The other 2 very interesting sessions from today will be on my blog later in part 2!

Teched 09: Day #1

Picture of keynoteMy first day in Berlin was really exciting.
The registration went quite well and after receiving my goodie bag (which has some odd colours),
I was ready for my first session ever at TechEd:

The Windows Azure Platform: When and Why to use it? (David Chapell)

I previously planned another session, but a colleague said David Chapell is a great speaker, and I can’t say he’s wrong!
The good thing about this speaker is that he is not a Microsoft employee, so his opinion is not influenced by anyone.

The first part of his session contained some technical details about Windows Azure.
I think a lot of blogs have already been written about this, so I skip this part.
The second one tries to answer the ‘Whens’ and ‘Hows’.

The first reason to consider using Windows Azure is the pricing.
Microsoft will put $0,12 on their account for 1 Virtual Machine/hour.
Other pricing can be found online.

When will you use Windows Azure?

  • For applications with a massive scale
  • If your apps should have a high reliability
  • Applications with a variable load (ticketing system,…)
  • Those apps that have a short or unknown lifetime
  • Apps that use parallel processing
  • Apps that must fail or scale fast (for start-ups)
  • Software that doesn’t fit well in the firm’s data center

There are some competitors for the Windows Azure platform:

  • Other cloud platforms: Amazon, Google AppEngine, Force,…
  • (Dedicated) hosting companies

We must not expect to see all the applications run in the cloud in a couple of time.
Azure is also not trying to bring existing applications to the cloud.
But Azure seems to be very important for Microsoft, because they want it to be reliable straight from version 1.0 (which ships next week)

Session 2: A lap around Microsoft ASP.NET 4.0 and Visual Studio 2010 (Jeff King)

This session contained a lot of demos of the new capabilities of ASP.NET 4.0 in VS 2010.
The VS editor has some nice new features :

  • Multi monitor support
  • A new editor profile: the “web development (code optimized)” profile
  • The “add reference” dialog shows on default the projects tab and the loading of .NET references is now asyncrhonous,
    so the UI doesn’t freeze anymore (this is a tiny, but nice feature though!)
  • There are also snippets now for HTML, Javascript,… (i.e. <table + TAB +TAB adds a complete table with one row on your ASP.NET page)
  • Also a nice feature is the dynamic intellisense: if you declare a bunch of variables in a loop,
    Visual Studio 2010 just recognizes these variables on its intellisense.
  • In VS 2010 you can now specify your target framework.
  • If you type in the camel case capital letters in your markup the intellisense just fills in the whole name of a control
    (i.e. typing GVP will result in GridViewProducts)

Specific features in ASP.NET 4.0:

  • Performance should be better.
  • Better extensibility (output caching, URL encoding, external request validation)
  • the web.config is minimized (that is a great feature!)
  • the ASP.NET default template already contains authorization and styles by default
    (The default style just looks like the one on ASP.NET MVC)
  • Also there are some improvements to controls:
    • listview is improved (better templates)
    • checkboxlist: they added unordered and ordered list as output above table and flow layout
    • formview: property RenderOuterTable can be set to false, this won’t result in a nested table in the HTML output.
  • Viewstate can be enabled, disabled or inherited.
  • Controls now will have a property ClientIDMode which can be set to static, predictable, auto or inherit.
    This gives you the abillity to control the Client ID’s of the controls, especially interesting when you want to use them in javascript (good feature!)
  • The Page class now has two SEO ‘helper’ properties: MetaDescription and MetaKeyWords which enables you to dynamically change the meta tags of your page.
  • You can add routes to pages in the Global.asax

Developer General Session (Jason Zander)

This session took place in the keynote hall and eventually this just seems to be the keynote for developers (more on that later in this post)
Jason Zander presents us with Visual Studio 2010.
He brought some fresh news to this session, declaring that MS have Acquired Teamprise.
This is great news for companies with mixed environments. They could now put all their code, including Java and other technologies, in TFS 2010.

There were also some other partners  presenting their integrated technology for VS 2010:
Cobol integration (yes it still exists and still looks like crap) seems to be quite easy now
and also Oracle finds it way in the database projects of Visual Studio.

End of the keynote
End of the keynote

 Keynote

(Stephen Elop)

The keynote was really a disappointment.
First of all I just felt in an Americaon teleshopping commercial (overacting included!)

Secondly not a single technology for developers was discussed, so they better call it the IT professional keynote!
Halve of the crowd just left the keynote session before it has ended.

Oh yeah, what technology did they discuss in the keynote?
I can only remember 2 things: Exchange 2010 and Windows Server 2008 R2.

And between those presentations they want to mark the “New Efficiency” keyword.
Microsoft really wants their products to work smoothly these days.

So, this was Day 1 and I’m looking forward to the next day!
Hopefully it will not rain that much as today: allthough the celebrations off the Berlin wall were historically important,
I just felt historically wet and cold!

Some more pics may appear in this post, but now I really need to catch some sleep!

ASP.NET Ajax AsyncFileUpload: some thoughts

The latest release of the ASP.NET Ajax Control Toolkit (30930) now contains an AsyncFileUpload control.
The big advantage of this control is that you can upload files without a full page refresh (as in the original FileUpload control), showing the users direct feedback on the page.

I wanted to use the new control to let our users upload a CSV-file on an ASP.NET page.
If the file was in a correct format, it is read and stored in a list of objects, which will be bound to an ASP.NET GridView on screen.
The GridView control is included in an UpdatePanel to avoid a refresh of the whole page.

The AsyncFileUpload control has an UploadedCompleted event at server side where you can fetch the file contents.
So it looked quite simple to accomplish this behavior on my page:

ASP.NET mark-up:


Code-behind (VB.NET):

    Private Sub AsynCFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsynCFileUpload1.UploadedComplete
        If e.state = AjaxControlToolkit.AsyncFileUploadState.Success Then
            ' Do some parsing operations
            ' ...
            Me.grdMetingen.DataSource = resultList
            Me.grdMetingen.DataBind()          

        End If
    End Sub

Instead of loading the data in the ASP.NET gridview, nothing happened.
Allthough, when debugging, the event of the AsyncFileUpload is definitely hit.

So what went wrong then?
The AsyncFileUpload control internally uses an iframe to post its files to the server.
This means, nothing on the current page is post backed when uploading a file, but server side code is triggered anyway.
So what you need to do is a refresh of the UpdatePanel which contains the bound GridView with the resulting data in it.
Apart from a server side event, the component also has an uploadComplete event at client side.

I use the javascript function below to cause a postback of my update panel,
after that, my page works like expected.

function uploadComplete() {
      //Postback is necessary for asyncfileupload
      __doPostBack('idOfYourUpdatePanel', '');
}

So why hasn’t Microsoft’s ASP.NET team thought about this behavior?
It would have been really nice to have a property in which you can specify the id of an UpdatePanel to update when the upload process of the control has completed.

Secondly, I think the default appearance of the uploadcontrol really sucks!
Why didn’t they include some more styling options and why isn’t the text on that ugly button editable?

I hope we can consider this first version of the control as a basic version which will be much more improved on the next release of the Ajax Control Toolkit.
The AsyncFileUpload control definitely is a good idea, but it just isn’t mature enough.

This is it: my TechEd Europe session schedule

After making some really hard choices, I finally finished my schedule for Microsoft Tech.Ed Europe 2009.
As a developer I’ve obviously chosen a lot of sessions in the development track.
This schedule shouldn’t be definitive, but it is a good draft.

Monday, 9 November

9:00 – 10:15
DEV305 ADO.NET Entity Framework in Microsoft Visual Studio 2010 and Microsoft .NET Framework 4

Helsinki – Hall 7-2a

10:45 – 12:00
WIA204 A Lap around Microsoft ASP.NET 4 and Microsoft Visual Studio 2010

Helsinki – Hall 7-2a

13:30 – 14:45
DEV-GEN Developer General Session – Visual Studio 2010: New Challenges, New Solutions

Keynote Hall 25

15:30 – 17:00
Keynote Session

Keynote Hall 25

Tuesday, 10 November

9:00 – 10:15
DAT203 The New Dynamics of Business Intelligence with Microsoft Project Code Name “Gemini”

London 3 – Hall 7-1b

10:45 – 12:00
DEV205 Microsoft Visual Studio Team System 2010: A Lap around the New Project Management, Architecture, and Governance Capabilities

Helsinki – Hall 7-2a

12:20 – 13:00
BOF07 Microsoft Communities around the World

Interactive Theatre 3 – Blue

13:30 – 14:45
DEV303 Source Code Management with Microsoft Visual Studio Team Foundation Server 2010

Budapest – Hall 7-2b

15:15 – 16:30
DEV01-IS An Agile Talk on Agility

Interactive Theatre 2 – Orange

17:00 – 18:15
DEV04-IS Pumping Iron: Dynamic Languages on the Microsoft .NET Framework

Interactive Theatre 2 – Orange

18:50 – 20:00
Welcome Reception

Wednesday, 11 November

9:00 – 10:15
SIA305 Windows Identity Foundation Overview

New York 3 – Hall 7-1a

10:45 – 12:00
INT308 Deep Dive in Windows Workflow Foundation 4.0

London 3 – Hall 7-1b

12:20 – 13:00
DEV01-DEMO Microsoft Visual Studio Team System 2010 Team Foundation Server: Become Productive in 30 Minutes

Dublin – Hall 7-2c

13:30 – 14:45
DEV06-IS Microsoft Visual Studio Team System “Unplugged”

Interactive Theatre 2 – Orange

15:45 – 17:00
WIA03-IS Securing Microsoft Silverlight: Knowing the Enemy

Interactive Theatre 2 – Orange

17:30 – 18:45
DEV207 How Microsoft Does It: Internal Use of Team Foundation Server and Microsoft Visual Studio Team System for Software Development

Budapest – Hall 7-2b

Thursday, 12 November

9:00 – 10:15
DEV202 Doing It Right: Planning and Tracking Projects with Microsoft Visual Studio Team Foundation Server 2010

Helsinki – Hall 7-2a

10:45 – 12:00
DEV402 Dynamic in Microsoft Visual C# 4.0: The Why’s and How’s

Helsinki – Hall 7-2a

12:20 – 13:00
BOF12 Practical Web Sites: How to Build a Fast, Robust and Maintainable Web Site

Interactive Theatre 5 – Yellow

13:30 – 14:45
DEV313 Architecture Discovery and Validation with Visual Studio 2010

Paris 2 – Hall 7-1c

15:15 – 16:30
DEV03-IS Using Microsoft Visual C# 4.0 and Visual Basic 2010 Interop Features with Microsoft Silverlight, Office, and Python

Interactive Theatre 2 – Orange

17:00 – 18:15
ARC401 Flexible Design

Budapest – Hall 7-2b

Friday, 13 November

9:00 – 10:15
WIA308 Can You Keep a Secret? The Biggest Little-Known Features in Microsoft Silverlight

Dublin – Hall 7-2c

10:45 – 12:00
DEV312 Using and Extending Microsoft Visual Studio 2010 Architecture and Modeling Tools

Europa 2 – Hall 7-3b

13:00 – 14:15
WIA01-IS Panel Discussion: Everything You Always Wanted to Know about Microsoft Silverlight, But Were Afraid to Ask

Interactive Theatre 2 – Orange

Starting my blog engines!

Today, November 1st,  Christians from all over the world remember the death of  their loved ones,
but today I celebrate the birth of my new blog.

On this blog you will find technical articles about Microsoft’s .NET Technology,
Google Android and other technologies that are interesting for me to share.

My first series of  blog posts will contain a report of my presence at the Microsft Tech.Ed Europe 2009 Conference in Berlin.
I will post a daily summary of the sessions I attend on this event.

If you have questions or remarks about this post or blog, feel free to add a comment.

P.S. My appologies if my English isn’t always “polished”, this blog will help my working on it.