July 20, 2008
Reading Flexcoders Again
We have to learn to manage information and its flow. If we don't, it will all end up in turbulence. -Grace Hopper in Prioritizing Information
About a year ago, I stopped reading flexcoders. The mailing list had become turbulence for me, something I couldn't keep up with and which I decided to stop trying to. I thought the blogs I was reading were better for learning the latest on Flex, and so I prioritized flexcoders so low on my technology reading list that it fell off.
I've started reading flexcoders again, and I'm really enjoying it. There's a lot of code to look through for features that I haven't played with, more than I find on blogs. Gmail makes sure that everything is nicely threaded, and so I can manage things better and skip most of the threads.
I've already gotten some payback for the reading through a message by Doug McCune (who I hear is co-writing a new book about Bharathanatyam dancing). It made me think more about what I write about here, that I barely ever write about the things that I'm actually working on. I haven't had a single post on advertising, Cairngorm, functional testing, or the other things I deal with daily. It's something for me to work on, along with adding more code examples.
I just checked to see when I first posted on flexcoders, and it's four years ago, writing about RemoteObject's support for AS2. It doesn't feel that long ago!
July 13, 2008
Six Tools for Flex and AS3 Development
Here's tools that I use for Flex and AS3 development:
1. Flash Switcher for switching between Flash players. Actually, I don't use this tool yet, but I plan to start using it soon. I just installed it after reading Oliver Merk's post on it.
2. Charles for looking at HTTP traffic. If you aren't using Charles, Service Capture, or something similar, you should download one of them now. It's extremely useful for daily debugging. Charles has some additional features that I like to use, like the ability to test a SWF from a remote location.
3. tail for viewing flashlog messages. I know there's a lot of GUI flashlog viewers out there, but I find that all I need is a window open with "tail -f flashlog.txt".
4. FlexSpy for inspecting component properties. I don't use it as often as I expected, but it helps to pinpoint components in new code and make design changes.
5. FlashMute for keeping me sane. This is a tool that's really helpful if you want to keep your computer unmuted but work on any Flash applications with sound. Especially if that sound is the same thing, over and over and over.
6. And, of course, FlexBuilder 3.
Any good tools that I've forgotten? What's your list?
Don't Use IFrames for HTML in Flex
The iframe solution to HTML in Flex has become a popular, unsupported way to embed HTML inside of a Flex application. I've written a lot about this, but I've never been very comfortable with the solution. I feel it's time to gather up all the information I've learned and start steering people away. I'll provide some potential alternatives to iframes at the end of the post.
About the IFrame Approach
The use of iframes is very clever- by using a special windowing mode of the Flash Player as well as an iframe, you can layer HTML on top of a Flash application. The HTML is completely separate, and so there's ExternalInterface communication that goes on between HTML and Flash.
The iframe approach is something that Christophe Coenrats came up with, which I ported to Flex 2, and which others have run with to make more versions. The other solutions include Alistair Rutherford's version and the commercial HTMLComponent.
What's Wrong with IFrames
So why shouldn't you use the iframe approach, if you can help it? Because of the setting of the wmode to opaque.
Just Everett wrote an excellent post on this a few years ago where he outlined three problems:
"1. Speed: There is no big surprise here, but when you force Flash to composite the HTML layers above and below, you are adding additional processor load.
2. Accessibility: wmode makes your movie invisible to screen readers
3. Inconsistent Performance"
I've had some experiences with the transparent wmode myself, which is when I started looking into this more again. I went back and looked at the comments about the iframe solution, and I noticed a lot of problems with the opaque wmode:
"Ctrl-Click" events are affected causing components such as the DataGrid to experience problems in FireFox. In this case, the DataGrid loses its ability to do a multiple selection of rows.
"..using "wmode=opaque" on Firefox(Win)leads to trouble like not working mousewheel and not accepting of special characters like "@" of flex2 textinput component.
"The content inside IFRAME gets a very annoying flicker effect which renders this approach into totally unusable under Mac OS 10.4 / Safari 2.0."
"...but some of the iframe content disappears until one of the flex controls gets the focus, at which time it all comes back. Very strange."
The many problems listed above, along with the troubling fact that they are browser-dependent, means that I don't feel comfortable recommending the iframe approach. I can see using it in special circumstances when you understand all of the limitations. But in general, I would use one of the alternatives below.
More on the Opaque WMode
The opaque wmode changes how the browser and the Flash player work together. It's a fairly fundamental change which causes a number of browser-dependent problems. You can read more general information about wmode in this communitymx article.
If you'd like more technical details on wmodes, you can read about it in Tinic's article about the new gpu wmode. He writes:
"opaque: Somewhat esoteric, but it is essentially like transparent, i.e. it is using DirectDraw in Internet Explorer. But instead of compositing the Flash Player just overwrites whatever is in the background. This mode behaves like normal on OSX and Linux."
Solutions to the Problem
If you don't want to use the iframe solution anymore, what's the alternative? There's four different directions that you can go in:
1. Translate HTML tags into Flash
Alex Harui has a partial solution to this, and OSFlash has a whole browser in Flash. I haven't tried either of these, but they look promising.
2. Use AIR
If you can switch to an AIR application, see my post on creating HTML in AIR.
3. Don't layer HTML and Flash
Try to completely separate the HTML and Flash areas on the page or use a link instead of embedding HTML. Most likely this is something that was already considered and discarded, due to non-technical constraints or ease of development. But it's something to consider again.
4. Get a solution from Adobe
This isn't a short-term solution, but it may be possible to have a world where an opaque wmode doesn't cause any problems. I doubt it, though, because it could be problems within the browser instead of problems inside of the Flash player. See this Flex bug for a request for a supported iframe component and judah's post for a list of wmode bugs.
Update: check out the comments for a discussion between the creator of HTMLComponent and myself.
July 8, 2008
Flash Versions of Lua, Ruby, Perl, and Python?
Scott Petersen gave a talk at Mozilla where he showed off "C-compiled versions of Lua, Ruby, Perl, and Python all running on the web in secure Flash sandboxes". There's other goodies, including a Zelda mention, in the link above. Or see this previous post for more links on C and C++ via ActionScript 3.
I wonder what the chances are for this all to get released, given the "native byte array that maps directly to RAM" and anything else that needed to be added the player to get this to work? It certainly would change Flash development dramatically, making a lot more developers interested in the Flash ecosystem. I also think it's something that Adobe would use to bring a lot more applications onto the Web, given the company's history in C and C++ development.
Flash Job In Flashlog
This wins for the most creative job posting I've ever seen, certainly better than my Brightcove top ten list a year ago. (Although Brightcove is where you should apply of course.) If you view a blip.tv player, you'll see this:
Showplayer initializing...
__---__
_- _--______
__--( / \)XXXXXXXXXXXXX_
--XXX( O O )XXXXXXXXXXXXXXX-
/XXX( U ) XXXXXXX\
/XXXXX( )--_ XXXXXXXXXXX\
/XXXXX/ ( O ) XXXXXX \XXXX\
XXXXX/ / XXXXXX \_ \XXXX----
XXXXXX__/ XXXXXX \_---- -
---___ XXX__/ XXXXXX \_ ---
-- --__/ ___/\ XXXXXX / ___---=
-_ ___/ XXXXXX '--- XXXXXX
--\XXX\XXXXXX /XXXXX
\XXXXXXXX /XXXXX/
\XXXXX _/XXXXX/
\XXXX--__/ __-- XXXX/
--XXXXXXX--------------- XXXXX--
\XXXXXXXXXXXXXXXXXXXXXXX-
--XXXXXXXXXXXXXXXXXX-
(128)
Hello there, Flash cowboy!
If you can read this message, you should apply for a job at blip.tv.
Send an email to careers@blip.tv with your resume and make sure to
let us know that you saw this message.
Love,
The blip.tv dev team
Very amusing. Flash video players seem to have a habit of leaving amusing messages.
Posted by Brian at 7:07 PM
| Comments (0)
| TrackBack
July 6, 2008
AIR Conversion of the IFrame Demo
I've converted the iframe demo found in the HTML in Flex post into an AIR demo. In this post is a badge to install the application, a link to the source, and a list of the differences between the two versions. A badge to install and run the application is on this separate page until I can figure out how to get Movable Type to stop entitizing scripts. You can also view the source of the demo here. The AIR HTML demo shows how easy it is to switch from using an iframe to mx:HTML. Of course, it may not be easy to convert some of the particulars of a large application or to convince your boss to use AIR, but the basic conversion only takes a few hours. Here's what had to change from the iframe demo:- The IFrame component has been removed and is simply replaced with mx:HTML. The 'source' attribute changed to 'location'.
- No HTML wrapper file is needed, since this is an AIR application. But an AIR badge, not included in these source files, is used to launch the AIR app from a web page. You can find the source to the badge that was used on Adobe Labs.
- Application changed to WindowedApplication, as is needed for all AIR applications.
- HTMLDemo-app.xml was added, the AIR configuration file.
- Cleaned up the MXML, moving code into functions.
- Used the HTML events to show a busy cursor when a page is loading.
- Added back some sites that didn't work in the Flex version.
- Added Wacky HTML mode for the fun of it, to show how easy it is to change the display of HTML in an AIR app.
June 19, 2008
Flex Compiler Resources
The Flex Compiler Design Document has generated some more interest in learning about the Flex compiler. Here's some resources to learn more:
- I've written a little bit about the compiler myself in two posts (here and here).
- You can always ignore all the documents and just go straight to the source to investigate more.
- It's helpful to watch the commits which will show you what's going on with the Flex compiler and framework. There's a way to see the diffs from these commits that I don't remember offhand, but I can look it up if anyone is interested.
- Clement Wong has an excellent blog on the subject, including info on a RPC version of the compiler.
- To see one custom addition to the code, check out Joe Berkovitz's code coverage tool, which had to modify the compiler.
June 9, 2008
Please Ignore the Blog Mess (aka Want a Freelance Job?)
So I haven't played around with the design of this site in a long time, and while it's a pain to do in Movable Type, I figured it was time to do some damage. Apparently I did a little too much damage while watching the Celtics game tonight, as I managed to completely mess up my setup.
I had a backup, but Movable Type's odd linking structure has left me with a few missing files. So now I'm stuck with an odd-looking blog until I find the time to fix things. It's better than the default look, as long as you don't look at the bottom of the front page. (You looked, didn't you?)
On the subject, if you have or know someone with the following four characteristics:
- CSS knowledge
- know Movable Type or are willing to put up with a wacky templating system
- a good knack for design
- free time
Send me an email at bdeitte at gmail dot com with your rates. Obviously I can't spend a fortune on a free blog, but with my lack of time, I'm more than happy to pay for someone else to clean up my mess (and then make it much better).
Ignoring the ResourceBundle Deprecation Warnings
I understand that ResourceBundle has a lot of deprecated methods in Flex 3, but getting a few thousand warnings like this gets annoying:
"3608: 'getString' has been deprecated since 3.0. Please use 'ResourceManager.getInstance().getString()'."
I tried turning this off by setting show-deprecation-warnings to false until I noticed that this setting doesn't really work in Flex 3.
So I created a SWC which has a modified version of the ResourceBundle class. Yeah, I could have also monkey-patched the ResourceBundle class, but putting it in a SWC was helpful in my situation. I know these have to be changed eventually, but it's a slow conversion from Flex 2. Feel free to use for your own ignoring-for-now purposes.
May 29, 2008
Learning About Flex 4 Through Commits
I've really enjoyed having access to the Flex SDK subversion commits, so that I can see the actual changes going into Flex 4. I have an email subscription to the commits, which I read over when I find the time. I've seen a couple of interesting things go in:
Watchpoints for debugging
Compiler performance improvements
A new Flash format tag, DefineFont4, and generation from OpenType CFF font files
One gripe, however, is that it's obvious from the level of commits showing up that not everything is visible. The team must be working off of a branch, as there's not nearly enough activity showing up for the Flex team. Hopefully they'll change this practice soon and start using the public branch.
The Making of a Platform with Adobe Technology
Brightcove is using Flex and Flash in many significant ways to make a video platform, and I thought it'd be interesting to some people to share some of the uses. I can't share a lot, but I can take the information from a keynote presentation by Ashley Streb at Webmaniacs 2008. You can also see the full presentation embedded at the end of this post.
The scale of things at Brightcove is something that drives a lot of what happens with Flex and Flash at Brightcove. From the slides:
135 Million Unique Users/month (as of 6 - 9 months ago) 1.5 Petabytes (1,500,000 GBs) of media delivered/month Thousands of platform users, hundreds of major media brands, 50 television networks, newspaper and magazine publishers, and all the major record labels in the US.
All of these users and media go through the Brightcove players, which have AS1, AS2, and AS3 versions in hundreds of different permutations. Some of the data on the AS3 versions from the slides:
ActionScript 3, AVM2 AMF3 as client/server communication protocol ~70K LOC written
There's nothing too surprising in there, but there's some more interesting size information in the slides. Keeping down the size helps the performance, and there's been a lot of work by Todd Yard (and others) on making the players faster and faster for the 135 million (or whatever the current number is) users.
The players and videos are managed by manager applications that were created with Flex. When some of your customers have thousands of videos and thousands of playlists of videos, the management becomes... tricky. The slides touch on some of the ways this happens:
AVM2 Structure server API; initial view, lazy load, different types of DTOs Make clients intelligent about their needs Datagrid presentation strategies
I'm sure there's some questions on some of the above, like the datagrid presentation strategies, but I'll have to expand on them another day. These business applications have some other data points on them that I can share:
Flex 2, AVM2 Flex vs. ActionScript vs. DHTML AMF3 as client/server communication protocol Cairngorm as micro-architecture ~100K LOC written, 150 Commands FlexBuilder as IDE/Developer Tool FlexUnit for unit testing Homegrown integration tool
There's a lot more in the slides below, including info about Brightcove as a service, code layout, the use of Scrum, our Java setup, etc. If you'd like to hear more about any of this, just comment or send me an email.
April 13, 2008
Random Compiler Thoughts, Part II
I went to the first Boston Flex User Group meeting last Tuesday, and I took some notes through Pete Farland's presentation. This is more of a ramble on the compiler than on the presentation (similar to my previous post on the compiler), although there's a few pieces from the talk below. You can find the PDF for Pete's presentation on his blog. If you want to understand some of comments about the compiler source, you should grab the SDK source from opensource.adobe.com.
The general talk about the compiler made my mind wander on to SWCs. The SWC format is centered around catalog.xml, a file you can find inside of the zip file which is known as a SWC. Using any normal unzipping tool, you can check out catalog.xml and see the components (what the MXML compiler looks for), classes (for the AS compiler), assets (used by Flex Builder mostly) and features (used by no one). All of this is processed within the flex2.compiler.swc package in the compiler source. The entry-point, flex2.tools.Compc, corresponds to compc. As an amusing aside, compc was supposed to be a placeholder name, something temporary that I submitted until a real name was chosen. So much for temporary, eh?
ASDoc was briefly talked about, and while looking at the ASDoc Java source will only given you heartburn, there's some other interesting asdoc files to feast upon. The asdoc directory contains a huge number of stylesheets and HTML files which I've never really understood myself. But they're all there for a purpose, and you can play around with these files to completely change the look of your documentation. You don't need to check the source to do this, since it's a directory in the regular SDK as well: asdoc/templates.
Pete turns off "Build Automatically", and it's always interesting to hear who keeps this turned on or off. (I turn it off.)
There was a question about native code in the Java code. There's no native code in the Flex compiler, but there is Adobe code that isn't released as open source within jar files. I know there's some font code in there, and probably other pieces as well.
Data binding does a lot under the covers and produces a sizable chuck of extra code. Joe Berkovitz has written about some potential improvements to this on the compiler mailing list.
Pete showed a little-known trick for debugging bindings.
As the discussion went on to classes getting linked in, I wondered about something that I had a discussion about last week, which is whether there is a way to rip out methods within the AS compiler. Given the node transversal in Evalutators within the compiler, it doesn't seem like it'd be too difficult to simply have specific FunctionNodes ignored. I haven't asked any of the AS compiler folks about this, though, and I have a feeling it's not really that simple. But if you could rip out the right methods, then you more-easily remove parts of the framework you know you don't use in a better way than monkey-patching. Or you could take a stab at what isn't used by using a code coverage tool and unit tests to remove methods.
Pete mentioned that turning off optimize is a way to speed up the compiler. You can do this by setting optimize=false, but I didn't noticed any real difference in the current project I'm working on. It would make sense to me that this would speed up compiles, but I just don't see much of an effect. The optimization code, for those curious, is in flex2.tools.Encoder (for merging ABC blocks) and macromedia.abc.Encoder (for ActionScript peephole optimization).
Pete went over a lot of other things that what I rambled on within this post, but that's it for my notes. After the presentation, I saw Joe Berkovitz talk with Paul Reilly about the profiler and show a preview of his fantastic code coverage tool.
March 31, 2008
Code Coverage in AS3, ECMAScript 4, and More
Here's a grab-bag of links, with the first one being the most well-known on the Flex blogs. I still wanted to link to Joe Berkovitz's post on code coverage in AS3, because I'm excited to see this getting done (and someone making some interesting changes to the compiler). But I don't have much to add to the discussion. Go read Joe's blog for all the good details.
A new draft of ECMAScript 4 is out, and the mailing list is getting filled with interesting posts on the final proposals. Check out Insurrection, a thread which contains a thoughtful critique of ECMAScript 4.
I don't see anything interesting happening yet in the commit logs for Flex, but they're fun to watch again.
Nearly as much fun as the commit logs is seeing random new developments in all corners of the Flex world. I don't keep up with a good fraction of the blog posts on Flex anymore, so I'm sure I'm missing a lot of things like an Emacs mode for Flex.
The Boston Flex User Group
The Boston Flex User Group starts a week from Tuesday at the Adobe office in Newton. Find out more at the it's-just-missing-drop-shadows homepage.
There's already a lot of other groups that touch on Flex already- Boston Flash Platform User Group, Boston Design Patterns Group, Adobe Boston User Group, Flex App Incubator Group, and Boston ColdFusion Group. Until I typed them out, I had forgotten how many groups there are. But it'll be excellent to have one that's just focused on Flex, and I know there'll be a better chance for a lot of people to talk with the Flex team, given the location.
March 10, 2008
Decompiling AS3 and Random Compiler Thoughts
When the Flex compiler was open sourced, I wanted to get my hands dirty and make a change or two myself. In the first week I dug into the source and looked to make a change to decompile (or rather disassemble) AS3. Of course, after I'd dug into things I realized that Adobe has already done this. And someone created an AIR app. And a commercial decompiler. This is what I get when I don't keep up with my blog reading.
While I didn't end up making any changes, I'm going to give a partial explanation of this code.
The entry-point for the AS3 disassembler is flash.swf.tools.SwfxPrinter. If you take a look at this class, you'll see a method for each tag that needs to be handled, with each method taking in a Tag class. These correspond to the different tags in the SWF format. The one that is of interest for AS3 decompiling is DoABC. (To be pedantic, we actually use the DoABC2 version of this tag, which is a bit confusing, but the original DoABC tag was never released.) This is the tag which contains ABC, the compiled AS3 that the Flash Player runs. Going back to SwfxPrinter, you'll see the DoABC method takes this bytecode and through the magic of AbcPrinter prints out all the operations.
I assumed that the SwfxPrinter would work by parsing Nodes and not directly work from the ABC. As explained above, the ABC is what's actually in the SWF, and it's contained within a DoABC tag. The Nodes are an abstraction of the bytecode that the AS3 compiler uses. It's what is generated within the compiler when you first compile an application, but there's also a way to get Nodes from a finished compilation. You can see this in action within the SwfxPrinter.doABC() tag. Within the showActions code, you can see how the ABC is turned into the top-level Node, a ProgramNode, which then can be printed out via the PrettyPrinter. I tried enabling this code myself, and it doesn't work very well. There's a lot of missing pieces to the output, so apparently everyone should keep using the existing path of parsing the ABC bytecode for printing.
That's a little more insight into the class used for AS3 disassembling, but it doesn't even touch the real work in decoding the ABC format, TagHandlers, etc. There's always plenty more to learn in the compiler, and hopefully I'll be able to blog more in the future about the parts that I know.
We were talking about the compiler and ideas for improvements at the last Boston Flash Design Patterns Group, where we stopped talking about design patterns for a week and instead talked about the Flex compiler and the need for more comments. People wanted to know the easiest places to make some changes, and I couldn't come up with much. There's some jumping-off points in flex2.tools.Compiler or flex2.tools.Compc. Changing a Transcoder could be interesting, or adding one to the list in flex2.tools.API.getTranscoders(). If you'd like to try something for fun, you could always alter Grammar.jj to change the core of MXML. Daniel Rinehart is looking at making a change to the compiler, and it's going to be interesting to see all the changes coming in from around the community.
Update: See Random Compiler Thoughts, Part II for more info on the compiler.
March 9, 2008
Nevermind This Post
I've been looking again at Ted's post on Extending Adobe Flash Player and Adobe AIR with C and C++ via ActionScript 3 as well as the video on Quake on the Flash player. I had a long post written, giving my guesses on what's happening. And then I did one last search and realized I missed a great interview by Ryan Stewart, where most of my postulations have real answers. So nevermind.
February 25, 2008
Open Source Flex Compiler
Flex 3.0 and AIR 1.0 are here. Congrats to the teams, and I hope they're all getting some sleep now. Even more interesting to me is the open sourcing of the Flex compiler and framework. It's something which may get lost in the shuffle today, especially without a lot of developer documentation out there yet, but there's a lot to dive into.
Once you get the source, you'll have Eclipse project files in the 'development' folder. You can compile easily and start seeing what you can break. I was just poking around, and I'm remembering a number of interesting files to look at:
flex2.tools.Compiler, the entry-point for mxmlc
flex2.tools.Compc, the entry-point for compc
flex2.tools.flexbuilder.*, the interface to FlexBuilder
flex2.compiler.as3.EmbedEvaluator and flex2.compiler.*Transcoder, the heart of Embed
*.vm files like flex2/compiler/binding/BindableProperty.vm for some interesting codegen
flex2.linker.FlexMovie, the confusing guts of the Flex SWF
I see something I'm going to look at already, a simple change I'll try to blog about this week.
February 4, 2008
Vote on Some Deferred Bugs Today
Sure, if you're in one of 24 states in the US, you should do your civic duty and vote today. But the real voting is going on in Super Tuesday Flex Voting. Adobe has fixed JIRA so that you can vote on deferred bugs, so vote early and often. While Matt's request is for a specific group of bugs, see my previous post on voting to get a full list of bugs.
January 17, 2008
The Most Voted For Bugs in Flex
I just read Matt Chotin's post on Addressing Bugs in Flex, and I love the fact that Flex is so open. Unfortunately I don't have a teddy bear to give to the team, but I can give something to the community: a better way to see the most voted for bugs.
You may have already seen the "Popular Issues" tab in each project, but there's two problems with this view of votes. It's missing the deferred bugs, and it only shows the votes for one project at a time. You can fix both of these issues through a search and sort, but it's not immediately apparent that you can do this in the bug base.
Use this search to see the most voted for bugs. The most voted for bug, by the way, is design view for Linux.
With the search above, you can't see the number of votes in the main search listing. This can be fixed, however:
1. Log In, if you aren't already. After you log in, you should be back at main search listing.
2. On the right-hand side, click on Configure your Issue Navigator.
3. Next to Add New Column, select Votes, and click Add.
4. Go back to the main search listing, and you'll see the votes in the last column.
Matt said that not much is going to be fixed for Flex 3, but that's just a better chance to vote for big items for Flex 4. I have a humble suggestion for a place to put your votes: more refactorings in Flex Builder. A co-worker at Brightcove, Adam Brod, created a group of bugs on this that await your vote.
Posted by Brian at 10:00 PM | Comments (1) | TrackBackJanuary 7, 2008
FlexSpy, a New Tool for Design
When I took a trip into HTML/Javascript work last year, I had to make some pages look like a given design. I asked a co-worker at Brightcove, Leonard Sutton, to check over what I was doing. He took one look at my computer and installed Firebug. My CSS work changed completely after this. The Firebug extension has a few purposes, but the most useful function is the dynamic setting of CSS. If you hadn't tried it, it may not seem like a big deal to reload a page on every CSS change... until you've made a few hundred of them. And half of them don't look the way you expect. I ended up making almost all my CSS changes in Firebug.
Now Flex has a similar tool in FlexSpy (found on riapedia.com). Unlike riapedia, I don't think of this as a "component for developers starting to learn Flex" but rather as a component for anybody making a lot of design changes in Flex.
Before FlexSpy, when I got handed a design, I'd make a few changes, recompile, navigate to a component (or change code to navigate to it), see the design (which sometimes didn't look the way I expected), and start the process over. This gets very tedious very quickly. Now I can make a change with FlexSpy and see it immediately in the application.
Hopefully Thermo will make me very happy, allowing me to stay away from more of the design implementation. Until then, I'll be using FlexSpy.
I didn't see a way in FlexSpy to grab all the changed values, which would be very helpful. I'd also love to have shorter lists for the properties and styles, both a list of the most commonly-changed keys and a list of the keys I changed most often. But hey, it's an open source project, so I only have myself to blame if those features aren't there.
January 6, 2008
Future Features in AS3
After reading Keith Peters' post on singleton's and abstract classes, I wanted to see if there was more public information about the state of abstract classes in ECMAScript 4. As most readers of this blog will know, AS3 will be an implementation of ECMAScript 4, and some of the lack of features in AS3 is related to the state of ECMAScript 4. But that also means that we can peer into the future of AS3 by looking into ECMAScript 4.
I found a bug on bugs.ecmascript.org titled "Private constructors are useful, common, and need to be supported" and marked as Resolved. That's great to read, and it means that someday we'll have a real way to create abstract classes in AS3. (Update: that could be wrong. Read the comments below.) The word "someday" is important here, though, as ECMAScript 4 looks very large, and I doubt anyone knows how long it will take to implement it all.
ecmascript.org has a lot more information to dig through, such as the proposals section of the wiki. There's way too much to read here that's interesting, but here's a few that stood out to me: type parameters, resurrected eval, generic functions, and Meta-object. Just this small snippet of the proposals page includes information on generics, method overriding, and class reflection.
Write a Book on Flex?
I've been thinking about co-authoring a book, and so Jesse's recent post and Joe's response really interested me. I've been meaning to ask on here for awhile: any authors have any advice or suggestions? All comments, happy or bitter, are appreciated. If you don't want to comment here, you can send me an email at brian at deitte dot com.
December 16, 2007
Thinking About BlazeDS with Amazon ES2
With the current focus on Amazon's services (because of the release of SimpleDB) as well as the release of BlazeDS, I was wondering whether Amazon Elastic Compute Cloud (aka EC2) could be used with BlazeDS. I know that people set up Tomcat on EC2, and it'd be pretty interesting to start using BlazeDS on projects so easily.
Reading about EC2, I see that there's two ways to get data from your application, SOAP and a query API. The query API looks like it would work fine for getting AMF information from an application. I assume, however, that some changes some need to be made to Flex channels and adaptors to work with the request signatures required by Amazon? I don't know enough about EC2 or BlazeDS to answer this question, or to know whether StreamingAMFChannel would work. But I'd love see instructions on creating an Amazon Machine Image containing BlazeDS.
Sudden Flash Problems? Read About the Security Changes
If you're having complaints from customers about certain media not showing up or problems clicking on links, then I recommend reading about the security changes in Flash Player 9,0,115,0. Actually, I recommend reading the article no matter what, as there's a significant amount of changes.
I'm surprised there hasn't been more blog posts on this (although here's a recent one), as I generally keep up with mxna, and I haven't seen information on it. The changes caught me, and it'll be a good reminder to test new players while they are still in beta.
December 13, 2007
What's In Blaze DS?
So I'm not usually for the "me too" posts, but I'm excited enough to add to the blog overflow. The open sourcing of remoting and messaging is as big of news as the opening sourcing of the SDK. I won't rewrite what has already been said- see the posts by Christophe and Ted. But I couldn't find a detailed list of what's included in Blaze DS. I haven't paid much attention to Adobe Livecycle Photoshop Acrobat Data Service (that's the name, right?), and I don't know what comes with "remoting and messaging". Here's what I see from the examples in the download:
Sample 1: Accessing data using HTTPService
I assume this isn't just the HTTPService that gets the resource, but that it's using the HTTP proxy to get the resource. I know this piece pretty well, since I spent a long time working on it, way back in the day. It allows whitelists be set, simplifies some issues with data and the player, etc.
Sample 3: Accessing data using Remoting
AMF3 remoting, the piece that most people will be using, and which should need little explanation.
Sample 6: Publish/Subscribe Messaging (Data Push Use Case)
This is the "messaging" part of the release, and the part I definitely know the least about. It allows messages to be pushed to different clients with a minimal amount of work. The data is pushed with channels you can set up and use, both AMF and RTMP. And now there seems to be one more, "a new HTTP Streaming channel for real time applications that require very low latency." Exciting stuff!
Update: I assumed that RTMP was included for messaging, but according to a comment Dirk Eismann on Christophe's post, it isn't included. It looks like that's part of the reason the new HTTP channel was created.
If anybody has a more succinct list of what's included, I'd appreciate a link.
November 21, 2007
The World of ECMAScript
Here's a wonderfully detailed cloud of everything ECMAScript (found via Artima). From Artima's count, there's "eight different implementations of ECMAScript, sixteen ECMAScript engines implemented in six different languages, and many more applications that provide an ECMAScript execution environment." Not a big surprise, but Mozilla, Microsoft, and Adobe dominate the cloud.
November 19, 2007
Ask Steven Webster for Adobe At Your Doorstep
Ok, so not at your doorstep, but at your next conference's doorstep. I noticed in a post on flexcoders.nl this comment from Steven Webster:
"What are the advanced topics you would look for in a Flex conference ? There is an army of Adobe Consultants - some of whom spoke at MAX, but more of the places were given this year to the community speakers - who are ready, willing and able to deep-dive into Flex discussions, whether it be architectural, component-level, inspirational user-experience design talks or deep-dives into things like messaging with Livecycle Data Services. If anyone has an event where they’d like advanced (or even introductory) level Flex talks, then drop me a note and I’ll do my best to ensure we can provide speakers from the field to these events.
If you ask us, we will come."
So Steven, I'd like to formally invite you to the Brightcove Scotch Drinking Night In Boston, which involves Cairngorm-loving Brightcove employees and scotch. No? What if there were conference t-shirts? :) Did I mention the scotch?
More importantly, I see that Steven announced a code-coverage tool that Alex Uhlman is working on for Flex 3. I was hoping that the profiler meant that a code coverage tool was coming, but I never guessed that it would be this quickly.
November 18, 2007
Linking to External Source Folders in Flex Builder
One problem I've always had with Flex Builder is that I can't reuse projects which link to source folders outside of the main source folder. These external source folders are usually defined with an absolute file path, which makes the project files unusable by other developers without changes. And changes mean that project files don't stay in sync, which is just one more thing to worry about.
Usually, the external source folder is a folder for test files, but it can also be some folders that really should be in a SWC. In any case, the project file isn't sharable in the current form, and we all like to share.
I learned from some developers at Brightcove that there is a solution to this using a built-in Eclipse feature. First, you need to set up a linked resource:
1. In Flex Builder, go to "Window > Preferences".
2. Navigate to "General > Workspace > LinkedResources".
3. Within LinkedResource, create a new variable that links to the folder you want to include or some common base directory. Usually, you'd enter some base directory within source control that could be reused for more than one external source path.
Once you have the linked resource, you'll want to add a source path to your project. Right-click on the project, go into "Properties", "Flex Build Path", "Source Path". As normal, select "Add Folder", but don't browse to the directory. Instead, use the linked resource name, either by itself:
${LINKED_RESOURCE_NAME}
Or if it's a base directory, you can tack on directories:
${LINKED_RESOURCE_NAME}/my_source/location
OK it, and it's all set up. Then you can share the project file to other people on the team, or check it into source control. Each member of the team will need to define the linked resource, as shown in the steps above, but the project files don't have to change.
Posted by Brian at 6:47 PM | Comments (3) | TrackBackNovember 9, 2007
Aftermix wins a MITX
In front of 1000 people last night in Boston, Aftermix won the Massachusetts Innovation and Technology Award for Rich Media Application. Congrats to the whole team! I was the one person currently working on the project who couldn't be there, but the poster from the awards that greeted me this morning (a half-naked lady and a guitar) makes me think the ceremony was a lot of fun.
Of the five finalists in the Rich Media Application category, two of them (and maybe three) were Flex applications, which won't surprise anyone reading this blog.
November 5, 2007
Flex Camp Boston
If you're in the Boston area, check out Flex Camp in Waltham on December 7th for a mere $10. You'll see a number of folks from Brightcove there. It's being put together by Brian Rinaldi, and it has a bunch of people from the Flex team speaking at it.
Posted by Brian at 11:44 PM | Comments (0) | TrackBackOctober 13, 2007
I'm doing Javascript work now
It's been a bit too long since my last update, but blogging keeps getting pushed down on the TODO list. I have a long post on components in the works, but I wanted to post something else in the meantime to get myself back on the blogging horse.
So it's true that I'm doing Javascript right now, although it's just for a week before I head back to Flex-land. But it makes for a great headline, no? This past week, I delved into innerHTML and the rest of the Ajaxy world that I've never been in before. I did this to help create some HTML pages for work, and in the sprit of Scrum, this was a task that I volunteered for. I wanted to learn the basics, and it's been pretty easy to do so. One thing I've enjoyed in my scripting is the instantaneous nature of the changes- there's a noticeable difference between waiting less than a second and waiting up to five seconds to see a change. One thing I haven't enjoyed is, well, Javascript. I've been spoiled by AS3.
What else have I been up to, technology-wise? Well, MAX was not one of those things, although I really wish I could have gone. I didn't keep up with the mountain of blog postings last week, but I did read a lot of the great posts on Thermo. I'm waiting to see the code generation before I know how excited to get.
Aftermix is still going strong, and in time I'll be able to talk about some very interesting changes ahead. And Brightcove is going strong, with lots of big deals and news lately. Brightcove is a great place to work, and if you're a Flex/Java developer/QA looking for a job, send me an email at bdeitte at brightcove dot com.
September 16, 2007
HTML in Flex (Without the Extra HTML)
Alistair Rutherford has extended the existing component for displaying HTML in Flex, and unlike the previous work by Christophe and me, this component only needs one simple HTML change, handles multiple HTML windows, and figures out the visibility automatically. Great work that you can read about, see an example, or get the source.
Posted by Brian at 8:49 PM | Comments (4) | TrackBackSeptember 13, 2007
Invite-free Aftermix on Brightcove.TV
You can now play with Aftermix without an invite by going to the welcome page. It's still in beta, but let me know what you think. The welcome page will take you to the contests for Avril Lavinge, Mashers of Horror, and Big and Rich.
You may also notice that this is a link to brightcove.tv and not brightcove.com. You can read more about Brightcove.TV on the Brightcove blog or on Mashable.
Posted by Brian at 10:15 AM | Comments (3) | TrackBackAugust 21, 2007
The Future of Flash Video
Adobe just announced support for H.264 in the Flash Player.
What does this mean? For a short primer on H.264, see Apple's page on the subject. For the technical overview, check out Tinic's extremely detailed post. Now I'm not going to be able to sleep, as it's time to go read Tinic's post closely and salivate over the details.
August 19, 2007
My Slides From 360Flex
The slides from my presentation on Aftermix and Video at 360Flex:
You can also download the PPT from slideshare.com by going to their site and clicking on "Download file". The slides have a lot of notes in them, as I tried to keep the slides themselves concise.
Thanks to John and Tom for putting together a great conference. Thanks to effectiveui for the boxers that made me laugh when I finally saw the joke ("don't just focus on the backend"). Thanks to Jeff Tapper and Mike Nimer for getting a bunch of interesting folks together for dinner on the last night. And thanks to all the people who stuck it out for the last session on the last day to see my talk.
The End for JRun
I noticed last week that Adobe has finally announced the end of development for JRun. It was the first major product I worked on, for two years, and it taught me a lot about software development. Ten or so of the core development team for Flex came from JRun (although you'll now see a few of them in other places). The JRunners live on.
Junk Comments
I was just trying to catch up on this blog by answer comments in Using Resource Bundles in Flex and Embedding HTML in a Flex application when I had my new comment show up as a Junk Comment in Movable Type. Err, that's not good.
If anybody has posted on this site and didn't see their comment show up, please email me at brian @theurlyouseeabove.com or try to repost it. Sorry about that.
Also, if you're looking for the slides from my presentation at 360Flex, I should have them up here by the end of the day.
August 9, 2007
Aftermix on Mashable
Things have been very quiet on the Aftermix front lately, but if you have access to the beta, you should notice a few bug fixes today. On the news front, there was a lot of interest on Mashable for getting invites.
Want to hear more about Aftermix or about video in general? There's still space at 360Flex in Seattle next week. I'll be speaking at 4pm on Wednesday.
July 29, 2007
17 Thoughts on Scrum
Scrum is a development process most recognizable by its 30 day sprints. Brightcove uses Scrum for all of its development. I recently went to a course from Ken Schwaber for the exalted title of Certified Scrum Master (which comes with its own secret handshake). From my notes on this course, I've written some thoughts on Scrum, which are below.
The notes below aren't meant to encompass all aspects of Scrum. For a better overview, read the Scrum wiki page, get Agile Project Management with Scrum, or take one of Ken's courses (which I highly recommend if you can get your company to send you).
- ScrumMaster is a silly name on purpose to make sure it's not a Grand Title. ScrumMasters are there to try to help the team become self-managing.
- Scrum should be results orientated, not effort driven.
- If at all possible, start with the "right" way to Scrum and then customize later. Usually the changes that are requested show a problem within the organization.
- Team self-organizes as needed. Some teams won't need their own ScrumMaster in time and will only need the ScrumMaster to remove impediments.
- A common bad and wrong assumption is that by telling people how to do things, they'll work better.
- Don't make Scrum an iterative death march.
- Backlog shows the remaining time. Don't confuse this with time worked, which is simply not a part of Scrum.
- There needs to be one product owner, who can report to other product owners and listen to the team. One product owner leads to a single decision point.
- The team owns all aspects of development. It's not features owned by engineering, testing owned by QA, etc. There's not the normal functional groups as there is for waterfall but rather a shared "done".
- It's important to keep Scrum teams together, as they are much more effective in time. Also, after a few sprints, teams are better at determining their velocity.
- If a team is dependent on people external from the team, then it can't reliably commit to tasks.
- Scrum doesn't make a lot of sense for R&D or other open-ended experiments. This isn't to mean its not for prototypes but rather that its not really suited for basic research.
- Development often shows too much unneeded coding details to the business side without giving enough visibility into progress. It's the worst of both worlds.
- Development should give the risk to the product owner and not try to take on risk that isn't rightfully theirs.
- If we celebrate the amount that gets done, then the more done isn't done and future sprints slow down.
- There's no such thing as a failure of a sprint. There can be a failure of a product but not a failure of a sprint. What gets done has gotten done and the product owner will make choices based on the new reality.
- Expand on "done" so that tasks don't have later ramifications. Make sure everyone knows what "done" is.
July 25, 2007
Scamming in Au Bon Pain
While trying to finish my speech for 360Flex at Au Bon Pain, I witnessed one of the oddest things I've seen in awhile.
The whole second floor of the restaurant (the Au Bon Pain near MGH, for the Bostonians reading) was full of people trying to schedule interviews or interviewing potential "employees", people who mentioned they had no money and were looking for a second income. It's hard to explain, but it was like a scene out of Glengarry Glen Ross, trying to keep people on the phone for as long as possible, using every trick I could think of to get people to go to some conference. We asked an employee why all these people were allowed to run the place as an office, and they said they've had a lot of people complain and were talking with the police. But "they couldn't kick them out since they bought something", which makes no sense to me.
I'm a bit tempted to go back there tomorrow myself, but I don't see that I'll have time, especially since I plan to go to Joey Lott's talk at BFPUG.
July 8, 2007
Why 360Flex Seattle?
Unlike a year ago, there's a lot of conferences these days where you can learn about Flex. So why head to 360Flex Seattle?
Besides it being a Flex-only conference and having great speakers, the last incarnation of the conference should send you to this one. Was 360Flex San Jose the first Flex-only conference? I think so, and even if it wasn't, it felt like it. New and old Flex experts, large parts of the Flex team there (with Matt hitting me a few times), meeting pre-Adobe Ryan Stewart, beer, and good sessions.
So check out 360Flex Seattle. I'll be going and be presenting on Aftermix and its creation.
June 26, 2007
Aftermix, Invites, and Remixer
Ryan Stewart, who keeps growing on his uncanny ability to find stories, posted a link to the Aftermix invite form in a blog post last week.
We won't be allowing everyone into Aftermix for the short term as we still work like mad on the beta version. But I hope everyone still fills out the form to check this out, and I'll also be posting a way to make sure your request is selected. (And sorry but it won't be a Flex quiz.) There's also the invites at 360Flex.
Last but not least, a very late congrats to the team at Adobe for the Remixer app on YouTube.
June 25, 2007
Testing a SWF From a Remote Location
Recently someone taught me a neat trick with Charles. I had a SWF that was loaded in a much larger SWF and HTML page, but I didn't want to build these other pieces. I had access, however, to a testing site where the SWF/HTML pages were located, and with this I could use "Map Local".
Map Local allows you to map URLs to local directories. This means that you can test a SWF that should be on a remote site. It's incredibly useful for the large project problem I was having or for debugging problems on a live site.
June 11, 2007
My Flex Bugs
As you've probably already heard (even a half hour later, from the blog posts I just saw), Flex 3 is available for download and the bug base is now open to all.
I wish I had a little time to play with it, but it's a weekend and week of heavy Aftermix coding. I had to spend a few minutes, however, to run this amusing JIRA report:
Since it's been seven months since I worked there, that's a good indication of how open they are being with the bug base. And I'm excited to see how many of the bugs are fixed!
Unrelatedly, I keep meaning to write more about 360 Flex and my talk on Aftermix there. When I figure out what exactly I'm going to say, I'll write some more here.
May 23, 2007
Buzzword, FlexBox, and Transformers
Too much work and too little blogging. Here's a catch-all post to catch up on Flex things.
I've seen Buzzword, and... wow. Congrats to the Flex team there. I'm most impressed by the details, the way that little things just work.
The news is old, but I'll still point out that FlexBox has been updated. It's an excellent way to find new Flex components.
And related to FlexBox, since the IFrame component is on there, is that I've finally responded to the last month of comments on Embedding HTML.
And Transformers. What does Transformers have to do with Flex? I could make up a metaphor here about the versatility of Flex. Or make an awful joke about Flash being more than meets the eye. But really, I just wanted to be a geek and embed this:
The movie looks a lot like all the rest of the Hollywood action films in recent years, but it's Transformers. The ten year-old kid in me is very excited.
Lastly, as a non-Flex update, there was an update to brightcove.com last night, but I'll wait to post more on this, as I can't yet talk about any video mixing part of this update.
May 8, 2007
Details Leaking Out on Aftermix
Details on Aftermix have been slowly emerging, and Anthropomedia points to two of them in a post on Brightcove's Aftermix. For the MediaPost video mentioned, go to the 35 minute point to see Jeremy Allaire's demo of Aftermix. Or you can check out the early support video.
I can't comment on the blog post's questions on the underlying business model, but I can briefly comment on the blog post's suggestion that Aftermix is half-baked right now. We have a team here that includes people who previously worked on Flex, which is the development technology for Aftermix. This Flex group includes me, and you can also see that I went to Brightcove seven months ago. Hopefully I've been doing something since then. :) I wish I could say more, but that's for another day. In time, on this blog, you'll hear more about the fully-baked version.
As for the version of Aftermix shown in the videos, a lot has changed (and is better) in our local builds. To let out one detail, the tab navigator is gone. Those of us who have seen too many Flex applications that look alike will appreciate this.
May 2, 2007
Looking for More Flex or Flash QA (and Developers)
Do you want to test or develop a video player that's viewed millions of times a month? How about working on a brand-new video editor? Brightcove is looking for more Flex and Flash people to work on brightcove.com. We're looking for both QA and developers to work on Aftermix, the site's video player, and more.
Check out my previous post, Top 10 Reasons to Work at With Flex Brightcove, for some Aftermix-focused reasons to check things out.
You can ask questions or email your resume to work AT brightcove DOT com. And you can always ask me questions at bdeitte AT brightcove DOT com.

