All
Adobe provides the most important technologies I use. Development typically involves Flash, Flex, AIR, Pixel Bender and, on occasion, Alchemy. Non-Adobe development products include IntelliJ IDEA 9 and Microsoft Visual Studio. To create 2D and 3D visual assets, I use Photoshop, the NVidia Photoshop plug-ins and various simple 3D editors.
The past few months, I've been working on the Away3d open source Flash 3D engine. I created a geometry compiler that creates a BSP data-structure with a PVS (potentially visible set) from a large-scale 3D model, such as a game level. It's a technique used by many games (including Quake and Unreal) to significantly accelerate rendering of interactive walkthroughs. With models like these, a large part of the geometry is usually hidden from view–BSP/PVS offers an efficient way to negotiate these parts and prevent further calculations. It was built using ActionScript 3 in IntelliJ IDEA for Flash Player 10 and Adobe AIR.
For me, the toughest technological challenges are usually the recurring ones. The strategies to overcome them can be very different for each case, and there is a lot of interplay between them.
When working with real-time visualizations, performance is a decisive factor of success, on par with the aesthetics. I consider a beautiful effect that runs slowly equally unacceptable as an ugly effect that runs smoothly. Since Flash Player uses the CPU exclusively (with the exception of video playback), the challenge becomes even harder. Luckily, recent technologies such as Pixel Bender and Alchemy provide great opportunities for faster performance and have helped me achieve goals I would have otherwise considered impossible. Nonetheless, it's still important to write heavily optimized code, which is often less readable (with in-lined methods and collapsed code).
If all else fails, it's important to step back and consider approaching your goal from an entirely different angle: changing the code architecture or even switching to use another technology.
Another challenge I'm repeatedly facing (and again painfully recent) is writing clean and readable code while respecting the performance requirements. Especially in larger enterprise applications and open source libraries, code must be flexible and maintainable. Most likely, another developer will work on it in the future. Unfortunately, this usually affects the execution speed. The challenge is to find a balance between performance and code architecture, when there isn't a clear solution. Encapsulating heavily optimized code as much as possible and adding meaningful comments (rather than "This code is magic: do not touch.") already goes a long way. Finally, and most importantly, spend the time to determine the areas that need to be optimized. It's too easy to get carried away!
One of the most inspiring aspects of working with the Flash platform is without a doubt its open source community. The continuous flow of shared information is very infectious; I feel constantly challenged by the wonderful experiments that developers in the community put out there. Having to right-click to make sure it's really Flash based, and then being able to browse the source is a great privilege and an outstanding way to learn.
I get my information from the usual sources: various tech blogs and sites, books, conferences and information or recommendations from fellow geeks. When researching something specific, I usually just use Google as a starting point.
There are a lot of community members' blogs that I love, most of which are featured in the aggregator flashbookmarks.com. Apart from Flash platform blogs, a lot can be learned from more general programming resources, such as gamedev.net and gamasutra.com. One specific resource I'm following with growing interest is the online book-in-progress Game Programming Patterns, which ties into my previous point of writing clean vs. fast code. Still, none of these measures up to the webcomic xkcd.com, where I learned to defend myself against raptors.
Many things I do to relax still manage to tie into my work somehow. When I'm unwinding outdoors, it's usually with a good tech book or staring at nature's engine: landscapes, watching smoke curling up, rippling water… Yet more often than not, my observations lead me think "It would be so cool to do that in code!"
The same goes for video games: they form a very strong visual and technical source of inspiration. Games like Doom and Quake got me into programming 3D in the first place. More recently, I've been playing Uncharted 2. That is one of the most beautiful game engines I've seen!
As for music, that's ubiquitous for me. Either I'm listening to it while working or I'm playing the piano or the guitar (albeit poorly). When I find the inspiration, I try to compose a few things too, but that has rarely been the case lately. There's no one genre I would pin myself down to; as long as there's real emotion or a solid idea behind it, it's usually good in my book. Speaking of which... I've recently rediscovered the Koyaanisqatsi soundtrack by Philip Glass, a must listen!
I would like to see the current technologies evolve and mature. While the heated debate on HTML 5 vs. Flash rages on, I love seeing technologies such as HTML 5 grow and make things that are typically associated with Flash possible without a plug-in. Then there's other plug-in based technologies, most notably Silverlight and Unity 3D, which are gaining in popularity. I think this creates an interesting ecosystem, which will encourage all involved to improve. I'm confident that Flash will keep renewing the web as it has in the past. As a developer I would love nothing more than seeing increased momentum in my preferred environment!
If I could answer that question, I would probably already be trying to build it, or at least trying to sell the idea!
I took my first baby-steps in programming as a child when I discovered I could write BASIC straight into my Commodore 64's command line. It stuck with me ever since. When I saw Doom, I knew that was exactly the kind of thing I wanted to do. I moved on to Turbo Pascal and C/C++ while the Internet was blooming in Belgium, but it wasn't until college that I got involved with Flash (MX). Compared to the other languages I was used to, I found that it was incredibly easy to work with visuals. It has the benefits of being entirely cross-platform and having a wide potential audience at the same time.
At the moment, I'm hoping to wrap up and launch some personal projects and get back to experimenting. Both in my job and in my personal work, I plan on investigating some different technologies–not all of them web-based. I'm playing around again with some desktop development in C++, which in combination with Adobe AIR 2.0's support for native processes may result in some interesting new applications.
When it concerns Flash specifically, I'm excited about the fact that it's not just browser-based anymore. I can use the same codebase on the desktop or mobile (among others) as well. If that doesn't offer great opportunities, I don't know what does!