Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Interviews Walt Ritscher on WPF, Web 2.0 and more

Walt Ritscher on WPF, Web 2.0 and more


1. I'm here at VS live Toronto with Walt Ritscher. Tell us a little bit about yourself and what you do

My name is Walt Ritscher and I'm from Seattle. I've been living there for a long time. My main focuses are training and software development. I mix both of those. Right now I'm doing both, working on a project for APA, doing a web site for them.


2. One of the things that you're excited about these days is Windows Presentation Foundation.

Microsoft calls it that, but it is formerly know as Avalon.


3. Why do we care about Windows Presentation Foundation? What does it bring to the table that we already don't have

I don't know why we care but I know why I care. I've always liked the graphic parts of Windows programming and up until recently I had a mix of technologies. You had to know how to do GDI, GDI +, you had to know how to do media, and also the whole gaming and the 3-D pieces. What Microsoft is trying to do is build a new presentation layer for the next version of Windows. They are looking at where our graphics cards are going to be in 2-5 years, they are looking at what you could do with these capabilities that you cannot do now. Just like when we went from the character based world to the windows world, there are a lot of new capabilities that we didn't take advantage of, for 5-10 years. But Microsoft saw ahead as did Apple.

What is interesting to me is that I got this huge new graphics capability; I can mix all these technologies and much more into a single rendering engine. Microsoft is uploading the processing to GPU, they're using Direct X to actually do all the renderings with even when you doing something with a 2-Dimensional object its being rendered in Direct X. All tri-dimensional graphic work is done with Direct X. But the question now is who is writing business applications and the classic demo that everybody talks about it you got a spinning cube in the corner of your window that has got a video playing on the side of it. Everybody thinks that's cute. But how do you put that in a Windows app? That's going to be the solution, how do we solve it. Like with any new tool, it is never the generation of developers that are currently working with it, that adopt it. It is going to be some young company that comes along and says "we're going to figure our how to write this great medical software or this great earth imaging software for showing how earthquakes work, or something like that, or we're going to use that to render the UI. You'll be able to spin the last ten earthquakes and see how they affected the ground shocks etc. That's where you're going to see a play-out. The business app is still going to be a grey form.

Billy Hollis was on the panel with me this morning and he brought up an excellent point. He said that one of the things that's going to make business compelling in WPF is that it is resolution independent. Right now if you're asking yourself, the minimum we can support for this video is 800 by 600 or 1024 by 768. Developers are working on these gigantic screens and they don't want to work at these small resolutions, but they have to because we need to support the lowest common nominator. What WPF gives you is a resolution independent screen. So we can just design the form; when it is placed in somebody's machine that has got 800x600 on it, it's going to look exactly the same as it will look if your reduce the size of the screen app.


4. What is it about Avalon that makes it able to scale, unlike a bitmap?

Most Avalon has done is vectors. There are a lot of other new exciting things. They've just announced it at MIX O6. They talked about the WPFE (Windows Presentation Foundation Everywhere) which is the new lightweight version. It allows you to do a lot of the things you do in WPF, but it floats of any platform. It is going to run on Linux, it is going to run on Mac. From my understanding what is does is it emits IL and they're going to build something like a Java runtime engine. They'll run that on two platforms and they'll take that IL and convert it into native code. It is small, it is lightweight, it is around 2MB in size, so it should be easy to push out to people's machines. We can push content out through the web to people machines and then they can do interesting graphic apps with it, games etc.


5. It would make that thing easier than have a Rich Foundation Program on.

The downside of that is that in the past you're leaving that 10% of Macintosh users or the percent of Linux users, out of the picture right now. What Microsoft is doing is they are going to build this thing so they can run those new systems. This is what I've heard; I haven't seen any demo yet.


6. What are you excited about right now? I know you're excited about is Atlas and Web 2.0.

My problem is I'm an early adopter and like the new technologies. Some people like to collect new hardware, the new latest video card, but I'm always looking at the new software stuff. Since I'm a Microsoft guy and I work with Microsoft technologies, I always look at what they're putting out. The last two or three jobs I worked on, even ... my client work or Windows forms work the jobs I have been working on have been ASP.NET. You mentioned the new technology called Atlas. The first new technology is Ajax, which in fact is a new buzz word that takes existing standards and says "If you use these 5 or 6 pieces together, that is called an Ajax application".

