Home  >  

The Renaissance Developer

Author photo
AddThis Social Bookmark Button
aft_logo.jpg

Advanced Flash Tactics or AFTs are techniques that come from deep within the Flash Art Of War, the oldest Flash military treatise in the world. In this AFT I will discuss - The Renaissance Developer. When I was an artist I loved to paint. Oils were my primary medium but I also used watercolors and acrylics. When I wasn't painting I was using chalk and pastels. Sometimes I sculpted with clay or stone. I would even do etching and print making when the need hit me. My transition from fine art to digital art wasn't nearly as painful as my transition from artist to developer. Then a funny thing happened. Once I learned Flash I didn't go any further. Sure I know PHP, Ruby, JavaScript and a few other languages but not as well as I know ActionScript. Where am I going with this? Well, when I was an artist I picked the right tool for the job, but as a programmer I locked myself into one language and made that my focus. In 2010 my New Year resolution and life goal is to become a Renaissance Developer just like I was as an artist.

ren_man

First off, when it came to art the message is the medium. When I had an idea I used several different artistic techniques to bring it to life. I found the right tool for the job. The same thing should apply to programming. The amazing thing about programming languages is that they are written to be as open ended as possible but that is also a limitation. You can't make a sculpture out of oil paints, the two mediums allow you to do anything you can image as long as you stay within their limitations. Why shouldn't programming be the same? The following thoughts are not meant to bash Flash, I love the language and will continue to make it my focus. I'm simply interested in and encourage others to step out of their comfort zone and explore as much as possible. Here is my plan:

If you only have a Flash Hammer, everything looks like a Flash Site

hammer_nails

I am already starting to break down my first "Flash Can Do Anything" mental barrier. I am completely turned off to building full Flash sites now. I'm a strong advocate for hybrid html/flash sites. They are cleaner, easier to maintain and build. Plus you can avoid a lot of Flash's pitfall such as SEO, deep linking, and Memory Management. Some sites lend themselves perfectly to being all Flash but by and large I rather mix HTML with Flash and use JavaScript as the bridge. The best part about hybrid sites is that you can use any backend language you want. I have a fairly good handle on CakePHP or Ruby is a great option as well.

I have also seen the same mistake made with CMS's/Admin panels on sites. I would never build a CMS's front end in Flash. That is crazy and almost impossible to maintain as the application grows in scope. Some may argue that is what Flex was designed to do but I would take a Hybrid CMS over a full Flash one any day of the week. I do believe modules that are too complex to be built in HTML/JavScript can be done in ActionScript/Flex.

My last point to this topic is mobile devices. Everyone is excited about Flash Player 10.1 on mobile devices but take a moment and think about what that experience is going to be like. Even Adobe has been very upfront that building mobile Flash sites with constrained resources, processor and memory will require lots of upfront optimization. You can completely circumvent this by building a hybrid site that works great across multiple browsers from mobile all the way up to desktop. Why build several versions of the same site when you can simply have the Flash parts degrade nicely into mobile optimized versions and still retain the html parts of the site on device that support full web browsing experiences. The iPhone, which has one of the largest demographic still does not have Flash player in it's browser so you will have to take that into consideration.

What I Plan To Learn In 2010

adamevecropped

