I promised that I would explain a little bit about what “Application Model” means, and more specifically what it means for Avalon. Before we can even get too far there, it’s interesting to ask a simple question: what do we mean by “application” in the first place?
A lot of application platforms don’t do a great job of answering that question. Take these two big categories of app development platforms as examples:
- Desktop Applications: In the traditional desktop app world, there hasn’t ever been a very good model for what an application actually is. Take Win32, for example — here an application is roughly a set of windows in the same process. Because there isn’t an entity representing the app itself, the traditional practice is to pump messages (WM_EXIT) to the main window’s wndproc. State management and manipulation isn’t as hard as it is on the Web, but it is left up to the developer.
In the Windows world, perhaps the best we’ve done so far in this area is with Windows Forms, which provides an Application class that starts and stops the message loop and receives system messages.
- Web Applications: There are some parallel issues in the Web development world. Traditionally, a Web “app” is roughly a set of pages hosted on the same server (usually) that are part of some interactive user activity. Most of the “application-ness” comes from communication with the server, which is done through post-back (and the user experience of post-back is of course sub-optimal, especially for users with slow connections). State management is hard, especially when passing data between pages because of the lack of structured data.
Today we have server-side scripting languages that make “application-ness” for Web apps easier to grok. ASP.Net, for example, provides application-level services for state and session management. Additionally, there have been advances in ASP.Net that enable more and more things to happen on the client side and thus reduce post-back.
With Avalon, we’ve learned some lessons from both of these app paradigms. We’ve defined an application in terms of an object that represents application-ness (which is a godsend for those of us who can’t help thinking in object-oriented terms most of the time), and provided object model there that lets our developers manage common application-related activities. Thus we are able to leverage some of the lessons we’ve learned from other app platforms by:
- Providing a well-defined entity for system interaction (the Application class).
- Enabling you to customize that entity by hanging any state off of it that you want.
- Enabling you to listen to app-wide events at the Application level.
- Providing simple object model around window management.
- Handling resource management for you, allowing you to refer to your application’s embedded resources (pages, images, etc.) using relative URIs (a lot more on this topic later).
Speaking of ligers, did you know that they actually exist? I was sure that this was just something the overly-imaginative Napoleon dreamed up, but if there’s an article about them in Wikipedia, then they must actually be real.
That’s the most amazing thing I’ve learned all day.
Update 04/13/2005, 9:56am: The story gets even crazier.
If I do start posting more about film (no guarantee that I will, but I thought I’d warn you just in case), you may start to get the feeling that I’m a harsh critic. And I think this is pretty accurate. If I spend two hours of my life sitting on a couch watching something on a screen, it had better be worth my time. But at the same time, I generally don’t like movies that aren’t comedies, because I watch movies to be entertained, not saddened or freaked out or have my mind blown (there are exceptions here, but I really have to be in the mood if I’m going to watch something heavy).
I don’t like most of the movies that I see, and there is only one person I trust to recommend films for me: my mother. I trust her, because, like me, she dislikes actresses like Julia Roberts and Catherine Zeta-Jones, and cheesy epic blockbusters like Titanic and The English Patient (we wholeheartedly agree with Elaine on this one). And she enjoys John Cusack, Bend it Like Beckham, Young Frankenstein, and Clueless just as much as I do.
I’m not saying that I have impeccable taste (for that, of course, is a matter of opinion), only that I am somewhat particular. :) So just be warned, in case I start criticizing your favorite film at some point (and yes, I really truly hated Garden State). Just so you can get some idea of what I actually do like (and so that I can prove that I don’t hate everything), here are a few of my faves, in no particular order:
And now perhaps you think I’m not necessarily harsh, just arbitrary…
When I first saw Napoleon Dynamite, I wasn’t that impressed. Maybe I just didn’t get it, but the movie was more painful to watch than enjoyable — I think I just felt too embarrassed for Napoleon, Pedro, and Deb, who were so painfully awkward and strange. Of course, there were a few saving graces: “Girls like guys who have skills…”, Kip and LaFawnduh, “Pedro offers you his protection.”
But I have enjoyed the movie a lot more in retrospect than I did when I actually saw it. It started because of my brother, who does an amazing Napoleon impression. I can’t get enough of hearing him say, “A freakin’ 12-gauge, what do you think?!”, or “It’s pretty much my favorite animal. It’s like a lion and a tiger mixed… bred for its skills in magic.”
Hearing him recite these lines in his perfect angsty Napoleon voice makes me feel like the movie was actually much funnier than I thought it was the first time. And now I’m totally amused by this Napoleon Dynamite soundboard that Jason found; perhaps in large part because it reminds me of my crazy brother.
And this week, the state of Idaho is also recognizing the film and its writers for its positive impact on the state and the ways that it portrays local rural culture.
MSN Messenger 7 has a highly addictive new feature that enables members to play games with each other while chatting. I had fun bugging Kenny to play Checkers with me tonight while he tried to write his post about providing user feedback for Indigo. Which reminded me that in my post about Ladybug from a few days ago, I should have also mentioned the Avalon newsgroup. There is a lot of good discussion going on there; feel free to come join if you just want to learn from some of the experts who post there, or if you have any questions or comments of your own.