I just got back from San Diego where we've all been working feverishly on the swf creation tool (almost ready for beta 2). Now I understand that I may not be the least biased person in the world here, but holy shit, it is getting pretty compelling. Before you run away screaming infomercial, please let me explain why this isn't just bragging or self promotion...

Let me say first, the best things about it (imo of course) are:
1) it runs on the Flash Player (not ours), and
2) it uses C#, .Net, and editors of the Visual Studio caliber (also not ours).
So you can think of this part like a very negatively charged thundercloud, and a very positively charged earth. We just supply the golf club.

We are indeed making components, using very well crafted code and beautiful designs, so naturally I have nothing to do with either of these things. That leaves our Xaml/IL > Swf compiler. The Xaml part was written before I arrived at Xamlon (and I'm still not nearly as fluent as I would like). I did write some of the swf generator, however anything in there that Kevin Lindsey touches becomes about 800% better within a day or two, so it is pretty easy to remain humble (or outright depressed!). So this really isn't bragging or even Xamlon boosting, I promise, but here it comes.

When using full bore C# in Visual Studio, to make swfs, I feel like -- man I feel like I've got a great big pair of ass kicker boots on. There moments of clarity we had that were actually outright exciting, someone would yell 'DEMO!' and whooa, holy crapola yeaah, whoooo! Its hard to describe, but it was somewhat similar to the rush you get when having 5 vanilla latte ventes in a six hour period. Hmm... actually I'm sure that had nothing to do with it, besides the last two had no vanilla. The best thing though, is now that I'm home I've found my teeth are whiter, my car is shinier, and I can lose weight while still eating all I want. Maybe that part was California though, that state does weird things to your head, I swear.

Moment of clarity #1. Flash users are finally going to have access to good tools. Anyone who tells you Actionscript and Flash are better tools for programming than C# and Visual Studio is on crack, really, check their arm for skid marks and don't turn your back. From AS1 to C# there is a learning curve for sure, but if you want to go OO then it is way easier (because a class is a class, so you don't have to read some stupid ass online tutorial to figure out how to do something as simple as make a class be a subclass). From AS2 there is almost no learning curve, other than it is statically typed, so you get awesome tools. Oh, and it's better, full stop. Best part, if your one of your parents were poultry and you just can't do C#, you can still use VB. The moment of clarity isn't that we didn't see this part coming, just it has now actually happened. That deserves its own moment.

Moment of clarity #2. I've always looked at this from the Flash user side. However last week I was watching Paul  (founder of Xamlon) making a photo demo with this. I kept saying how cool it was you get intellisense etc, and he was like, duh, there's been intellisense for years dude -- not a big deal. He had tried to get into Flash a few times before, but it really requires spending a lot of time learning a 'Flash only' programming style, and one that doesn't give up its secrets easily. Let's not doubt that he could have figured it out eventually (umm, he created JRun, I think he could figure out movieclips), but he always ended too frustrated/busy before getting over the hump. Life is too short to drink bad wine etc. Suddenly, within an hour or two, he has not only a Flash demo program, but a really kick ass one actually. He's emailing people samples, putting things online, checking it out on the office PDA... He's like, I can just send this out and everyone sees it, no framework, no install, no Windows only. And I'm thinking duh, its Flash (well not really, I generally am just hoping I don't get 'found out' when we're all together, very little time to think 'duh' : ) -- but then suddenly I see it. While I've always thought of it like 'if you want universal deployment you need to use flash, you want speed or scaling you need C#/Java/etc', but for a lot of people it's just 'I can't universally deploy unless I spend a bunch of time learning Flash quirks'. I remember in the early days with Flash 2, my brother and I would talk for hours how cool it was, and the punctuation was always, 'and you can just put it out there, no publisher, almost no cost, and anyone, anywhere can see it'. That is so cool, let's remind ourselves again. That is so cool. So glad I was born now and not in the 1300's.   And now .Net developers can do this too.

Moment of clarity #3. Ingo (yet another programmer at Xamlon who's shadow I can hide under) was seeing how hard it would be to recreate a swf in the wild, so he found a little open source physics demo. It had the .fla online, so once he was done (in about an hour, and he'd never made a swf before) he wanted to see how it was done in Flash. We opened it on my machine, and I was drilling around trying to find code, and trying to figure out what snippet did what. What the hell are you doing? Well I'm trying to find the code. So we moved to Movie Explorer, but there we find things like this.parent.myX.blah. So drill around trying to figure out what was named what, who was the parent of whom, its like a small town on father's day. Of course that isn't the only way to do it, but the file wasn't poorly made or anything, not at all. The problem is that this is normal Flash, where lots of things held together by bubble gum. No wonder Flash applications tend not to get past version 1, and I'm not discounting myself out here either. I've done things with external oo files for years, but it is hard for others to just jump in -- the standards I picked aren't any more 'normal' than the ones anyone else picked. It ended up that Ingo gnawed through my power cord before I found the whatever was repositioning the main circle, I do think I was close though.

Moment of clarity #4. There was a data entry sample running that was created in VB, which subclassed the component set created in C#, which was instanciated in xaml, displaying on a PDA, with the persisted data visible on a Mac. That's like turning on Crossfire, and seeing Ted Koppel humping Dan Rather while wearing a sailor hat made from the New York Times Swimsuit Edition. I guess technically this one was somewhere between a moment of clarity and a LSD flashback. Kind of cool though, to actually see that. The data entry thing I mean.

Moment of clarity #5. We were programming at the swf level, (we were using movieclips etc which are fully type safe, have full intellisense, but are at the Flash API level). Then another sample came out that was using the early version of our component set. Suddenly the layout is all coming from markup (well not 100%  yet, but very close), as are the graphics. And this markup is Xaml (and in fact could easily be changed to XUL or whatever). Because of this, the code isn't dependant on anything in swf, so hey, it could actually be run on Avalon. The beautiful thing about the markup is it abstracts away the most system dependant things, making it pretty easy to deploy to swf OR the native OS. Maybe this is the icing, but that might well be the biggest deal in the end.

--------

Well, the next beta is coming out in about a week. I would really recommend giving it a look, or at least go through the samples to see what it can do. If you haven't checked out Beta 1, I would recommend waiting the week, there are tons of fixes in, so it is a much better experience. We have most of the bugs worked out of the low level stuff, and unit tests galore which has really been helpful. We will be demoing the whole thing at both Flash Forward and FITC (more on that in a bit), please stop by for a look (or just to say hi!) if you are there -- I can hardly wait to finally meet everyone!

Dang, out of beer. Talk soon : ).

 