Here, in no particular order is my list of the languages I want to learn in 2010. Before I list them I want to say there is a big difference between learn and master. I don't expect to have a decent handle on any of these in just a year while learning them in the little free time I have. I simply want to have a foundation of how they work, how to implement some basics to get started, and most of all learn the underlying syntax so I can move forward when I find the need to really use the language.

  • sliverlight_logoSilverlight - Please take a deep breath. I have not kept my desire to learn Silverlight very secret and have already gotten a lot of "feedback" about it. I was loosely involved with the pre 1.0 Silverlight beta when I worked at MLB. I saw enough to become an avid proponent against using the language for years. Now with version 4 around the corner I am starting to open my mind. First off, it is getting very close to what Flash can do. Second there are some really nice features in the new version like 3d acceleration (similar to 2.5D in FP 10) and multi-threading. My real interest in Silverlight is C# and the tools they have set up around the development workflow. Visual Studio is an amazing editor and it is clear that Microsoft takes the feedback of it's developers seriously. Unfortunately it doesn't work on a mac. I talked with Adam Kinney about getting started on a Mac and he explained that Microsoft was making every effort to support Parallels on the Mac. A few years ago, before the Intel switch, I would have considered an answer like that totally unacceptable but duel booting is really not that bad and even running the tools in a VM is acceptable. I have no plans to make SilverLight my main language but we will be seeing feature parity with Flash in the next 2 years and that makes it a serious contender in the RIA space.
  • unity3d_logoUnity - Probably should have put this at the top of the list but I wanted to be a little dramatic and go with the bad news first. If you are familiar with some of my Flash work you will not be surprised to see this on my list. I have been trying to get 3d to work in Flash since the MX days. Libraries such as PaperVision and Away 3d have helped fill in the huge technical hurdles I was never able to overcome on my own but the performance is horrible. Even with the so called "3d" support in Flash Player 10 it is no substitute for real GPU accelerated support. Unity does one thing and does it well, games! It has a clear focus and delivers on it's promises to push around substantially more polygons then anything else I have played with on the web. Plus you can compile to the iPhone (real 3d apps mind you) and the Wii or desktop (mac + pc). I want to do something special with Unity and try to build sites with it. It may not be possible for all kinds of sites but I have seen some interesting 2d games built with it. I want to make unity version of FlashBum.com with a real 3d engine, I think it would be amazing.
  • haxe_logoHaXe - this should be a straight shot for me. Haxe is so similar to AS 3 it's crazy. I am mainly interested in the compiler and speed improvements you an make with AS3 code by using HaXe. I plan on porting over my F*CSS and FlashCamo libraries to see if I can squeeze out any extra optimization.
  • Object C - I don't need to explain this do I? To cheat I am going to try to get around this language by using Unity but eventually I will have to pick it up so I may as well bite the bullet now before it's to late.

Getting Started

Learning these 4 languages is not going to be easy. I am going to map out 3 months for each and I have been preparing some Flash code I would like to port over to help get started. I imagine Haxe will come naturally, and most of what I build in Flash will be portable over to Silverlight, if it isn't Microsoft will need to catch up. Unity and Object C will be the hardest but if I clearly map out what I want to build and keep it simple, I shouldn't have a problem. Keeping my expectations low is key to not letting myself down and getting frustrated. It will be interesting to see how all of these languages evolve over the next year. I am also planning on documenting what I learn about each language coming from a Flash Developer mentality.

I would love to hear your thoughts and if you want to also become a Renaissance Developer? In the end it is not about leaning as much as you can but just being a better developer. Each language has aspects that can be shared across platforms and it would be great if it makes me a better Flash Developer in the end. My money is still on Flash being the top of the pack for RIAs and the competition will hopefully make it a stronger platform and language.

Read more from Jesse Freeman. Jesse Freeman's Atom feed TheFlashBum on Twitter

Comments

10 Comments

Jochen Szostek said:

Interesting article!

Noticed a typo I think "two complex".

I'm also a J2EE/Flex developer. And I know PHP quite well too since I've been using it (when I was trying to build my own CMS system), before I got to know Java And of course it all started with HTML/CSS.

I'm lucky that I've had the opportunity to explore a lot of worlds as a consultant and that I've had a lot of different interests that nicely fit together now. So I would also recommend everybody not to have a one track mind and explore as much as possible.

Btw, on this "The iPhone, which has one of the largest demographic still does not have Flash player in it's browser so you will have to take that into consideration.", I think you might just as well put your effort in Android. Because with an ignorant attitude like that it's just a matter of time before iPhone will loose its lead. (or maybe I'm just being too idealistic :))

Kind regards,

Jochen

Alexander Stefas said:

Indeed very interesting article... I totally get your point. You seem to think about the same things I do a lot...

I am mainly working as a Flex / Actionscript Developer and I totally appreciate the way Adobe changed the language over the past years. And yes, I totally want to be a Renaissance Developer. But I would define the term Renaissance Developer a bit differently.

So my list for 2010 in learning and improving skills in general is following. But I think you will recognize the slight difference...

1. Objective C

2. Electronics - especially being able to program microcontrollers and not only do small circuits as i am able to do now...

3. Max MSP / Jitter

4. Do some artistic design related stuff as i was also an artist before but simply do not have the time to do both: design and programming

So, my point is:

Wouldn't an Renaissance Developer be somebody who is not only capable of programming in a lot of different languages but is also able to build the rfid-sniffer a project might need or design the guided tour nobody thought about at project beginning?

