PDC 2003 is being held in LA this year. The normally robust air in LA has been given a boost by the fires and is now so thick you can strain it between your teeth.
The focus this year is Whidbey, Longhorn and Yukon. Or, to those who can't or choose not to speak Microsoft-speke, the next version of Visual Studio .NET and .NET 2.0, the upcoming version of Windows and the new .NET friendly version of SQL Server. Also on show are a slew of new codenames and technologies: Avalon and Indigo (Windows Presentation Services for displaying the Longhorn desktop, and the new Communication Services). WinFX (Windows UI API), WinFS (Window SQL based file system), and more.
As a conference PDC 2003 is certainly big. The LA convention centre, on the other hand, is huge. There were a few "SOLD OUT" PDC T-shirts being worn and I can't help but think that at a couple of thousand a ticket it couldn't be that hard for the organisers to squeeze a few more seats into the cavernous structure.
Internet connectivity while at the show was tricky verging on dreadful. Most of the open areas and break-out rooms had wireless but speed was abysmal and drop-outs frequent. With similar problems being experienced at many of the Hotels it did make keeping up with the office a little tricky. The irony.
The buzzword of this PDC is that it's time to start cranking code. By now most people have at least a passing familiarity with .NET 1.0 and 1.1 but the introduction of .NET 2.0 will, hopefully, throw fresh impetus to those looking to get their feet wet in .NET.
Let's start with the main keynote. It was a reasonably austere and low-key presentation with the Chairman looking a little older and a little more tired than previous. The main thing I liked about this keynote is that it didn't involve Bill Gates getting dressed up like Austin Powers. I'm still having flashbacks on that one. It did, however, go for over 3 hours which is longer even than Dances with Wolves. However, Dances with Wolves didn't feature Steve Balmer trying to sell fake jewelry. There was the traditional A brief History of Computing video that shows how far we've come in the last 20 years, but with a nice self-deprecating twist in which Microsoft admitted that they'd almost missed the internet bandwagon and were not, in fact, the original inventors of everything cool and groovy.
The neat thing about showing how far we've come in 20 years is that it allows the presenter to show where we will be in 3 years. Think: 1 Tb of storage, Gigabytes of RAM, killer video cards and a dual proc CPU the likes of which NSA would be drooling over. But is this a forecast or merely a set of minimum specs for Longhorn?
The keynote was a little too long but did contain a ton of information, excellent demos of the new technology, on the fly coding demonstrations and enough of an overview to make whet your appetite and get you revved up for 4 days of wall to wall breakout sessions. Longhorn is seriously going to be fun. I was getting a little bored of Don Box showing us how well he can type using emacs, especially since it would have been far more useful and relevant, and not to say faster to be doing the coding using the new version of Visual Studio .NET. The point, I'm told, is that you don't need the expensive Visual Studio .NET IDE in order to create .NET applications. The point, I'm afraid, is that VS.NET Whidbey is so well suited to writing .NET apps that any money you save using free editors will be wasted in lost productivity benefits that VS.NET provides. Visual Studio .NET is, overall, an amazing piece of work. Show it off and be proud, Microsoft.
Secure Computing. Again
Microsoft is reiterating the message of Secure Computing. The PDC show bag included a copy of the Microsoft Press book Writing Secure Code 2. A nice update of the previous version the continues to preach distrust of input, the use of available secure APIs, and commonsense. .NET already includes extensive security built into the framework, and Visual C++ already includes "secure" APIs to prevent buffer overruns. How many people actually use these on a day-to-day basis?
Let me ruminate for a moment. My feeling is that we'll see secure computing when everyone starts checking for NULL handles and wraps all possible fail points in try/catch blocks. We all want to write secure apps and we all want to write unbreakable code. It's not hard but it can be time consuming. Until locking down your applications for your customers becomes an economic necessity we simply will not see the kind of resources put into secure computing to make it a reality. New compiler switches to check code, and more plumbing in the underlying OS to check data will help enormously, but it will still be an iterative process that no amount of hand-holding will completely solve. We've got to try though.
Longhorn is the next version of the Window Operating System and is as big a change as Windows 95 was from Windows 3.1. My initial thoughts are:
- Buy shares in nVidia and ATI. With both Longhorn and Doom 3 coming out soon everyone will be in need of Pixar quality graphics cards.
- 15" monitors are officially dead. Longhorn will require at least 1024 x 768 resolution, and a wider aspect screen would help even more.
- A criticism many have made before and more will again make: Microsoft - please, please don't sacrifice function for form. I love the stuff you are doing with Avalon and AERO but please don't forget to take this chance to tidy up all those tiny functionality annoyances that have been plaguing us since DOS.
- Much of the "new" stuff in Longhorn isn't. That's OK though. Integrating and improving current technology to provide a more seamless experience is a Good Thing. As long as you don't lock out Third Party applications. You got in trouble once before with that, remember?
Longhorn is made up of several new and exciting technologies the likes of which will keep publishing houses in business for years. Avalon is the desktop, WinFS the storage system, AERO the user experience, Indigo the Web Services and WinFX the new programming model.
Avalon is the new Windows Desktop Composition Engine that replaces the old GDI and GDI+. It uses, where possible, the power of the graphics accelerator to take load off the CPU and provide an enhanced graphical user experience at no cost to the application. Hardware requirements are equivalent to what any modern multimedia computer is capable of, namely a graphics card capable of 1024 x 768 at 32 bit colour depth with 64 or 128Mb onboard RAM, along with the usual 3D abilities.
In Avalon, windows are rendered to back buffers then composited together (along with any necessary visual styles such as transparency and shading) to create the final screen image. No longer will you see blank white areas in windows when one window is dragged across another. Everything is smooth, seamless, and oh-so-cool.
Avalon is vector based, meaning it will scale to the device or region you are using. Specify your coordinates in pixels or inches - the details are taken care of for you. Avalon also is based on reuse. Current applications can have Avalon controls embedded into them without need of a rewrite. Multimedia can be embedded anywhere and a great demo of a tiny video preview being shown next to the scrollbar was outstanding. Ink is also part of the OS to the point where the icon representing a document in Explorer will have an Ink label instead of standard text. Sweet.
Avalon applications are built on the new WinFX framework that replicates the initial ASP.NET model of a separate design and implementation layer. The layout is prepared using an XML syntax (XAML) to define the controls, their attributes and their event handlers, and the code-behind handles the details. Don Box and Chris Anderson did a great demo of the new programming methodology. Sorry C++ guys, but MFC has no place in the Avalon/WinFX/XAML story of Life.
.NET 1.0 and 1.1 presented the Web Forms and Windows Forms model analogous to the previous ASP and Win32/MFC programming model respectively. Avalon replace these with one unified programming model that allows a single application to be compiled for the web or for the desktop with only a change to the build environment.
I just hope they include some useable skins and themes though. No more jelly beans. Please!
Allegedly an acronym standing for "Authentic Energetic Reflective Open", AERO is the new User Experience (UX) for Longhorn. That's right, UI's are out, UX's are in. As are bizarre and unfortunate acronym expansions. It's a way to allow you to experience your desktop environment, rather than simply use it. Me - I'm just waiting for the neural shunt. No screenshots since it's not fully baked and Microsoft are feeling a little coy.
Do check out the Longhorn Aero rocks video from Paul Thurrott's WinSupersite. Anyone know the name of the music behind the video? It was used in a Toyota ad recently and I can't for the life of me get it out of my head.
WinFS (FS stands for 'Future System') is based on the new SQL Server and sits on top of NTFS. Files are no longer merely viewed by directory - they can now be viewed and grouped by author, project, or any other attribute you care to nominate. It makes Windows Explorer task based instead of file location based. And it's fast. Open a view of 1,000 documents and perform a full text search on the contents of the documents and the final list of documents matching your search terms is being prepared and is ready while you type.
Indigo is the codename for the set of communication services in Longhorn. Indigo combines .NET remoting, traditional .NET Web Services and .NET Enterprise services in a unified service-oriented design.
Visual Studio .NET Whidbey
The next version of Visual Studio .NET is designed to target .NET 2.0 and as such has been codenamed Visual Studio .NET Whidbey. Improvements to the designer, the languages, the compilers and the features will no doubt aid developer productivity, and will no doubt annoy some developers as well. This is nature. However, if I hear one more Microsoft evangelist discussing how easy it is to create an application using 0 (yes, ZERO!) lines of code I will beat them around the head and body. We're developers. We like to program. It's why they pay us. Just can't wait to see all those cookie-cutter Windows and Web applications...
Seriously though: Whidbey rocks. It brings together the best of .NET 2.0, fixes some of the previous issues with 2002 and 2003. The super cool new C++ stuff isn't in the build they gave out at PDC but it will certainly be in the final release.
For screenshots and more information on VS.NET Whidbey see Visual Studio 'Whidbey' and VSIP - the VSLive keynote in New York.
Visual C++ .NET
The next version of VS.NET builds on the improvements of VS.NET 2003 while introducing the new features of .NET 2.0. Visual C++ and Managed Extensions have been dramatically improved, so much so that C++ in a managed environment is now actually useable. I was talking to a few C++ developers who had moved new .NET projects to C# and were now pondering themselves how hard it would be to move it all back to C++. As is often the case Microsoft have got it right in version 2.0 but is it too little, too late for Visual C++? Let's hope not.
A full write-up of the changes to C++ will appear soon.
There is also refactoring support, code templates and better IDE support.
Visual Basic .NET
VB.NET programmers get a slew of new features such as the wonderfully named "My" classes for accessing system resources, pre-built code templates, smart tags on spelling errors, and an improved debugging experience. Language enhancements such operator overloading, unsigned data types, and partial types, and generics will also be included, as will the C#-style XML comments.
ASP.NET 2.0 is a major change. My biggest beef with 1.0 was that VS.NET 2003 provided minimal support for having code and HTML in the same file. If you just wanted to override a single Event or set a couple of properties in an ASP.NET page then there is no need to create a separate code-behind and resource file for that ASP.NET page. 2.0 fixes this and introduces full support for code and HTML to live side-by-side in the same file with no complaining about a lack of code-behind.
The other tenet of ASP.NET 2.0 is that only those files that are necessary will be created. No .resx files, no projects files. Just point your IDE at a root directory of your web app and it will assume that everything in that directory is part of the solution. Great for getting started quickly, but annoying when you have files in the directory that you don't wish to have in the solution, such as backups or a directory of not-yet-used sample code. Essentially you have to maintain squeaky clean directories. Oh, and don't assume that the code-behind files you do have in the web app's directory will stay where you left them. The solution upgrade wizard kindly moves all code-behind files into a special code/ directory (analogous to the bin/ directory for the compiled assembly). Sorry Microsoft, but this is one piece of enforced cleverness that is very, very annoying.
Speaking of annoying there's another treat in store for those who wish to migrate from ASP.NET 1.1 to 2.0. ASP.NET 2.0 builds upon .NET 2.0 and makes extensive use of partial classes - classes that are implemented over more than one file. The particular method in which partial classes are used in ASP.NET 2.0 is in the code-behind model. Your ASP.NET pages no longer derive from your code-behind class, rather they are part of the class definition and implementation themselves. This means that you no longer have to implicitly declare elements that appear on the ASP.NET page as public members in your codebehind class. They are implicitly declared in the HTML that makes up the ASP.NET page. The treat I mentioned is that the migration wizard will go through and strip out all the control declarations that were necessary in .NET 1.1, leaving you with suspicious gaps in your code and no way to go back to 1.1. When the wizard asks you to make a backup of your project, it means the entire project.
Also making headlines is the nice feature that IIS is no longer needed for developing web applications. This is particularly nice for those using non-server based operating systems that limit the number of web applications that can be hosted in IIS.
Another major change is there is no longer a Build step in ASP.NET applications. The application is built on the fly at runtime, making updating parts of the application easier than previously. This means that if wish to encapsulate parts of your application in an assembly to be consumed by the ASP.NET pages then you will have to create a separate project for those assemblies. You can include middle tier components in Whidbey web applications directly but the current build is not happy with them.
The concept of Master Pages has been included in 2.0. These are essentially templates that allow you to derive new pages from a single master page to ensure visual consistency across the site. The in-built design for Master pages is exemplary. Also included is built in support for skins and theming. How useful this will be is yet to be seen.
Overall ASP.NET 2.0 is what 1.0 should have been. It's elegant, simple, allows you to code the way you wish to, but it is also not fully ready for consumption. I've even had guys at Microsoft admit they've not been able to move over previous ASP.NET 1.0/1,1 applications successfully. Soon though. Soon.
Every man and his dog had a blog at PDC. I think this says it all.
LA and the Conference
The fires around LA dramatically affected the conference. Word is that one of the main control towers regulating air traffic was threatened by flames and shut down, leading to a cancellation of all air traffic over southern California. Many attendees spent hours sitting in planes on tarmacs after being diverted from LA while some missed the first day altogether. That in this day and age a single tower or installation can affect air travel seems to me totally absurd. Furthermore smoke from the fires dropped visibility and rendered the air so thick that there was a constant haze. For most of the week I saw and spoke to attendees who were simply exhausted. Not so much because of the fast pace of the conference (though it is exhausting in it's own right) but because it felt like there simply wasn't enough fresh air to go around during that week.
The taxi drivers were a hell of a lot of fun too. We had taxi drivers almost cause accidents trying to get to us by playing dodge 'em with other cards after being hailed, day dreaming drivers who have missed collisions only by delicate application of their brakes and long, smoking strips of black rubber on the road, and drivers who have happily driven into oncoming traffic down one-way streets. I'm still trying to decide which is more dangerous: taking a walk to get some air, or being inside an LA taxi.
LA itself depresses me intensely. I don't know whether it was jetlag, the smog, the amazing number and variety of homeless, the sprawl, the grayness or the simple lack of a cheerful (and visible) focal point to lift the spirits, but in the end the following sculpture and associated plaque said it all.
We attended the parties, though missed out on the Universal Studios party due to a strange desire to avoid hour long queues. We did attend the party at the Standard where we were assaulted by Don Box singing. Stick to Web Services, Don. Please.
Finally, we did meet up with some of the CodeProject readers which was great. Lingering connection problems and disrupted plans meant the get together wasn't as well planned as we had hoped, but it was nice seeing those who could turn up, no matter how briefly. Thanks guys!