6 April 2009
Beginning
Most of my days are spent in Adobe Flash. I also use Adobe Photoshop, Adobe Illustrator, Adobe InDesign, Adobe Acrobat Professional, and Adobe Dreamweaver with some frequency. I use WordPress for blogging.
I recently completed a series of extensions—MotionSketch, MotionBlur, and EaseCaddy—that take advantage of the new motion tweening system in Flash CS4 Professional. MotionSketch is a tool that allows you to draw a motion path in real time. The path is translated into a motion tween and the timing is applied as an ease, both of which remain fully editable.
MotionBlur takes a motion tween and adds a motion blur based on the movement and easing applied to the tween, while adding only a minimum of new keyframes.
EaseCaddy is similar to the Motion Presets panel that ships with Flash CS4, except that it stores custom eases, rather than entire tweens. EaseCaddy also works in Flash CS3 and translates eases from classic tweens into new motion tweens, and vice versa. A stored ease can be applied on the fly—without opening the Motion Editor—to any properties available within a motion tween.
Since the new motion features were not added to the Flash CS4 JavaScript API, I had to invent a method using the JavaScript commands that existed prior to CS4. My method involved substantial XML manipulation, so I was extremely grateful to have E4X in both ActionScript and JSFL to quickly edit the XML. Photoshop and Illustrator were used to create icons, and the built-in Flash CS4 components were integral to building the interface for EaseCaddy. All of the coding was done in Flash as well.
Creating extensions is exciting for a number of reasons. First, I get to stand on the shoulders of giants, in that I can leverage years of work from the brilliant teams at Adobe (and formerly Macromedia). A reasonably small project can become fairly substantial in its functionality, even though it was created in a relatively short period of time.
Second, when something in an application doesn't work the way that I want it to, I can fix it. How many times in life do you get to say that?
Third, it's fun to make a tool that people can actually use to make their work a little easier, or to help them create a product or an experience that they otherwise could not. Users often share their positive feedback on our blog. The impact that I can have by building tools that help other users is far more inspiring to me than the impact of any advertising project that I might work on.
Primarily from the following websites:
Apart from my computers, I try to keep the gadgets to a minimum. I don't own an Apple iPod or iPhone or... I can't even come up with any more names of gadgets offhand—that's how out of the loop I am. When I'm not working, I try to hike, bike, or generally spend time outdoors. Sometimes I'm more successful at avoiding the monitor glow than others. I do have a portable, roll-up solar panel, which I think is really cool. If I got more into gadgets, I would definitely head in the direction of renewable energy devices.
Generally, my favorite movies and TV shows are subtle comedies with emotional authenticity that are designed to be rewatched.
TV: The Office (UK), Arrested Development, Freaks & Geeks, The Venture Brothers
Movies: Groundhog Day, The Big Lebowski, Kung Fu Hustle
I hope that web technologies continue to move toward open-source solutions that are highly extensible. For example, I think WordPress is an amazing tool with great capacity for customization and extension. Even in cases when the software itself is proprietary, open formats and extensiblity layers allow for so many new possibilities. I was really excited to learn about the XFL, IDML, and FXG formats coming out of Adobe. These XML-based formats will allow developers like me to create web and/or desktop applications that can interact with Adobe file formats and thereby bring more non-designer/developer users into the fold. This style of development tends to create more active and fertile communities. I'd love to see more web technologies move in this direction.
My bachelor's degree was in a program called "Literature, Science, and the Arts." With that kind of major, the only thing I was seriously considering was graduate school. But graduate programs were already starting to shrink, and it didn't seem like a wise idea at the time. I hadn't taken courses in either graphic design or computer science—in fact, I had no interest in programming whatsoever. However, I really enjoyed taking philosophy courses on logic, which happened to translate directly into programming. I had been drawing for some time and using Photoshop casually for several years. My wife, Amy, suggested that we take up computer animation, given that it would encompass many of our interests and skills (drawing, writing, computers, voices, music, and so on).
So I started researching animation software and quickly decided that I wanted to focus on 2-D animation because it was built more around drawing, and also because it had a much smaller learning curve than 3-D. We picked up Adobe After Effects and Toon Boom Studio and began experimenting. As I was learning animation and video editing, I was also reading books about print design to improve my day job.
Initially, I had sworn off Flash. The interface didn't make a lot of sense to me and most of the animations that I'd seen online all seemed to look alike. Amy, in her wisdom, bought Macromedia Studio for my birthday. I started using Flash, and I thought "OK, this is pretty cool, but I'm never going to use any of this programming stuff".
Then when we started making complete animations, it seemed useful to add a play button and a stop at the end, and maybe a replay, and then a preloader.... Yet I was resolved not to do any more programming than that. And so it went—each time I learned a bit more programming, I resolved not to go any further with it, until my livelihood became almost entirely based on Flash development. Flash tricked me into programming by starting visually and offering me useful reasons to learn just a little bit more code with each new task.
The idea of extending Flash had always been of interest to me, but I sat on it for a while, thinking that maybe it would be difficult to learn. Then I found this great video tutorial by Lee Brimelow on building custom Flash panels. Lee has this great way of making things seem easy, thereby removing any inhibition about taking that first step. So I had no excuse. Watching the tutorial got me started, and I've been creating Flash extensions ever since, picking up new things as I go along.
Releasing the extensions for free seemed fairly natural because so much of what I learned (and continue to learn) about Flash and programming came from other users like Chris Georgenes and Lee Brimelow (who now works at Adobe), who shared their knowhow for free. It only made sense that I would contribute back to a community that had been so generous to me. I was a Flash animator first, and then a designer, so I remember what it was like to use the application before knowing how to code. Thus, many of my extensions are aimed at helping animators and designers.
Five years ago, I wouldn't have imagined that I'd be doing this much programming—not to mention that I would actually be enjoying so much of it—so I won't make any bets on the long-term. However, in the short-term, there will definitely be more extensions. The next extension that I have planned is a custom brush for Flash. I've also thought about releasing some commerical Adobe AIR applications, which may or may not involve learning more Adobe Flex, which would serve my learning addiction. I'm also looking forward to trying out PatchPanel and Switchboard on Adobe Labs as well.
Ideally, I'd love to have a technology that would allow me to stand up and interact with my computer more expressively. I think computing needs to head toward a more intuitive interaction model if we want to avoid becoming completely atrophied from sitting at our desks. Necessity will hopefully motivate us toward designing more healthy modes of interaction with our computers.