Rob Relyea


May 2005 - Posts

  • Avalon: More Power, Less Pain

    Filed under: ,

    Gervase Markham is attending XTech, an XML focused conference in Amsterdam.  He attended my talk on Avalon/XAML and had some comments.  In this post, I'll address the first of his three comments.


    Avalon’s Motivation

    Gervase said:

    “The motivation behind XAML seems to be to make it easy to write Windows applications, or web applications in IE.”

    Our goal is not JUST to make it easier to build today’s applications...I'll try to clarify.  Avalon will:

    1)      Be the new presentation platform for Windows

    We are building a new presentation platform for Windows that enables a whole new generation of applications.  It is called Avalon.  It will run on Windows XP, Windows Server 2003, and Windows “Longhorn”.  Today’s Windows applications will continue to run compatibly.

    We are working with software developers from around the world to help them build great new applications that can benefit from the new capabilities Avalon offers.  Many developers and business people are very excited by what we are building.  If we and they do our jobs right, users will be delighted by the applications offered in the future.

    2)      Empower great design

    Windows applications today can be built to do almost anything.  Unfortunately, many things require lots of work.  Many others are next to impossible.  Designers often end up compromising their design due to technical limitations.  We’d like to stop that.

    3)      Be a unified platform

    We are building an integrated platform that removes many limitations that today’s platforms have.  We want to provide a unified framework with several important building blocks: controls, vector graphics, media, animations, flow documents, fixed documents, and 3d.  All of these technologies can work well with each other.

    XUL’s Motivation

    He also goes on to say:

    “The motivation behind XUL was to provide a first class UI on every platform without having to do the work multiple times.”

    Hey wait, I thought that was Java’s job.

    I believe that Avalon will enable much better user experiences than other frameworks.  It will do that while meeting fundamental requirements like accessibility, easy deployment, globalization, performance and security.

    We’ll have a platform that developers will enjoy using (due to choice of great programming languages, a declarative model - XAML, ability to use the .NET class library, and a great programming model) and targeting (because of what it enables them to do for their users).

    In the end, as always, developers will choose based on the power provided to them and the amount of pain that they must go through to harness it.  We’ll continue to work hard to provide more power with less pain.

    Does Avalon provide more power with less pain?

    Please download our new Beta1 RC (release candidate) from, kick the tires, and tell us how we can add more power or lessen the pain.



  • XTech presentation on Avalon/XAML

    Filed under: ,

    At XTech, I just finished a 45-minute talk on Avalon & XAML.  It went well...but 45 minutes is pretty short.

    I did the following:

    • Some "slides" on Microsoft platforms  (win32, com, .net, gdi/gdi+, direct x)
    • Some "slides" on Avalons goals
    • Demo of BlackJack running as an Avalon Express Application
    • Demo of Notepad written in Avalon (had spell checking, rich text option, saving to xaml)
    • Talk about the basics of XAML...markup=om, object elements, attribute treatment, xmlns, property elements, difference between avalon and xaml namespaces, event handlers, inline code and code behind, markup extensions
    • Demo of image flipper (using 3d to cut picture in half and fold it down)
    • Demo of media mania (3d cd case, data from web services, slider to choose different data templates, 3d rendering of cd cases)
    • Discussed action items...where to download builds, schedule, how to give feedback

    I'll be posting a list of questions that I got and answers that I gave...I'll add those as comments in this post or as separate posts if it warrants it.

    Lots of interesting questions today.  Interesting people to talk with.

    If you attended, please talk to me at the conference or drop me a line (contact feature of my blog)...I'd love to hear what you thought.

    Thanks, Rob

    Update: tagging this post so that it gets picked up by XTech
  • Avalon Element Services PM is now blogging

    Nick, a program manager on Avalon who runs the Element Services team, has been active on the avalon newsgroups, and now has a blog.
    In his first post, he discusses naming guidlines for Event, Properties, and Commands.

    A few additional notes about Markup Extensions.

    1) They are patterned after CLR attributes
    a) Suffix optional:  FooAttribute is used as [Foo(...)], just like StaticResourceExtension is used as {StaticResource resourceName}
    b) Positional Arguments: just like clr attributes, you can have a number of unnamed arguments.  we map this to the constructor with the same number of parameters.
        {StaticResource resourceName}
    c) Named Arguments: you can name arguments
        {Binding ElementID=Button1}

    One correction, Markup Extensions don't need to be suffixed by "Extension".  Just like CLR Attributes, that is optional.  Markup Extensions must subclass MarkupExtension, just like Clr Attributes must subclass Attribute.

  • Exe naming strategies

    An internal thread asked for advice on naming of Exes.

    This is a pet peeve of mine.

    Windows Task Manager should do a better job of showing more than just the file name to describe a process.
    Developers should name their assemblies more descriptively.
    Guidelines that I proposed for naming Exes:

    1)       don’t limit yourself to 8.3
    2)       do choose a descriptive name
    3)       do consider scenarios the app is used.  Used from command line, etc…
    4)       do use other attributes on the assembly to give more detail.



  • Avalon Application Talk

    Lauren Lavoie, an Avalon Program Manager, writes about Avalon's Application Model and other Avalon topics.

    Like her url...should i have a url for my blog...i've considered it for a while...(these new google ads on the right made me start thinking more about that recently...)

  • Treeview example for Avalon

    Kevin Moore, an Avalon Program Manager, posted an example of a Treeview control written for Avalon.

    Great to see so many PMs on our team blogging.

  • Avalon Layout and Flow Documents

    Just waking up from a few months of limited blog-reading...

    Fil Fortes, another Program Manager on the Avalon team, has been doing some interesting posts on Layout and FlowDocuments.