posted on Friday, March 11, 2005 5:35 AM
Feedback
  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Jason Nussbaum
    Posted @ 3/11/2005 9:32 AM
    Wicked. I've been meaning to try out Beta 1, but haven't had the time. Looking forward to Beta 2. I've been dying to be able to use VS for Flash Development.

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Kenny Bunch
    Posted @ 3/11/2005 10:08 AM
    Robin,

    Really really sounds cool. What do I need to mess with the beta? Is it completely free?

    -Kenny

  • # Update on Why You Shouldn't By Flex or Lazslo
    Jesse Ezell Blog
    Posted @ 3/11/2005 11:36 AM


  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    lynn eriksen
    Posted @ 3/11/2005 12:22 PM
    Will this in any way compete with Flex?

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Dave Ross
    Posted @ 3/11/2005 12:33 PM
    This is the best thing to hit the RIA scene since the day before Flex pricing was announced.

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Jesse Ezell
    Posted @ 3/11/2005 1:41 PM
    Of course it is going to compete with Flex. It kicks Flex's ass. When I talked with the Flex team while they were in alpha, I told them that this was really the type of thing they needed to do. I tried to stress the importance of integrating with a real IDE like visual studio and getting .NET developers behind thier product, but they were all gun ho about doing it in Java and couldn't see why developers wouldn't want to use a Java server to generate SWFs for their .NET application. This is truely a great idea. Flex was just Macromedia copying Lazslo.

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Robin Debreuil
    Posted @ 3/11/2005 3:41 PM
    Hey thanks all for commenting : ).

    The beta will be completly free, though the final product of course won't be. That being said, we are pretty anxious to get it in the hands of people that want to use it, so we are brainstorming ways to make sure that happens at each level (without going totally broke that is ; ). I don't think price will be an impediment to adoption at least.

    The only thing a person needs to use it is the (free) .Net SDK. It is a big download, but that is for the developer only. The end result is just swf, so the end user just needs the flash player (version 6 for this release, we will go up and down later).

    Like Jesse says I think there is a fair bit of overlap with Flex. It isn't server only (though it can be used that way of course), there are differences in language and markup etc, but it will still compete in the Flex space, and Flex/Lazslo with us. It will also compete with Flash for Actionscript users I think, being it is a stand alone compiler that doesn't require Flash.

    "This is the best thing to hit the RIA scene since the day before Flex pricing was announced." Now that is funny, lol! I remember first seeing Flex pricing and wondering how they could do that again, after price killed Generator (which was a pretty awesome product for its time imo). Oh well, I'm sure when you crunch the numbers it makes sense -- hey, at least I'm not (the least bit!) unhappy with the Flex pricing any more : ).

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Bertrand Le Roy
    Posted @ 3/11/2005 6:27 PM
    Very cool stuff! And a very enjoyable read as usual. You could talk about the hunting strategies of cockroaches, I would still read you. But this, this is fascinating. If you throw in Remoting/Indigo, you could kick some even more serious Flex ass, couldn't you?

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Burak KALAYCI
    Posted @ 3/11/2005 6:29 PM
    Congrats. Can't wait to see the beta2.

    Best regards,
    Burak

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Robin Debreuil
    Posted @ 3/12/2005 4:30 AM
    Hey Bertrand - funny you say that, I've actually spent the whole night here evaluating different remoting strategies, trying to figure out how best to map that to our runtime instanciation of xaml objects. It has taken all of my will power to not go running off to read up on hunting strategies of cockroaches though - I bet if a person could figure out exactly what motivates a turd-monger they would do very well in this world.

    It's very hard to say if we'll actually kick ass - I think we will eventually offer a much better dev experience for swf, but we can't forget their product name rhymes with sex. That is really tough. We really need to be something like Xorgasm if we are to have any hope.

    Well back to remoting -- it feels so lonely though...

  • # Eventful week
    Andrew Stopford's Weblog
    Posted @ 3/12/2005 8:11 AM


  • # The missing piece!
    Michael Hansen
    Posted @ 3/12/2005 8:53 AM
    /**
    * Disclaimer: A Dane writing in english using 'notepad' ;)
    */

    I think the stuff you guys are doing really rocks!

    I believe that today UI's has a huge potential for improvements. The average Asp.net developer (e.g. "Flash is a movie format right?") cannot begin to imagine the power of this stuff! But they soon will :o)


    I've been following your progress for a long time Robin, and I still think that Macromedia must hate you ;)

    Why? Here's potential chain of events:


    * Microsoft will release Avalon to inferior systems like eg. XP

    * Nobody will (by themselfs) download the 200Megs avalon 'player'

    * Developers wills start using your plug-in for XAML -> swf generation

    * People will love the results

    * Meanwhile Microsoft will push Avalon to the end user through updates and partner chains (e.g. Dell)

    * At some point Avalon will have penetrated to most end-users (e.g. 70%) and then s... hits the fan:

    * Developers coming home from the lastest MS developers conference all excited by the latest new features of Avalon.

    * Developers complain to their managers that they still have to code for the flash player user base. (Uhh! can't use the new features)

    * Developers are (semi-) smart people - by now they have learned to use the word >cost efficient<.

    * Managers go: "To hell with the people that don't have Avalon installed. We can't be concerned with a minority. Go 100% avalon! It's more cost efficient"

    * Developers will start using MS products for the whole production cycle.



    Microsoft will once again have complete control.

    * Firefox is screwed! (who need browsers? Avalon multimedia app's are running directly on-top of the OS - the average joe will love it!)

    * Google is screwed! (dhtml vs avalon? hmmmm.... who might the winner be?)

    * Macromedia is screwed. (The increased efficiency of c# code and XAML will eventually switch over the core Flash customers - the 'designers').

    * xamlon/flash is screwed unless you have been acquired by Microsoft at this point (which would be a smart thing for Microsoft to do - can one buy stocks in your company? :)


    .... of course I could be wrong ;)


    Let's face it - Macromedia made a huge mistake in not taking the developers seriously.

    They keept ignoring the millions of real developers who would love to delvelop Rich Media Clients, but who are frustrated with the 'strange' flash api.
    (developers are also lazy for the most parts; that's basis of Microsofts success imo :)

    When Macromedia finally caved in, and introduced AS2.0 it was based on some superposition of Java and VB (ECMA script). Very very annoying!!! Yet another barrier to entry.


    I recently started to use MTASC (http://www.mtasc.org/) and the latest version of Eclipse (I actually like Eclipse better than I do VS2005!).


    My hope for the future is open source, not the Microsoft way! But i'll properly loose out.... ;)


    Best of luck

  • # Eventful week
    Andrew Stopford's Weblog
    Posted @ 3/14/2005 8:18 AM


  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Brian Lyttle
    Posted @ 3/14/2005 5:01 PM
    Does your product let your load and orchestrate existing Flash components? Eg. an application might exist in Flash and interface with a backend. It would be nice to split out the flash widgetry that the designers work on and pull it together using Xamlon.

    Any comments?

    -Brian

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Bertrand Le Roy
    Posted @ 3/14/2005 5:56 PM
    And think about all the semi-bright people who mistype "sex" every day in Google and end up on the Flex home page... Very clever from them. Well, at least, people who type "sex and flex" will now end up on your blog. Don't thank me.

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Robin Debreuil
    Posted @ 3/14/2005 7:24 PM
    Hey wait, I typed sex and flex and it was just a bunch of dirty stuff... Reminded me of my circus days actually : ).

  • # RE: Moments of Clarity With a New Pair of Ass-Kicker Boots
    Robin Debreuil
    Posted @ 3/14/2005 7:47 PM
    Hey Brian,

    We are using two attributes to map Flash api stuff to IL, and for code that is needed elsewhere but can be ignored by the swf (like type converters). These can also be used to map to exisiting swf code written in actionscript. The first is [Implement(false)] (default is true), which causes the type/member to not get put into the swf (though the name still gets registered, so it can be called). So for example the Movieclip object looks like:

    [Implement(false)]
    public sealed class MovieClip : Object
    {...}

    You can use this for your own swf classes too. So if you have a swf that has a "callWidget" function, you can create a class that looks the same, but actually ends up just calling "callWidget" in the swf, (which must exist by loading or being built in).

    The second attribute we use handles that name/path stuff. So for example "getWidget" really shoule be "GetWidget" in C#, and if it was just a function on _root, then you need to access it as a global call, not a MyClass.GetWidget() static method. So we use an attribute called "MapTo" that takes a target swf name, and a flag that specifies whether the call is global or not. So to map to _root, we use a static method on the MovieClip class from C# (MovieClip.Root), but the stub of that looks like:

    [MapTo("_root", true)]
    public static MovieClip Root{get{return null;}}

    So that maps to a global call to _root, no class name and no namespace. This is how we map a lot of the floating api stuff - eg Timer.SetInterval looks like (in the Timer class):

    [MapTo("_setInterval", true)]
    public static int SetInterval(TimerDelegate delg, int interval, params object[] args)
    {return 0;}

    So to answer the question, these can also be used to map to your own exisiting swf classes. We haven't done a lot of work with this yet, however I did look over the gen'ed code and it seems fine. Anyway, it 'will' work, just I hate to say that before definitive tests are written and passing : ).

Blog Stats

  • Posts - 121
  • Stories - 1
  • Comments - 1441
  • Trackbacks - 47

.Net Blogs

01101 Blogs

Flash Blogs

Graphics

People