Do you know what Ajax stands for? Asynchronous JavaScript and Xml. Back in 1998 Microsoft produced this ActiveX Control called the xml http control, which you can put on a page and it would send data back to the web server without doing a normal web post back. The user wouldn't see anything happening on the screen. The server could process the request and send back a string asynchronously and then we can grab the string into the ActiveX Control and put it in a slot on the page. Nobody really bought into that ActiveX Control because there were a lot of barriers. You had to learn JavaScript and Dynamic html, so it wasn't very highly adopted but you fast forward now seven years later and everybody is saying there's an asynchronous way to do this. Microsoft has already got one. Let's take that idea and incorporate it in the newer browsers, but without using an ActiveX Control as Firefox does not have support for active control. But it's the same idea and the same principles.

Now that all the browsers support xml http we can do this. The results are that a lot of websites are flying these Web 2.0 applications that look a lot like a desktop application. They're responsive in a way that we don't usually expect in a website; the fact that I can drag a portion of a webpage around with a mouse is interesting. Is not that you couldn't do that before, but before you it was some gimmick little thing, like a menu. A user would not expect you to pick up a menu and move around on the page, because you don't do that in Macintosh apps or Windows apps. I think Google maps was the turning point. When you first look at Google maps you don't know that you can do anything with the mouse. Then your friend says click here and drag and everybody gets that eye opening experience of "Oh my god, that's cool." And then they tell all their friends how cool it is. I don't use Mapquest, I don't, I always go to Google maps. That's what Ajax is. Microsoft has a new technology. So far I listened to a talk about it last night, and I had the biggest crowd here at VSLive because everybody wants to know what it is. My talk was on Ajax first and then ASP.NET new asynchronous pieces. The last piece was coming in 6 months and that something is called Atlas.


7. What exactly is Atlas?

Atlas is Microsoft's response to Ajax. They invented this ActiveX technology back in 1998 and nobody used it. Seven years later, suddenly it's became the hot component making Ajax work and Microsoft doesn't have a tool set. It's basically this JavaScript and figuring how to marshal some strings across a boundary. Microsoft has this team, ASP.NET team which is really interested in making sure that Microsoft does web programming in a good way. They have given ASP.NET1 and ASP.NET2. And of course they've heard about Ajax; they've put together a team that says: "How can we do Ajax in the Microsoft way?" I'm referring to the abstraction layer they are trying to give us.

There's a hard thing to do in programming. You can do it the hard way, or you can do it the easier way if we give you all the set of programs and objects again. In Windows world you don't have to know when is messaging, you need to know about creating a visual basic form and dragging a button on there, and clicking on it and writing what it was called a windows procedure back then. You didn't have to learn the nitty gritty of Windows programming. When web came along their answer was "we're going to extract out the details of html, you can do html if you want; we'll give you the power to do that, but we'll also give you some buttons and forms, and you'll write C# code and you'll end up sending html to the browser". Now we've come to the same thing with Atlas. So Atlas is Microsoft's answer for the asynchronous piece. Someone had to write the JavaScript, and marshal the call back server and marshal the string back to the browser and plug it to the right spot and figure how to parse the stuff.

Microsoft is going to give you some collateral controls; one of them is called update panel. You put some controls in there and when the call goes back that's the only part of the webpage that updates. You don't have to do anything special to make that happen. They have a confirm button control that you can put there. You put that there, you put a button, and you go to the confirm button and say "when somebody clicks out this button, pop up the window alert." It just emits some JavaScript, but it abstracts out the details for me. What you're going to see is that some developers will continue to work with Ajax, but some of them already have a lot of time and investment in ASP.NET. We want the same kind of immediate visceral response you get from a web page. And I already have the controls in my tool box. How do I do this? There's an example where you take a drop down list, you pick an item from one and it follows the next one. Then you pick an item from that one and the next one follows. That's an example of Atlas enablement.


8. This is kind of ugly to implement in the normal world because you have to do a post back to filter the other lids.

With Ajax you wouldn't do a post back. We already have a bunch of Java Script on the client's side and then matching server side code and in atlas it's all done declaratively. You click the combo box, the panel where you want to move around, you click it and you click another control and you wire the two together and it handles marshalling all the script on the page and handles passing the codes back and forth.


