Flex/Flash/Actionscript

Synthesizer Developer – Dan McWeeney’s thoughts on the future of software development

Here’s an interview from Dan McWeeney that he did for RedMonk.tv at the SAP TechEd conference last week. Dan and Eddie Herrmann are Flex developers that work at Colgate or SAP, depending on how you define “work”. They did a sweet demo, which you can see in the second video below, but the thing that really struck me was Dan’s interview where he discusses the “synthesizing” process of developing, which involves taking bits and pieces from the open source community and mashing it all together to make something cool.

There’s a whole new group of people that’s being created right now. Which are people that are really synthesizing things. And they’re programmers at heart but they’ve realized that there’s way more smart people in the open source community that they can tap and now build these things together. So it’s like mashups for programmers, where you’re taking all these little bits and you’re synthesizing all this crap together to create this whole new thing.

Dan gives a really cool shout out to me during the interview, so yes, I’m half posting the vid just for an ego boost 🙂 But seriously, I think he articulates a really important idea. So check out what he has to say.

Dan and Ed created a friggin sweet-ass demo for the SAP TechEd conference. Unfortunately that was scheduled in direct conflict with MAX, so they couldn’t make it to Chicago. Ryan Stewart already covered their demo a little, and you can read more at the RedMonk writeup. I’ve been talking to Dan and Eddie for a while and I’ve been seeing their progress on the demo they eventually showed. Without going into too much detail I’ll summarize what they did: take PaperVision 3D, add in full 3D physics, throw in fully interactive materials in the 3D space, then control the whole thing with a Wiimote. Did your head just explode?

I think one of the coolest things about this demo is how they went about doing 3D physics. I was talking to them about how I did physics in TileUI (which is really only 2D physics faked for 3D space). They wanted true 3D physics, and there isn’t anything like that available for Actionscript yet. So what to do? They got a non-Actionscript open source (I think) physics engine written in C (or C++, I think?). Then they run the physics simulation and pipe coordinates that represent all the objects and movement in 3D over a local socket connection that gets read by their Flex app. Fucking a. This is the kind of thing that’s awesome. Someone says “But we can’t do 3D physics in Actionscript” and they just say “Well fuck it then, we’ll do it anyway.”

Boys, I salute you.

Standard
Flex/Flash/Actionscript

View differences between Flex 3 Beta 2 SDK and Beta 1 SDK

UPDATE: Well shit, turns out that posting the source of the almost-open-source-but-not-quite-yet Flex SDK is a no-no for now. I assume once the Flex 3 SDK officially goes open source this will be OK, but for now I’ve been asked by Adobe to take it down. As you say master.

I’ve posted the Flex 3 Beta 2 SDK that can be compared using Trac to the previous Beta 1 SDK files. This lets you easily see what changed from Beta 1 to Beta 2.

View the changest from Beta 1 to Beta 2 here.

Check out the main Trac site here.

New files:

  • ButtonBar.png
  • mx.controls.dataGridClasses.DataGridHeaderBase
  • mx.controls.dataGridClasses.DataGridLockedRowContentHolder
  • mx.controls.menuClasses.MenuListData
  • mx.core.EmbeddedFont
  • mx.core.EmbeddedFontRegistry
  • mx.core.IConstraintClient
  • mx.core.IEmbeddedFontRegistry
  • mx.core.IFontContextComponent
  • mx.core.ITextFieldFactory
  • mx.core.TextFieldFactory
  • easing_readme.txt
  • mx.styles.IStyleManager2
  • mx.styles.StyleProxy

Some other things to note:

  • Lots of the files have a very basic change in the copyright notice: from “2003-2006 Adobe Macromedia Software LLC and its licensors” to “2003-2007 Adobe Systems Incorporated”. That unfortunately means a lot of “false positives” show up in the changeset.
  • I guess joining Adobe means Robert Penner gets to pimp his own book (even with a direct link to the page on Amazon) within the SDK source code.( 😛 I’m just busting balls)
  • There are lots of trace statements commented out, giving us an insight into the Flex team’s debugging mind. ListBase has 40 such statements that haven’t been removed from the code. DataGrid has 54. ProgressBar line 1631 has the wonderful “Move indeterminate” trace statement.
  • There’s some new stuff for styling. It looks like they’ve added a class called StyleProxy (note: at the moment completely undocumented and has large blocks of commented-out code), and that you can use that to set the default styles on custom components. I don’t really know much about this (Juan, want to chime in?) but check out the changes in TabNavigator to see a little how they’re using StyleProxy.
Standard
Flex/Flash/Actionscript

Move indeterminate

Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate
Move indeterminate

A little jab at the Flex 3 SDK team. This is about a bug in the Flex 2 Beta 2 release. Looks like someone forgot to remove a trace statement. Woops.

If you want to get overwhelmed with “Move indeterminate” trace statements then debug this app in the latest Flex Builder:





 

This bug has been fixed, although not scheduled to be rolled out until next beta. I assume you can grab a nightly build and install a newer version of the SDK if you want to make these trace statements go away.

I’ll be bitching more fairly soon about some other pain points when upgrading an app from Flex 3 Beta 1 to Flex 3 Beta 2.

Standard
Flex/Flash/Actionscript

3D Glasses Goodness at MAX

