I just went to excellent presentation about building “software that users would love”. It was a great overview of where we are as developers tend to confuse or even insult the users of our applications. It was not a talk that gave answers to how you can solve the problem of having to support total novices and at the same time giving power users what they want. The Hillel Cooperman who presented the session was excellent and it was on the best set of presentations slides I have seen in term of presenting concepts.
It was also clear that Aero is not simply an application built using the Avalon APIs but takes advantage of all the WinFx APIs to build a user experience. It seems that the idea of one look and feel is appropriate for all users is going away and he talked more about a “UI Cookbook” where the guidelines for a number of different scenarios would be presented. For example, a games player would expect a different user experience from say a musician or a business man.
You can find the start looking at some of their initial ideas at http://msdn.microsoft.com/Longhorn/understanding/ux/default.aspx
Hillel has a blog which looks like it will be worth looking at. The url is http://www.themicrosoftexperience.com but there is no rss feed.
Another very interesting day at the PDC. I went to a number of different sessions across a wide range of subjects. I decided that it is important to get a taste of all the different subjects being discussed at the PDC. As always what I have really enjoyed the stimulating conversations you have with people from Microsoft and other attendees at the PDC .
I am trying to look at Longhorn from a business viewpoint and starting to think what aspects of Longhorn would make a company decide to roll out Longhorn. Indigo is great and wonderful thing for developers but in the end it is just plumbing. I think of it being more important on the application server than on the client. Though I am sure the indigo people would disagree. Avalon and Aero are great but companies don't buy “cool” interfaces otherwise Apple would have much more than 2% of the market. Really it is the capabilities of winFs that could be of much more importance to the majority of companies.
I find winFS very interesting as two words instantly jump to mind Cairo and Hailstorm. There seems to be a lot the concepts that were in Hailstorm being implemented in winFS. Especially if you look at people and groups.
It is a shame that we have to wait so long to get the final software.
The “ask the experts” event was very informative and it is great to have the opportunity to ask any question you feel like asking to the people who design and develop the platform.
It was especially interesting to listen to the unofficial “Mono” BOF and then later to meet Miguel de Icaza.
I was talking to one of Microsoft guys at the Longhorn booth and it sounds like Longhorn can install under Virtual PC but instead of being a short install it will probably last hours !!! I wonder if anyone has been sucessful in installing it on Virtual PC and what configuration they used.
I enjoyed the PDC keynote and certainly it means a lot of new stuff to learn and to play with.
I found it interesting that a roadpath slide was shown indicating the transition from win32/ .Net Framework to WinFx. WinFx being the name to the class framework of Indigo,Avalon,WinFs and the “fundamentals”. When .Net was first marketed everything was branded as .Net. However, eventually Microsoft realised that this was just confusing the market and started to say that .Net just refers to the framework running on Windows and talked about .Net connected applications.
So is the “Whidby” version of the framework the last time where the moniker .Net will be used ???
I have built a data abstraction layer which allows me through the use of configuartion files to decide whether the data source is sql server, odbc or oleDb or xml. I use parameterized xslt transforms as my xml equivalent of stored procedure. It is all working very well and could be easily extended to retrieve data and transform it different sources such as web services, message queues etc. I was discussing on this on IM and made the statement that of course adding asynchronous data sources would require no change to my presentation code. Everything is separated into layers so the presentation layer has no clue about which data source or transformation technique is being used.
Once I started thinking about it I realised that really I am starting to build a service orientated architecture. My applications are consumers of services provided by other "applications". Here I use the world "application" losely as I could be refering to a sql server database or a hotel book system running else where in the world. I said initially that if I started accessing a data source asynchronously I would not have to change my presentation code, but this only true if I can use a form of intelligent caching. We tend to build applications thinking that all our calls are synchronous. You press a button and a response appears on the screen. When we first started using Soap and building web services we all built synchronous services, esentially Remote Procedure Calls using Soap. For many reasons we realised that may be that wasn't the best idea and we should maybe use a subscribe and publish architecture. However, in order to make this easier for developers you need to be able to build a "runtime" which hides from the developer most of the work that would be required in order to implement such subscribe, publish and consume systems. These systems tend to be constructed as message busess where a message is passed along a pipleline and information is added to the message on one side and removed on the other side.
This is all well and good in terms of building the plumbing and assuming that it is all built professionally it will solve a lot of problems in terms of building service orientated architectures. However, what about my client, traditionally and especially the the vb programmers and the web application designers have assumed that an event is raised you make your call and you make your remote procedure call and you get back your response and it is displayed to the user. Users don't like seeing hour glasses or please wait 5 minutes for the response. All our systems tend to be designed and archticted to assume synchnous behaviour. This problem is eloquently described by Ingo Rammer in the Flowchart lie.
However, again this is dealing with how we architect a system in terms of the plumbing etc. What about the client where are the tools for building consumers of asynchronous messages.
- One way is to use caching and refresh the cache asynchonously. Only bring across enough information that the application can operate as though it was working with a synchronous source.
- Fire and forget....or is that fire and hope.
- Display the hour glass and wait
"Indigo" provides the plumbing but where are the metaphors and built in tool support for building asynchronous applications. It is just not the way most people think or operate. Don't say use the building blocks as that assumes too much prior knowledge from the average programmer.
I tend to not use alert but open a new window and redirect the output to that window. This leads to many other interesting debugging possiblities.
var results =document.documentElement.innerHTML;
var match = "<";
var re = new RegExp("<", "g");
var newresults = results.replace(re, "<");
I have been developing a web site which is mainly html but also contains an ASP.NET application. The template for the site was created in Dreamweaver and the application in Visual Studio. The web site is in German so contains lots of umlauts. I noticed a really weird problem. Everything was OK until I looked at the index.aspx web page and all the umlauts were being shown as "?" etc. I looked at the meta tags in both the ASP.NET web page and the html pages and they were identical :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
So I was confused, finally I found out the problem .....
It is in the web.config file :
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
The request and the response encoding have to match the charset defined in your web page or your page will not display correctly.
I was reading the posts from Eli Robillard, Randy Holloway and the reference Randy gave to Cameron Purdy . This made me think about the meaning of teams, community and the purpose of blogging. I find dotNetWeblogs a community and not a set of yes men or robots who follow a party line. You do find critcal comments here. You do see people wanting changes to products. It is a group people who have varying interest in .Net but also have lives outside IT, which they also reflect in their blogs.
I find it interesting that there is now a longhorn bloggers site. If I am not mistaken the goal is that the blog entry are to be stored on the site and all blog entries must be directly related to Longhorn. The PDCBloggers.Net web site takes a different approach and simply creates a main feed based on the different blog entries on registered blog feeds. If you take the longhornbloggers approach to it's logical conclusion then I should have different blogs for each of my different interests. I assumed that was why we had categories. That is why I much prefer the PDCBloggers approach.
I know that there have been many blog entries about the "noise to signel" ratio on the dotnetweblogs feed. But I think the beauty of blogs is the totally unpredictable nature of their content. Ok, it is a bit of a Pandora's box but that is freedom of expression. Sometimes an entry is highly technical and sometimes it is simply a personal opinion. I subscribe to the blog entries from all around the web. I use them as an indicator of what people are thinking about at present and what is important. Using them as a technical resource is something that I view very much as an added bonus. Naturally I often learn some very interesting important technical tidbits that I would otherwise never find. For me this is a concern as there are many people who have never heard of blogging and aggregators simply have no idea of this information even exists.
As for the comment from Cameron Purdy that a large number of the .Net blogs are from Microsoft people who are trying to given illusion of a .Net community. Which seems to imply there is no .Net community. There were .Net blogs before anyone from Microsoft started and the dotnetweblogs blogger community was not started by Microsoft. I think it is great to have Microsoft people blogging, you can put names to the PM's in different groups, you can contact them or add comments to their blog. This possiblility simpley did not exist earlier. The same with the BEA, IBM or Sun/Java blogs. Some of them may be marketing and some have deep technical content but you soon decide which blogs are worth reading and which ones are not.