9. What is the hype around Web 2.0 and what barriers exist?

I don't know what other people think Web 2.0 is, but I think it's just a label that's convenient to stick on stuff. This new web technology that is different than the bubble. They want to differentiate themselves from the stuff that has been written in 1997 and 1999. Part of what makes those applications different is this Ajax model. You can have an interactive calendar or interactive map. One of the things I put in my talks is why did Ajax explode at this point? There were a lot of factors. Someone actually put a label on it saying it was catchy and we all can now rally around: "I know what an Ajax application really is. Before I was like this: "Oh I'm trying to build an application that's built on HTML, JavaScript and other web technologies". I think it's the same Web 2.0, you have people saying this is the next phase of the web. I don't think it's like that at all.


10. What do you think of the way Microsoft names some of their products?

We've talked about Avalon. There's also Indigo which is a beautiful name that became Windows Communication Foundation. Microsoft never seems to come up with the right name in the beginning. Vista originally it was a code name. Another one is Monad, also a code name. Monad is the new Shell Microsoft is writing. They replaced the command line and it's definitely an update for the command line but it's also different from the other command lines. The one that really annoyed me was Origami. It was a great name for a wireless portable device, now called UMPC. I saw the video of it and I saw the hype going and I thought that finally this is a name that's going to compete with things like iPod etc. Origami just makes your mind light up with all these pictures that it can do. You don't know what it does but it's artistic, it's something that just rolls of your tongue. UMPC does not roll; it just drops like a rock.


11. One of the things where you said they got the name right is Monad. What's the new name for that?

The new name for Monad is Windows PowerShell. It's powerful and a shell - an app that allows you to shell out and issue commands to some system. It's much more sophisticated than that. You can script them; you can put them in batch files etc. Administrators love Shells. Administrators don't need GUIs. Administrators want to go and say "Something's wrong with this machine? I don't have time to do the beautiful GUI stuff. I just want to go down and say "you tell me what's on the hardware, you tell me what going with my network, you tell me how things are connected, what kind of network streams are going out, maybe I've got a Trojan horse or something." Microsoft has an engineer who studied these things and he decided to come up with a new one. It was code-named Monad. You know when you get to a command prompt and you get the little c icon and you can type things like "dir" that gives you list of files. That's a Shell.

The thing that makes Monad different is that it is a hugely powerful; it does not use Strings, which is how most command shells work. Most of the time we have two commands that you want to use, in a Shell you can pipe the results of one to another. You've got some function here and you can call "dir" and pipe the results to a printer or another command. But the problem with most of these things is that they use strings. If you want to do something serious with the contents being passed you have to use a string parsing language to read the contents so that you can parse the content out like you do with Pearl, something like a regex expression so you can somehow pick out the pieces that you want. Monad is object based and this is the new thing. Everything in PowerShell is an object. You pass objects from one piece to another; the entire .NET framework is accessible from Monad.

So everything you can do in C# Windows applications or Visual Basic Web applications, you can do through Monad; instead of piping a string across, you pipe an object across. So what do you get when you get it out the other side you get an object and objects have methods that you can call, they have properties that you can read. You just say "let me look at your property and I'll give you your string back". Whatever that object knows what to return to you, you'll get back. Once you see how this works it just changes your whole mind about Shell; it is extremely powerful. You can write commands to parse all your files on your hard drive, do a filter on them, make back-up copies to another directory. I've only been looking at it for about 2 days. I'm going to pull out the documentation and settle down in my seat and try to see what I understand about it. Everybody seems to love it.


12. Ted Neward had a thing on his blog where he went in Monad and implemented query in a command line rather than through the Windows messenger. Do you have any final words?

I just love this new technology. The hardest part is keeping up with it all the time; it is very tiring to always find the new stuff. I keep doing it and it pays off because we write training for it. We write the training ahead of time and when the stuff actually ships my company can go out and do the training.


13. You were talking about some new program that you developed, Developer prep or something similar?

Developer prep is the website that's going to become our official face to the world that's hiring us, trainers, myself and other experts. I do training through a couple of other companies as well.

Feb 23, 2007