I took some pictures of a room full of dorks rocking the 3D glasses. Awesome. Last night we had the PaperVision 3D birds of a feather session and we handed out 3D glasses to everyone for a little nerdy fun. A huge pat on the back to Ben Stucki, who couldn’t make it to MAX, for his awesome work with a) writing the code for PV3D that allows us to render things in “3D-glasses-enabled” mode, and b) for sending me a big ass box of 3d glasses to hand out during the session. I believe Ben will be blogging about how you can integrate 3D glasses support into your PV3D projects, so stay tuned on his blog for more on that.

Also, I *think* John Grden will be showing some more 3D glasses stuff at his PaperVision inspire session on Wednesday at 3pm here at MAX. So if you didn’t get a chance to try out the 3d glasses, go to his session and you can look as cool as the people in these pictures.

3d_glasses_1.jpg

3d_glasses_2.jpg

3d_glasses3.jpg

3d_glasses_4.jpg

You’re all a bunch of dorks.

Standard
Flex/Flash/Actionscript

Come to the Custom Flex Components Birds of a Feather session at MAX!

I’m part of a panel that’s running the Flex Custom Component Development birds of a feather session at MAX. We’ve got an allstar group together: Deepa Subramanian, Tony Hillerson, Chafic Kazoun, Adam Flater, and Andy McIntosh. We’re all going to be hanging out and talking about component development in Flex. But we don’t know what to talk about. We’ve got a tentative list of topics we think people might want to discuss, but we want suggestions for things to cover.

When: Monday October 1 @ 9:30 pm
Where: Room 179 A

Here’s what we’re thinking so far:

  • Invalidation/validation model
  • Application components vs. custom components
  • Performance/Memory Optimization
  • Coding Conventions (naming conventions, mostly)
  • Code Behind
  • Component development in Cairngorm
  • Underriding or Monkey Patching
  • Where to go drinking after we’re done

So come by the BOF session on Monday night and we’ll talk about component development. I know it’s late, but seriously, come by or we’re going to cry. Bring your questions and ideas on what you want to cover. Leave comments about what we should try to cover or just email me directly (doug@dougmccune.com). See you there!

Standard
Flex/Flash/Actionscript

Doug.dorkiness += 3d_glasses

Here’s a screenshot of me having some fun with TileUI and 3D glasses. If you’re going to be at MAX, find me and we can all look cool together wearing 3D glasses. Attend the Papervision 3D birds of a feather session. Side note: Ben Stucki is the 3d glasses master.

Seriously, MAX is going to be ridiculous. I’m gonna get you wearing 3D glasses, flinging tiles around on a multi-touch table. This is gonna be fun.

Click the image for a larger size. You got 3d glasses?

tileui_3dglasses_small.jpg

Standard
Flex/Flash/Actionscript

My 360|Flex slides translated into Chinese

My presentation that I gave at 360Flex has been translated into Chinese by Robert Shuie. Thanks Robert! He translated my slides, as well as my blog post about the samples I presented. This is a bit of old news, since this happened about a month ago, but I’m trying to catch up on my life so I’m finally getting around to posting now 🙂 Anyway, fricking sweet that we’ve got such an awesome Flex community overseas that someone goes through the trouble of translating presentation slides.

Robert sent me an email when he did the translation and I loved this comment:

It is hard to translate “monkey patching” term into Chinese. I recently mark it as “????”, which means “force to evolve”. I have no idea if it fits the origin idea.

Ha 🙂

Standard
Flex/Flash/Actionscript

Nifty Flex Accordion Menu (like on Apple.com)

This is an example of using a slightly modified Flex Accordion to create a sweet looking menu. Someone on flexcoders asked how to make a menu like the one found here on Apple’s website.

Here’s the example I came up with to do this:

This movie requires Flash Player 9.

The Accordion
This is a Flex Accordion component (well, sort of…). It’s actually a slightly modified Accordion. The cool part is that FlexLib already had a modified Accordion component because I had made the Horizontal Accordion. Because of that there has been a VAccordion in FlexLib as well, which up until now has been exactly the same as the normal Accordion component in the framework.

So I added a new property to both VAccordion and HAccordion called headerLocation, which allows you to specify where the header should appear relative to the content. For VAccordion this property can be either “above” or “below”. Using above means it works just like the normal Accordion. But now you can also specify below, which will render the header below the content, which was the first requirement for this example.

The header renderer
The next problem was that the header of the Accordion needs to be more complex than a normal button. It needs to show two text fields, one for the title of the header and one for the descriptive text. And the description needs to wrap on multiple lines. So as I blogged about previously, I used the CanvasButtonAccordionHeader in FlexLib to easily use a complex header on an Accordion.

The header skin
Next we have the problem of the skin for the button. The skin isn’t too complex, but there are a few things that are hard to do with the standard Button skin. We want rounded corners on the bottom of the button but not the top. And we want nice control over the gradient of the button. What to do? FlexLib has an EnhancedButtonSkin that lets us do all this (and a lot more). Problem solved.

The mouse interaction
The menu we’re trying to emulate responds to mouse over events, not clicks like the normal Accordion does. This is easy enough to fix by simply faking a MouseEvent.CLICK event any time we get a MouseEvent.MOUSE_OVER event. By making our headers dispatch these fake click events we trick the Accordion into opening the child when the mouse rolls over each header.

And there you have it.

View the example in its own window (view-source enabled)
View the source of the example

In the source I’ve bundled a version of flexlib.swc that includes the new headerLocation property for the Accordion components. This is because I haven’t yet released an updated distribution zip on the FlexLib project page that includes this update (but I did commit the changes to SVN if you’re using that).

Standard