Portraits : Joey Lott
<Francis> Hi Joey, could you tell me what was your background before discovering Flash ? <Francis> What brought you to Flash universe and what did you find so attractive ? <Joey> Luck/Fate/Life. Someone I knew went to an Internet conference and picked up a demo of Flash 2. At the same time, Real Networks and Macromedia were co-sponsoring a contest. The entries needed to use Flash visuals and Real audio synchronized in the Real player. I had an idea for an animation. I asked a friend to draw the characters in Illustrator. I then imported them into Flash and made the soundtrack. I entered the animation, but I don't think it qualified. Regardless, I had learned enough about Flash through that to keep using it. Flash 2 didn't have much beyond basic motion and shape tweens. But by the time Flash 3 came out, they had added a little bit more basic functionality. That was the beginning of the Flash e-card days. From my perspective, the neatest thing about Flash back then was getting it to do things it wasn't necessarily designed to do. For example, using Flash in conjunction with Jugglor (a product from FlashJester.com) I built a tracking system (with a ColdFusion backend) that could keep track of how the e-cards were getting distributed.
The last few versions of Flash, however, have really been quite
substantial. And I think that they moved the product in a great
direction (although I also think the implementation in Flash MX 2004
leaves room for improvement.) There's just so much in Flash these days
– what with Flash Remoting, Flash Communication Server, the ability to
create components, etc. It's a great tool for expressing yourself
creatively – including programming creatively. And you can definitely
see that in the Flash community. I mean, if you read the blogs and
mailing lists and such, there's just so much ingenuity going on. <Francis> Are you actually able to earn a decent income by writing books, making CD-ROMs, etc.? <Joey> Yeah.
I don't think you'd be wise to pursue writing computer books with the
express intention of making millions. While it is certainly possible to
earn some pretty decent money, I do it mainly because I like it. Also,
I get so many really nice emails and such from people who tell me how
much they appreciate the books and CD-ROMs. It's great to get that kind
of feedback and know that what you share with people helps them in some
way. <Francis> What are your current favourite Flash sites ? <Joey> I
don't really look at much on the Web. I use Google to find information.
And I sometimes browse through some blog aggregator sites. But not much
in Flash. There are some good sites out there, of course. But I think
that the best sites are the ones that don't need to be categorized as
"Flash sites". That is to say, there's something of value in subtlety
and understatement. If a Flash site doesn't scream Flash at you, but it
makes effective use of the technology, that's a good site. That doesn't
mean that the site cannot use animation and video and such. But if the
technology is used simply to show off the technology, then it is used
improperly. If the technology is used to facilitate a richer, simpler,
more intuitive and effective user experience, then it is used properly. <Francis> You just released a CDRom about ActionScript 2.0, could you tell us a bit more about it ? <Joey> Yeah. I think it's a pretty good title. It's an introduction to ActionScript in Flash MX 2004, including basic ActionScript 2.0 syntax and concepts. You can view the table of contents at http://movielibrary.lynda.com/html/modPage.asp?ID=76. Already I've gotten some nice feedback on it from viewers. The nice thing about the title is that it uses Quicktime movies rather than pages of text. So you get a chance to see what I'm doing on the computer, and you can follow along. And you can build some applications along with me. There's also a second title in the works. The first title is ten hours. So there's a lot of material in there – from basics like variables, for statements, and functions, to more complex things like working with text fields, CSS, programmatic animation, loading external content, and so on. However, there's just so much more to discuss with regards to ActionScript. So the second title is no-holds-barred. I talk about building ActionScript 2.0 classes, components, and so forth. I also recorded a ColdFusion title with Lynda.com. It too should be published very soon. <Francis> What will be your next book ? <Joey> Well,
Robert Reinhardt and I updated the ActionScript Bible for Flash MX
2004, and that book is in stores. Additionally, I've got a second
O'Reilly book that's in the works – the Flash Cookbook – that I've
written with Jeffrey Bardzell. It's a great book, and I think it will
be helpful to a wide audience. I'll also be updating the ActionScript
Cookbook shortly (a lot of people have been asking about that.) I also
contributed some chapters to the forthcoming Flash Communication Server
book from O'Reilly. And then I've been writing a Flex book along with
Chafic Kazoun. That book is also scheduled to be published by O'Reilly. <Francis> At this time what are the current projects you are working on ? <Joey> Aside
from the books and such? I've got a FlashCom-based project that I've
been producing with a small team. Until we publicly announce it,
however, I think we'll not discuss many of the details. I think that
will be announced in a few months, though. So maybe we can have another
interview about it at that point. <Francis> Do you practice any other languages except ActionScript ? <Joey> I
have a very high proficiency with ColdFusion. I also have working
experience with J2EE from when I worked at a company that was
J2EE-based. I can write pretty decent PHP. I also taught myself C#
enough to handle basic tasks. I think once you understand the basics of
programming, it's fairly simple to translate that to another
language...at least enough to get simple things accomplished. It seems
that it's helpful to have a rudimentary understanding of a handlful of
languages these days. However, with that said, I prefer ActionScript
and ColdFusion to most other languages. And I tend to use those two
most frequently. <Francis> Do you use some external tools to work like editors, unit tests, CVS, Project ... ? <Joey> I use PrimalScript to write ActionScript. Flash's ActionScript editor has never been spectacular, but the contrast of Flash MX 2004's editor and PrimalScript is just night and day. It seems to me that if you write much ActionScript, you should be using PrimalScript.
I have started using CVS for versioning. Even when working on a project
by yourself, it can be useful to have a versioning program. That way
you don't need to save incremental files, etc. I run CVSNT on my
computer, and I have TortiseCVS running as a client. I can also update
and commit files directly from PrimalScript. <Francis> Could you tell us what would be the virtual ten commandments of a good ActionScript developer ? <Joey> Yeah. I could. But I started writing them, and they sounded pretentious. So how about the two commandments: 1. Have fun. 2. Play nice.
I mean, let's not take ourselves too seriously. We're very lucky. At
least I'm very lucky. And I'd venture to say that most people reading
this are lucky – lucky enough to have Internet access at least.
ActionScript is a luxury. It is a gift. So have fun. And if you're not
having fun, then just don't worry about it so much. It's fun to pretend
like this stuff matters sometimes. But ultimately, it's just a game.
When people are laying on their death bed, I don't think they'll care
much about the RIAs they built, or whether it is better to use
inheritance or composition in their classes. Right? <Francis> Can you tell us if you use some design patterns to work with ActionScript ? <Joey> I've noticed that over time I rather intuitively started coding in a fashion very similar to MVC. <Francis> In two other interviews with Colin Moock I told i was really obsessed by clean encapsulation and reusability vs speed coding and speed process. What's the deal for you when you program in Flash ? <Joey> Well, I guess it's important to find a good balance. I don't think good object-oriented design should be a hindrance. If it is, then it's gotten too theoretical. The purpose of good design is to improve workflow, really. I know that in the past I've tried to create extremely extensible frameworks and so forth. That can require so much planning and coding to end up creating little more than nothing. But it seems that one key factor is keeping in mind the scope of the code. If you are building a game engine, then the classes need to function within the context of the game engine. They don't necessarily need to be applicable within a different context. Of course, ideally the classes are that reusable. But it's not necessarily realistic. And specificity and encapsulation are not really at odds with one another. You can write a class that is very specific to the project, and yet it can still demonstrate good encapsulation.
The primary factor in good encapsulation is: Is the API for the class
well-defined? I've seen classes people have written that reference
global variables, _root, and even specific data outside the class.
That's not good encapsulation because then changing something outside
the class can break the functionality of the class. The whole idea is
just that changing someone in the class doesn't break anything outside
the class, and changing something outside the class doesn't break
anything inside the class. <Francis> We know that you are a flash remoting expert, did you feel frustrated when you noticed that the new version of Flash MX didn't pushed forward this technnology ? <Joey> Actually, I'd find it interesting if most people knew me as a Flash Remoting expert…because it seems most people don't know about Flash Remoting. That's a loss for a lot of people because Flash Remoting is one of the coolest technologies related to Flash that's happened in the last few years. Flash Remoting completely changed the way that rich Internet applications could be built. Yet over a year later many people seem to opt for the WebServices class. And that's just because they don't know about or understand Flash Remoting.
I do what I can to make sure people get educated about Flash Remoting.
When I give presentations I talk about Flash Remoting. And when people
ask me about integrating Flash with the server-side application, I tell
them to use Flash Remoting. I explain that Flash Remoting is many times
faster and more efficient than the alternatives. But what I've noticed
is that even in the face of overwhelming evidence for Flash Remoting,
people are going to use whatever it is that Macromedia seems to
endorse. And it seems Macromedia is endorsing the Data components. It's
odd because I've seen so many posts around the Web about people not
able to get certain components to work in certain situations. For
example, people might have difficulty with the XMLConnector component.
The funny thing is that they're often trying to use the XMLConnector
completely with ActionScript. Macromedia has pushed the Data components
so much that people just assume they're advantageous. But in that case,
the person is likely better off just using the intrinsic XML class. I
mean, you don't have the 60KB overhead of the XMLConnector. Plus, the
XML class works. Sure, there are occassions when the Data components
are probably appropriate. But I haven't yet seen them. <Francis> Steven Webster announced Macromedia will release AS2.0 remoting components soon. Will you release a new version of yours? <Joey> I
don't think so. Those classes were intended to provide people with an
ActionScript 2.0 Flash Remoting library. And it seems that they have
worked well for a lot of people. Once Macromedia releases their
ActionScript 2.0 Flash Remoting update, there will not be a reason for
me to duplicate their efforts. Of course, the library I wrote/ported
will continue to be valid. So no one will have to stop using it if they
prefer it. However, the Macromedia update contains a new API. So those
people interested in working with the updated API will need to use the
Macromedia version. <Francis> You was were the first one to write nice and efficient tutorials about AS 2.0. Today what will you answer to people like Branden Hall who says that's a waste of time because it all compiles to the same bytecode ? <Joey> Well,
everyone has their opinion. I've not actually discussed Branden's
comment with him, so it may be somewhat out of context. However, I
would say that I prefer writing ActionScript 2.0. Also, consider
something like .NET – You have a choice of languages, including VB.NET
and C#. Each gets compiled to the same bytecode. So why choose one over
the other? Well, to many people C# is just a better choice. And to many
people, ActionScript 2.0 is a better choice. <Francis> What's your feeling about Central, did you geot time to play with it? <Joey> I've
only used Central very briefly. It seems, as with many Macromedia
initiatives, that Macromedia has yet to really make it clear what it is
that Central does. Who's supposed to care, and what are the reasons for
them to care? I'm not saying it's a technology without merit. But from
a marketing standpoint, what are the compelling reasons for developers
to create applications and users to purchase those applications. It's a
novelty currently. So people are using it because it's something new.
But when the novelty factor wears off, what then? Will it endure? The
sometimes-connected model could be a selling point. But then again,
maybe not. <Francis> Are you interested by the new Macromedia technology called Flex? <Joey> I've used Flex quite a lot so far, and I think it's a good technology. It's still a 1.0 product at this point, but it has a lot of potential. If you want to build certain types of applications, Flex is much faster and more efficient than building the same appilcations with Flash. But at the same time, Flex doesn't replace Flash. I think the two technologies are complementary, and it might be interesting to see how they start to merge (if they do.) Macromedia is marketing Flex as an enterprise application devlopment platform. While that may be an appropriate use of the technology, I think it also has a lot of potential in the non-enterprise application arena. So many people struggle to use Flash to create simple applications because they don't have the ActionScript skills. Flex would help those people build the applications effecitvely and quickly with just a few lines of MXML. Currently, however, the pricing model for Flex pohibits that kind of thing from happening simply because not many people are going to shell out the $12,000. However, I think that if Flex was deployed in some shared hosting environments, it would help the popularity of Flex.
There's also been a lot of talk about a standalone compiler version of
Flex – a version that compiles SWF format from MXML documents. The SWF
content could then be deployed just like any normal SWF content. That's
not likely to happen from Macromedia right away. But it could happen in
the next few years. <Francis> Are you interested by the new JFSL format and Flash extensions developpement ? <Joey> I
haven't yet done too much with JFSL. However, I have put together a few
things, and I think there's a lot of potential there. The one drawback
to JFSL is that it is slow. Also, the API is somewhat daunting to most
people, I think. Keith Peters just wrote a book on JSFL that looks
pretty good. <Francis> Mx 2004 introduced the new v2.0 components architecture. We discussed many times together about the pros and cons. Could you express your feeling about this new framework and maybe explain which problems did you encounter, because i know you did. <Joey> * They look nice. * I like the event listener model. In fact, I use the event listener model for a lot of my custom classes as well. Cons: * Huge filesize. 27KB for a progress bar? 27KB for a loader component? And how about the components that are over 60KB? It's not really just about filesize. It's about needless filesize. There's just not a reasonable explanation for the increase from v1 to v2 components. * Buggy. There are just a lot of issues that you either have to work around or for which there simply is no known workaround. * Styles are a) undocumented, b) unintuitive, and c) inconsistent, and d) some of them don't even work. * They initialize differently if you add them at authoring time or runtime. * They significantly increase the compile time. <Francis> How do you feel with Macromedia's EULA, do you think like Grant Skinner it should be changed ? <Joey> Macromedia
updated the EULA. I think some people are happy with it, and others are
not still. It makes sense from Macromedia's standpoint, I guess. They
created a more expensive version of Flash. That version is distiguished
from the regular version to a large extent because of the components it
contains. If anyone can distribute files with the components, then
anyone could, in theory, use the components without purchasing Flash MX
Professional 2004. I think it's rather silly, still. But a lot of the
things companies do are the equivalent to shooting themselves in the
foot. It's just conjecture, but I suppose it could be due to upper
management making decisions while knowing little to nothing about the
community. <Francis> For the next version of Flash, which features do you expect the most ? Any whishlist ? <Joey> Well, it would be nice if they would work on making things work. Flash MX 2004 has a lot of terrific features. The only thing is that for the last few versions they've just been plowing ahead with new features without making them work. So subsequently many of the new features have room for improvement and older features don't get fixed either. Some of the main things that I think should be addressed in both the authoring tool and the player are: * In ActionScript 2.0 classes the getters and setters should initialize as fast as regular methods and properties. I haven't tested it thoroughly enough to determine what scenarios cause it, but sometimes getter and setter methods are not accessible right away – they take a few milliseconds. That can cause your code to fail silently – leading to potentially hours of debugging. * Better debugging. The debugger is hardly worth using. The NetConnection Debugger is pretty decent for Flash Remoting and FlashCom applications, but it does provide you with a very robust solution for debugging the entire application. Frankly, I've written my own debugging class and .swf that uses LocalConnection, and even as simple as it is, it provides a better solution than the resources in Flash currently. * Compiler. It's slow. Ten seconds might not sound like much. But it's a lot when you're exporting the .swf once a minute sometimes. * Components. The v2 components are a good start, but they can definitely be improved upon. For example, maybe the size issue could be sorted out by caching components. There's been some talk of that, and it makes sense. Basically, the component is downloaded the first time it is used. Then, any time that component is used in any other .swf played on the same computer, it is retrieved from cache.
* Behaviors. Frankly, I wouldn't use behaviors, nor would I teach them
as a general practice. However, I see that there is potential value in
behaviors for many people. Some people want to add basic interactivity,
but they don't want to have to learn to code. That's fine. And
behaviors are intended for that purpose. The thing is that while the
behavior concept is a good one, the actual implementation out of the
box is pretty terrible. I think Macromedia has even said as much. One
thing that I think would be beneficial would be if the code that
behaviors generated would follow best practices and give beginning
coders a good example. The whole on(){} and onClipEvent(){} handler
thing is just not a good example. <Francis> What's your vision of Flash in the future, do you think we'll manage to break "the advertising banner and skip intro" nightmare. Can you imagine Flash developer status will stop making laugh ? <Joey> I think each group tends to get isolated in their own niche, and they disregard most of what else is going on. It's a fear/survival instinct, in a way. So I don't think that .NET developers or J2EE developers (or whatever group you want to choose) are likely to take Flash very seriously for the most part. Or maybe they will. But either way, it's not anything that anyone can really predict. It would just be a guess. So it seems to me that people in the Flash community would be better off if they stopped vying for recognition and validation from other groups. The
other thing is – there are probably going to continue to be plenty of
bad uses of Flash. That's one of the benefits of living in this world –
people can make whatever they want with Flash, and for the most part no
one's going to stop them. There aren't design police so far as I know.
And there are plenty of clients who pay for bad design. As long as
there are designers willing to make bad Flash design, and as long as
there are clients willing to pay for the bad Flash design, there will
continue to be bad Flash design. But that's just one of the effects of
having a global and accessible medium like the Internet. Bill Buxton,
during his keynote at Flashfoward, said something about sifting through
information. These days there's so much information, the key is getting
better at prioritizing it. It's just an evolution, it seems. I mean,
consider how you brain processes things. There's infinite information
available at each moment. Stop and consider that for a moment. At any
given moment there's infinite information. Just visually, there's
infinite information. And yet your brain manages to instantaneously (or
at least very nearly instantaneously) filter the information and
prioritize it so you can make so sense of what you see. I don't know
what this has to do with your original question, though. ;) <Francis> Did you enjoy the last Flashforward? <Joey> Yeah,
Flashforward was nice. I got a chance to meet many people. I met lots
of the volunteers who helped to make the event possible. I met lots of
attendees. I met presenters and authors and so forth. The interesting
thing is to see how seemingly diverse the Flash crowd is. So many
people, each with their own unique talents and skills. When you are in
the presence of so many talented people like that, it's a very humbling
and beautiful experience. Two of the people who won one of the awards
from the Flash Film Festival asked me to take their picture afterward.
And that was such a gift to me. They were so happy. They had traveled
from Korea to attend the conference. And I got to take their picture
for them. <Francis> What about FITC ? <Joey> Flash in the Can was a nice conference too. It's quite different from Flashforward. I think after a few conferences, though, a conference is a conference. A lot of work goes into a conference. The organizers have to coordinate sponsors, speakers, location, schedules, volunteers, and so many other things. So I don't intend any disrespect to the people that put in the work. And Flash In the Can went well I think. <Joey> That was a long interview, eh? I think we spoke about just about everything Flash-related that anyone would want to read. I don't want to put a political slant on the interview at the last minute or anything. However, I will say a few things: Let's remember what's important. Let's treat people with honesty and kindness. Let's remember gratitude. Thank you, Francis. It's been a very nice time "speaking" with you. And thank you to everyone that reads the interview. |