This is what comes to my mind when I see the Vitruvian Man and think about Da Vinci and his work. He was not only a painter able to paint with different materials but also a scientist.

Kind regards,

Alex

Mika said:

It's a good thing to move beyond the limitations of Flash as it has definatly some big disadvantages (when it comes to Serch Engines they are massive). Good luck on your task.

Mika

Ben said:

My plan is:

1. Javascript/jQuery - I do occasionally use this already, but I'd like to get into it more depth, especially with fun things like the HTML5 canvas in the future.

2. Unity - Using Away3D a few times last year was great fun, but I'd like to push it a bit more.

3. Objective C - Obvious really

4. Arduino and other physical computing stuff - Just for fun, I've got lots of ideas, and I like the hands-on approach.

Jenna Pink said:

It's a good thing to move beyond the limitations of Flash.

Pink

Bob Donderwinkel said:

Inspiring.. I myself have had the same feeling the past year or so. I am using XSLT a lot for all my backend needs (you got to love http://symphony-cms.com/), while websites themselves use any combination of HTML/css/Javascript/Flash as needed.

Ironically I think Flash will be used in the same role it has been for many year, filling the gap what can't be done otherwise. This only means Flash will be pushed up the AIR/AR/3D road even more while losing ground building regular websites.

Wes said:

Great article! Thanks for the reference to Unity, I've been wondering what Fusion Fall was built with.

I'm currently a renaissance web developer. At first it wasn't really by choice, mainly picking up tech as the project required (consultant). As the line between the server-side layer and client layer gets fuzzier as far as where the business logic rests, knowing both layers is a huge advantage.

Mainly I'm using PHP (CodeIgniter), with JavaScript using a variety of JS frameworks. After building a couple complex RIAs with JS, however, I made the switch to Flex/AS3. Because I have used AS and Flash off and on since the 90s this wasn't a huge leap. I also am already comfortable with Java and C#, so concepts in AS3 are easy to get. It is nearly impossible to keep up on updates to every technology I've used, but knowing a couple language types (scripts vs managed, etc.) makes learning new languages easier. I picked up Objective-C last year, and although the syntax is different from Java/C# because I used to use C++ in the 90s the leap wasn't huge.

Being a generalist kept me employed through a couple of bad economies, increasing off-shore competition, and an ever-changing industry. Another huge advantage of being a renaissance dev is for the client. I pick the best tool for the client's needs, not the tool that I'm limited to.

Cheers!

Getting Generic Programming Chops said:

Here are some books that will teach you not so much a particular language, but about programming itself, much in the way that, as a modern renaissance artist you learn about colour theory, perspective, and other aspects of design and then apply that general knowledge to specific media.

The Little Schemer, by Daniel P. Friedman and Matthias Felleisen.

Structure and Interpretation of Computer Programs, by Harold Abelson and Gerald Jay Sussman.

Concepts, Techniques, and Models of Computer Programming, by Peter Van Roy and Seif Haridi.

Eventually, as you learn these things, you get to the point where you can pick up the basics of (almost) any language very quickly, and it's only the various technical details related to the languages' quirks and bugs that take time to pick up.

Jonathan Marra said:

This was a great article. I've been a big supporter of Flash but have always encouraged the "hybrid" route to developing a site(seo reasons as you mentioned). As a "devigner"(developer & designer as some reference to), I believe the more tools available the better.

I've also checked out Silverlight, not sure If I'm headed in that direction but I'm paying attention. I would like to read more about it before investing the time. I found the Vista & Xp comment funny. It's true a lot of big companies are still married to that software mostly because of cost etc etc... For now I think It's a wait & see game with what Adobe is going to do with Flash in the future to compete with these other technologies. And with all that being said I will now call myself a renaissance developer, has a nice ring to it.

cheers,
Jonathan

Ambit said:

Wow great read, I love flash but the search spiders do not the evolution of Flash is a must. All the best Ambit

Leave a comment


Type the characters you see in the picture above.


Tag Cloud

Technical Speakers

Who is the best technical speaker you have seen?

Answer

Latest Features

Recommended for You

@InsideRIA on Twitter

Archives

  • Or, visit our complete archive.  

About This Site

Welcome to the premiere community site for all things RIA sponsored by O'Reilly Media and Adobe Systems Incorporated.