In his post, Patrick states:
SWX is quite clever, but the implementation is not going to yield any net benefits for the community
I disagree strongly. SWX is quite clever thanks, but it wasn't merely an intellectual exercise for me. It was born out of the very real need that I felt for a simpler way to create data-driven applications in Flash. This is a real need that I have and I am sure that others share this need. As such, by fulfilling this need, SWX *is* going to benefit the community. For other benefits of SWX, see my previous post (SWX: A good idea) in which I outline the advantages of SWX on a more technical level.
As for my statement that SWX is a hack, I stand by that, and I think other people agree.
Patrick is right. SWX *is* a hack and I thank him for the compliment.
So what is a hack, actually?
According to the Merriam-Webster Online Dictionary, a hack is "a usually creative solution to a computer hardware or programming problem or limitation". Yes, SWX is definitely a hack.
And I hope it gets Flash developers to hack -- "to write computer programs for enjoyment" as the word means as a verb -- and to create more hacks.
SWX is meant to make it easier for you to hack even if you don't have a degree in computer science. I thought that was the whole idea behind Flash in the first place! Where did we lose our way?
Patrick mentions that there are other people who agree with him. The "other people" currently appears to be comprised of a one Theo Hultberg who states in a blog post titled On SWX that SWX "is not worth a second look". Fair enough -- we are all entitled to our opinions and the number of looks we give things -- but then he proceeds to demonstrate a lack of understanding of how SWX works and simultaneously questions my word by stating:
partly because of the questionable implementation of the client side deserializer (which may or may not be just a temporary version")
If Mr. Hultberg had actually read the documentation for SWX -- instead of hastily shutting his eyes to avoid a second look at something new and different -- he most likely would have known that one of the key features of SWX is that there is no client-side *deserializer* as your data loads in a SWF so what he meant to say was *serializer* in the quote above.
I have already promised that there will be a manual serializer and Mr. Hultberg has no basis to question my integrity by stating that I "may or may not" deliver on this.
Unfortunately, it gets worse from there as Mr. Hultberg succeeds in the questionably-enviable accomplishment of managing to personally insult me *and* question my competence as a programmer in a single sentence:
I wouldn’t hire people who wrote code that looked like that, and I sure wouldn’t use their frameworks.
I hate to say it but it appears that Ludditism is alive and well and living in the Flash community.
Making a public comment that contains such a generalization can only make you appear like a fool.
Mr. Hultberg, you couldn't *afford* to hire me in your wildest fantasies, much less reality, so the first part of your statement is a moot point. Secondly, your statement assumes that there is one use (and one use only) for Flash and that is to build large enterprise Rich Internet Applications. That couldn't be further from the truth if it had been catapulted to the end of the galaxy by an electron accelerator. Unfortunately, however, it does show us the ugly face of elitism that I myself have been guilty of perpetuating to a certain degree without ever meaning to.
Before I go into detail on this, let's just state for the record a fact that bears repeating:
You do not need to be a computer scientist to make amazing Flash stuff and to have fun with Flash.
And, furthermore, there's nothing wrong with having *fun* with Flash. And there's nothing wrong with hacking something together quickly and experimenting.
Do not let the fear of writing "bad code" or not architecting something "perfectly" ever stop you from doing things. There is no such thing as "perfect" in what we do. It's all part of a learning process and you have to be prepared (or even look forward to) building things, throwing them away and starting again. Knowledge of design patterns and good practices is very important when working on large applications that have long lifetimes and are maintained on by multiple developers. But that's not the only use-case for Flash (in fact, I'd argue that that's not even the main use-case for Flash.)
If anyone tells you the opposite, you should be well within your rights to tell them to kindly remove the baseball ball that they must have accidently sat on because it can't be good for their health and is probably going to make it uncomfortable for them to read the thick Java manual they carry around to hide their insecurities.
I love design patterns and I am genuinely passionate about application architecture and development processes. In fact, I consult about this regularly with enterprises of all sizes -- it's what I do for a living. But I am aware that Flash has a wide range of applicability -- everything from linear animations to banner ads to games -- and that preaching a One-Size-Fits-All approach based on the merits of a single workflow and methodology above all others is a fatally-flawed, fundamentalist position to defend.
Looking at Mr. Hultberg's About page, you see that in the past he was "a Java web application developer" who "studied software engineering". It goes on:
My aim is to introduce proper system architecture and object oriented design to the ActionScript community, something that I find is lacking.
Let me tell you who Mr. Hultberg is with that statement: He is the white man come to educate the natives with the Word of the Lord.
Hallelujah, brother -- thou shalt be saved from the sins of Flash by the cleansing light of Java!
You see, Flash developers are an ignorant bunch who live simple lives. They don't know about design patterns and wouldn't know a Mixin from a Front Controller if one was to hit them in the face on a windy afternoon. In fact, it's a miracle they ever get anything done. They must be saved from themselves. But don't worry, because *civilization* has come to the Flash platform as Mr. Hultberg and his merry band of Evangelical Java bishops bring us the truth of The Light.
WTF?
Who died and elected you Pope, Mr. Hultberg?
(I have to point out here that I have nothing against Java developers in general -- or any other developers, really. I've developed in Java myself and I've used and continue to use a variety of programming languages and technologies -- each of which has its own use cases, advantages and disadvantages. It is the elitist attitude I am describing here that certain developers have that I find harmful.)
I have a feeling that people like Mr. Hultberg would love to see Flash become Java because that's what they know. Sometimes when you only have a hammer, everything looks like a nail. But Flash is not Java. It has its own essence and that essence is beautiful. Instead of trying to repress its true nature, we should find creative ways of letting it shine. I've seen too many Flash projects jeopardized because important design decisions were made by Java developers. I've seen frameworks created that try to mimic or recreate Java in Flash. Heavy, scary frameworks that scare away Flash developers. Unfortunately, many Flash developers are intimidated by these people who pass themselves off as "real programmers" because they have server-side programming expertise.
Flash, however, is not a server-side technology and your server-side development knowledge will not transfer to it verbatim. In fact, the actual complexity of server-side systems, for 90% of what makes up a web application, is much lower than the complexity of the client.
On the server side, you build interfaces that talk to other computers. They talk in pre-determined, unchanging protocols. Things are predictable, you can unit test them to death. On the client side, however, you are building interfaces that talk to a human: An unpredictable, complex creature that may just be scratching his balls with one hand as he uses your lovingly crafted interface with the other while simultaneously devoting 73% of his attention to Carmen Electra's rack in the trailer of I Want Candy that's blaring on his TV screen. (In no way is this based on personal experience -- I don't even watch TV!)
Is it any surprise that building usable user interfaces contains far greater inherent complexity than getting two computers (or two computer programs) to talk? Is it any surprise that, given the attitudes of certain "real programmers", the complexity, effort and expertise involved in creating user interfaces is underestimated time and again? Is it any surprise, then, that we have such a high failure rate for projects in our industry?
Flash is a client-side technology and there is a wealth of specialized client-side knowledge that Flash developers have that server-side developers do not. It is often the case that Flash developers will respect the work that server-side programmers perform but it is rare for that respect to be mutual. And the only reason for it not to be is because of a certain elitist superiority complex in these people, coupled with a dangerous ignorance of Flash.
It may surprise Mr. Hultberg to know that I've built my share of large enterprise RIAs. I started doing so in Flash 5 when Branden Hall, Keenan Keeling, Charlie Cordova and myself built the Flash front-end to a virtual school. We had to write our own event dispatching systems, components, etc. -- all things that were later added natively to Flash MX. I've been around, Mr. Hultberg and something tells me I've been doing Flash for a little longer than you have, so read on.
With each version of Flash, we have been moving further and further away from the simplicity that made Flash such an approachable tool. The Flash IDE was never meant to be a tool for building enterprise applications. Unfortunately, before Flex, it was the only major IDE available for the Flash Platform and Macromedia tried to make it do everything. In the process, it began to struggle to do anything particularly well. Animators were left behind (I know animators that still use Flash 5 because it supports their workflow better), designers were snubbed (do you remember the removal of Script Assist in Flash MX 2004) and all for what? So we could appear more "grown up". And what did Macromedia take as a grown up role model? Nothing if not the heaviest, most bulky, over-hyped and under-delivering programming language I know: Java.
(And by I know, I really do mean I know Java and I have developed server-side applications using J2EE.)
Yes, they tried to make Flash look more like Java to attract Java developers and it worked. Many prominent voices were quick to declare that with ActionScript 2, ActionScript had finally become a "true" object-oriented programming language. That's the biggest crock of uninformed bullshit ever. Classes are syntactic sugar in ActionScript 2 -- everything gets pre-compiled down to ActionScript 1. ActionScript is a *prototype-based* language and has always been object-oriented. You do not need to look like Java to be object-oriented. You do not need the compile-time concept of *classes* to be *object*-oriented. In fact, you could argue (and rightly so) that a language that only has objects (not classes) is *more* object-oriented.
In fact, this misconception continues today with ActionScript 3. Java developers are sometimes quick to hold AS3 to their chests as their own. AS3 couldn't be less like Java if Java lost 400lbs in 30 days by eating nothing by Subway sandwiches. AS3 is an optionally-typed *dynamic language*. In essence, it is far closer to Python or Ruby than Java. Don't let the syntax fool you.
Thankfully, the release of Flex meant that Flash could drop the burden of being the primary RIA tool for the Flash Platform (alongside all its other roles.) Starting with Flash 8, we have begun to see it focus more on some of the core areas that had fallen into neglect and I hope that this trend continues in future releases as well.
You know what the ironic thing is? I have spent the last three or four years talking about best practices, pattern-based development and development processes at conferences around the world. The framework I wrote that Mr. Hultberg says he wouldn't use (based not on its own merits but on the sample code he skimmed for SWX) is Arp and it is being used around the world by people whom I would consider to be cornerstones of the Flash community -- some of the best developers I know. And I do believe that an understanding of design patterns and best practices is essential when working in teams and on large projects. But they can also be harmful if not presented correctly. Let me tell you how:
As I mentioned earlier, I have been giving talks about pattern-based development, best practices, and agile development processes for quite a few years now. Generally, I feel that these talks have been very beneficial for my audiences. I have tried to expose them to concepts and workflows that they may not have heard before and these will no doubt help them when working in groups and on large projects. However, what I failed to do in these talks, which I now wish I had, was to wrap everything up in a huge caveat: Knowing all of this is great but don't ever let it stifle your creativity.
I have seen developers stuck in front of their computers, unable to start working on a project because they are afraid to make a mistake. Because they have heard that there are better ways of architecting things, "best ways" perhaps even, and they are not sure if what they are about to write is going to be "correct".
I was devastated when I first saw this (and I've seen it many times, at different levels, in many different developers since). There I was, talking about agile development and pattern-based programming that was supposed to make it easier for multiple developers to work together, communicate and talk about code. There I was, trying to spread best practices that were supposed to make developer's lives easier. All positive, dynamic things that were meant to improve the daily welfare (and happiness) of developers. And there I was, seeing that it could sometimes have the opposite effect: Stifling creativity, creating fear and uncertainty, leading developers to think along the lines of "right" and "wrong" rather than simply creating, experimenting and having fun.
(There is never a "wrong" in development -- it's a continuous process of learning. There are no bugs, only feature requests.)
So, yes, patterns, knowledge of good practices and agile development processes are important but the most important thing, above all of these, is to not be afraid.
Don't be afraid to create, experiment and make mistakes. Remember, there are no mistakes -- it's all a process of discovery. Go ahead: write sloppy code, then throw it away and write it better. Throw stuff on the timeline, try different ideas, break things, then put them back together again. You can always tidy things up later. Don't let fear of imperfection lead you to inaction. There is no such thing as perfect. Do something, anything and then evolve it. Don't think too much about it or you may end up only thinking about it. Do, make, share, evolve!
Above all, and this is the really important bit: have fun! It's OK to have fun! And don't let anyone tell you otherwise.
I hope SWX helps you have more fun with Flash. That's what it's about. And that's why it's necessary.
The SWX: Still a good idea article by Aral Balkan, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial 2.0 UK: England License.
Thats a lot of words for a saturday morning, i started to get a bit blurry partway through..
overall I agree with your points and what you are doing, its a noble thing to try to keep the fun alive and not make everything into an architected and patterned snooze-fest.
I still think that is the key point that makes flash different, the people who work with it span the range from enthusiastic animator to phd toting computer scientists and it would be foolish to try to make them all adhere to the same range of solutions.
There is one other aspect that I havent seen considered is that you are providing possibilities for other types of applications which arent just straight client side data consumption.
One example would be to create a data swf with swx and then inject some code via mtasc (all on the server) and then deliver this file, either into the browser or as a download. I also want to look at combining swx with swfmill because I currently have my own solution for generating downloadable swf’s that combines remoting and swfmill and could be heavily simplified if my ‘currency’ is all swf.
This current situation reminds me of Warren McCulloch’s phrase ‘dont bite my finger, look where I am pointing’
http://en.wikipedia.org/wiki/Warren_McCulloch
btw, java isnt that bad (well, j2ee of course is horrendous)
its definitely good for building tools for flash
Hi Martin,
Thanks for your kind words. I would love to see what you come up with MTASC and/or Swfmill SWX.
I love that quote by Warren McCulloch, by the way. Thanks for sharing!
Please don’t get me wrong, I don’t think Java is bad. I just find it over-hyped and sometimes erroneously throught of as the One True Way for OOP.
Thanks again for your words of encouragement.
i didn’t know eating subway sandwiches would help you lose weight! you learn something new everyday!
It apparently worked for Jared!
You are quite an inspiration speaker. I wish I had gone down to listen to you while you were in Singapore. Let me know if you travel down to Melbourne (where I’m studying now).
I’m still a little unsure about SWX, especially since it doesn’t seem to be working with AS3 at the moment? Which means, ultimately, I’m still going to have to depend on AMFPHP. But I will be sure to check my RSS for any updates
Aral,
Thanks for sharing this as it pretty much sums up my experiences with Flash over the past couple of years… afraid to start a project for fear of being ‘wrong’ as design patterns, units tests and other ideas from ‘real programmers’ entered the Flash world.
That stuff is great when you know and understand it, but by no means should it keep you from creating fantastic stuff with Flash today regardless of whether you know what a singleton is, or how delegates, observers or… might be used to improve your apps maintainability.
Design is about solving problems in a creative manner. If your background is comp sci then by all means draw on your understanding of design patterns, etc to solve your problems. However, if your background is art/design/animation/etc then you shouldn’t feel less-than-capable just for reaching for the familiar (and IMO intuitive) movie clips, frame events, scenes and ActionScript that isn’t wrapped nicely in discreet classes and packages.
Nice to hear that the Flash IDE is starting to re-focus on us more visually inclined folk. While I enjoy writing ActionScript - I do somewhat long for the days of behaviors (Lingo/Director, Authorware and mTropolis) where it was often possible to express your ideas using drag and drop elements with variable parameters and only write (and maintain) minimal amounts of code where required.
I had pretty much ruled out looking at SWX as ARP (and most other frameworks make my head spin) - but I think I’ll download it now and try and get my head around it.
Thanks again for thinking of us ignorant bunch living simple lives.
Cripes. Think of the wrists Aral… :!
Hi Bryan,
Please do remember that this is an alpha release so it won’t be as easy to get up and running with as future releases. I plan to have integrated installers very soon that will not require any knowledge of how to set up a server, etc. to build data-driven applications with PHP and Flash.
I hope you enjoy using SWX!
Hi Aral,
Warning heeded. I’ve already configured and am running with Apache, MySQL, PHP/PEAR so I’ll have a go at it regardless.
In trying to run the unit test (swx/php/tests/all_tests.php) I get an error that PHP can’t find ‘lib/str_split.php’.
I’m using the latest version of SWX (01.e).
I’ll go through the current docs and see how far I get. Is there a mailing list set-up at OS Flash yet for this project?
Hi Bryan, sounds like there might be a missing file in the 0.1e release. I’ll take a look the moment I get back (writing this from my mobile) and issue a new release.
Hi Bryan,
It’s as I thought — the deployment was missing the php/lib folder. I’m uploading a new release as I type this and will make a post to announce it.
Apologies for the hassle.
I’d appreciate it if you can download the new release and let me know how you get on with it!
Thanks!
Whey, I got quite a bashing! But of course, it was client side serializer I meant, not deserializer, sorry about that. Otherwise I haven’t seen anything that changes my mind.
Hi Theo,
I’m not really out to change your mind — just trying to explain the philosophy behind SWX.
…and the whole history of the Flash community’s little brother complex toward Java while you’re at it.
I can be quite harsh in my criticism, and I although I maintain that I belive the example code you posted for SWX is bad, I regret that it made you so angry that you needed to write this tirade against me, that was not my intention.
For someone who takes criticism and generalisations against you so hard you are very quick to paint with the broad brush yourself. I didn’t know that I was such a Java zealot.
Just to highlight a comment in your previous post by Dustin, that I think is very pertinent to SWX:
“The first thing I thought when I saw your example code was ” oh thats easy”.
Working at a firm with multiple skill levels of flash developers. I can see the advantage of SWX. Anything that takes advantage of familiar items (read, movieclips) will make this a much more approachable form of remoting for many people.”
Take a Flash/actionscript junior and ask him to setup some data implementation. With SWX this is a much more digestible task than remoting. If it warrants it, rip it out and replace with remoting later.
I’m afraid remoting isn’t THAT easy, if someone has a cool idea and wants to get it done, having to learn remoting from scratch will seriously dent that creative drive. It did for me initially.
Aral,
Got it working just fine. I had to (not unexpectedly) adjust one line (41) in the example ‘echo.fla’:
dataHolder.loadMovie(”http://localhost:8888/swx/trunk/php/swx.php”,”POST”);
to:
dataHolder.loadMovie(”http://localhost/swx/php/swx.php”,”POST”);
Next step is to figure out how to access the data on the PHP side of things and return something back. Sounds like a nice little activity for a lazy Sunday afternoon (weather permitting - it’s sunny in Glasgow for a change). If I have any success I’ll post a ‘how to’ for others.
The thing I’m finding very interesting with this approach is how it could potentially be used with Flash Lite (v2 ) where other options (xml) maybe too cpu/memory intensive or simply unavailable (remoting).
Lastly, this is completely something I could see designers using without too much hassle. As long as they have a basic understanding of ActionScript (and examples to go by) they could easily work with this.
I take it the ‘php/swx.php’ file looks for your class files in ‘/services’ by default?
Thanks again.
Cheers,
Bryan
BTW - the Analyzer is just begging to become an Apollo app, isn’t it?
Hi Bryan,
I’m glad it’s working now. There will definitely be lots of examples in time (note to self: create lots of examples!) The SWX gateway (swx.php) does look for class files in /services by default. I’m a big fan of having intelligent defaults and I purposefully followed the lead of Amfphp in choice of the service folder so that SWX can be transparently used with Amfphp services.
The idea is that once you have a service class, you will be able to access it via SWX, Amfphp, JSON (through the Amfphp JSON gateway) and XML via the tools I’ll be releasing as part of SWX.
Re: The analyzer. Yeah, it is begging to be. I’m going to install the latest public alpha and handle that little issue!
HI Aral
Thanks for the marathon post and sharing your feelings about this. I have much respect for both you and Patrick and all the work you’ve done for the community over the years. While I agree with many of Patrick’s arguments, I still find SWX and its simplicity to be quite interesting and definitely encourage it’s development. As you stated, Flash is used for many different things, not just RIAs. The community needs different solutions for the many different problems we encounter everyday. If there is a tool (or hack) that helps me solve an issue more easily than other solutions, great, let me at it. I think AMFPHP is the shiznit, but I can’t use it in every situation …so it’s great to have options. Agreeing with Patrick though, I would hate to see efforts duplicated and your time and talent wasted on trying to make SWX into something like AMFPHP, which has matured quite nicely. But, that doesn’t seem to be your goal, so go forth and hack my brethren.
Flash is a creative tool and it has served as a gateway for me into the programming world. I started off using the timeline and tweens and my first line of code I wrote was a stop(). I as progressed, Flash allowed me to keep learning programming concepts without scaring me with Design Patterns, Frameworks, OOP etc… but when I was ready to explore those areas, Flash was there to make me feel a little more comfortable with it all. And after learning a little more about building larger applications I see the limitations of the Flash IDE and subsequent power of Flex. But I’ll never be an OOP purist because as a Flash developer it just doesn’t always apply to the situation. I appreciate your point on just letting go and not being afraid to do things the ‘wrong’ way, just have fun! Don’t let the so-called ‘right way’ stifle your creativity
One more thing about ARP, I think this framework is much more approachable for a Flash designer/developer looking to become more familiar with OOP concepts than the other frameworks available. I looked at both ARP and Cairngorm when I decided to have a go at it and ARP just seemed a little more natural for me. I’m not saying one is better than the other, just coming from a Flash background it was just easier to digest.
Anyway, thanks again for the post
cheers
Holy smokes, I’m shocked that anyone would even bother to so brazenly attack an open-sourced share, and the source!
Veeeeeeerry strange Aral.
I think you’ve purposefully painted Mr. Hultberg in a bad light and he really doesn’t deserve that. First of all, on the deserializer/serializer thing I think it was an honest mistake on his part, no need to bash him about that. On his comment that “I wouldn’t hire people who wrote code that looked like that, and I sure wouldn’t use their frameworks”, I think you’re trying to put words into his mouth that he didn’t mean. His point was that the code you showed on the homepage seemed backwards (in terms of lack of events or semantic naming of methods), and that it’s not his style, and wouldn’t use that. That’s it. I don’t think he said (or implied) that he wouldn’t hire you personally. On that point, I think the “you couldn’t even afford to hire me” comment is a cheap shot. Everybody respects you in the community, Aral, and with that respect comes a certain authority and an implication that people are more likely to trust you than some random person that’s worked for several years but isn’t known publicly. Now in that sentence you’re using that authority to imply that this person is wrong because you disagree with him, and you have authority on this issue. That is a purely ad hominem attack and I don’t think that’s acceptable coming from anyone if we want to keep this (rather interesting) conversation above the belt.
As far as Mr. Hultberg’s comment that “My aim is to introduce proper system architecture and object oriented design to the ActionScript community, something that I find is lacking”, I think you’re extrapolating a little (a lot, actually) when you say (or imply) that he wants to make Flash into Java. To the best of my knowledge, “proper system architecture” is not a loaded expression that means “more like Java”. Proper system architecture can mean anything from using design patterns to documentation to planning. It would be hard to refute the fact that in the past, Flash apps were messy, buggy and prone to unmaintainable spaghetti code. Some may even claim that the way Flash is made, with its myriad metaphors and concepts for both programmers and designers, such code is inevitable. I won’t make that claim however. Writing maintainable Flash apps that are creative is a fine balancing act, and Flash doesn’t make it particularly easy to strike that balance, but it’s still possible nonetheless. I will be the first one to say that I despise the Java philosophy (not the language itself) and it’s overemphasis on architecture at the price actually solving user-interface problems creatively.
That being said, I agree that a one-size-fits-all development philosophy is doomed to fail. However, I think Adobe has chosen a direction for Flash that is more geared towards programming and less towards creativity, with the introduction of Flex 2 and AS3. You may claim that AS3 is not as rigid as Java, and I agree, but it’s nevertheless an order of magnitude more rigid than, say, PHP or JavaScript. While Flash 8 and it’s emphasis on creativity with BitmapData, filters and whatnot was a step towards getting Flash back to its roots, I believe Adobe’s decision with the introduction of AS3 was to legitimize Flash as a development platform as opposed to a “toy”. I personally think (not sure if I mentioned it before, but regardless) that by doing that they’re shooting themselves in the foot, with the risk of alienating the pillars of the community with a new product that is aimed at doing “boring but useful” stuff. But Adobe is not stupid, and if they’re doing that I think it is because they believe that the market for creativity on the web is doomed to shrink, so they’re looking for a new market that will allow them to continue to cash in on the lucrative Flash name.
There’s been a lot of resistance to this movement towards “serious apps”. I’m thinking of the Papervisions and Fuses and Brevitys here. But Adobe decides where Flash is going, not the community, so I’m not sure how long this traditional creative Flash has to live.
To sum up: bringing back fun into Flash is a noble goal, but I don’t think 1) data exchange *can* be fun (but it *can* be not mind-numbingly painful) and 2) Adobe is trying to make Flash grow up, and that means less fun and more seriousness. It’s a sad affair, if you ask me, and it’s one of the reasons why I plan to retire from Flash development in the following year or so, but we have to remember that Adobe is not a fuzzy stuffed animal that brings us unconditional love, it’s a multi-billion dollar conglomerate which has a quasi-monopoly on creative computer tools and is ultimately only interested in its bottom line.
Aral,
FWIW, I can’t imagine how anyone could look at the code you released and say anything but “Hey, neat idea - let’s see how this thing shapes up-” I mean, you really did make it clear that it’s in early stages. Surely you can’t be expected to jump straight to 1.0..
Well if it’s the case that more seriousness leads to greater programmatic constipation and, ultimately, a sad reduction of output from the flash designer/developer etc, then cases such as these, where people such as aral are trying to push things in new directions, are all the more important, particularly as a tool of inspiration for others.
I can’t help but feel that there’s much more fun to be had in playing the game, experimenting, making mistakes even, than sitting, easily-hidden in the crowd, criticising, and nay-saying. Life would thus be a lot more serious and even less-inspiring if all observers were of this nature. You can sit and observe all you like, but if you’re not happy with what’s being made, i’m sure you have the skills to do something about it?? I would gladly pay to see that happen…
Thank you Patrick, and thank you Mr. Hultberg.
If it weren’t for your degrading remarks and harsh criticism of the fine work done in SWX I wouldn’t have read one of the most fantastic and inspiring blogs on what Flash is and what Flash is not.
I have taught Flash at the collegiate level for many years now and I always have 3 groups of students that join my class, the hard core developers that would rather write in Bytecode than Actionscript, the amazing designers that see the potential of Flash for creating interactive pieces that are visually stimulating and the film and animation students.
Flash is a tool designed for all three. I always have students that drop-out because there is either to much code or not enough code. This is a true shame. Flash is supposed to be used with all three disciplines. A tool that is amazing when you combine all three. If you have fantastic design, motion and animation, and then fine code you can do things that have never been considered before. Code alone can never do what Flash (the entire tool) can do. We worked on a project a while back that was a simple child’s Pictionary game and one of the “programmers took 3 days to program, abstract, optimize, etc… a game that had much less impact and usability than the same game created by one of the designers in a few hours. Good code is important. Thinking outside the box and using the best tools for the job is more important
Just like you said Aral some of my very talented students are petrified because of the code elitists that say if you aren’t using 10 design patterns in each project in exactly the right right way then you need to choose another career path.
I have seen some incredible things come out of “spaghetti code” Flash Forward film festival finalists have been guilty of writing “Spaghetti Code” some of the best and most complex games are written on engines that use Flash 5 as the code base. The important thing is that people are doing it. It is not nearly as important that a class has the proper structure as it is that people are creating, exploring, and innovating.
Your post will be mandatory reading for my classes. Please keep this post up for a long time.
Thanks,
P.S. Did Patrick really say this about Adobe?
“they believe that the market for creativity on the web is doomed to shrink”
Is he using a text based browser? Has he seen the Adobe product launch of CS3 or theFWA.com or… well… any good website? Those are some crazy words to be putting into Adobe’s mouth. We are just seeing the tip of the iceberg for creativity on the web and I am pretty sure that Adobe recognizes that.
Hi Curtis,
Thanks so much for your kind words regarding the post and SWX.
Ahh i hate SWX!!! you have nothing but problems with it :-((
Hi Joseph,
I just emailed you as well but if you can tell me what problems you’re having with it, I can help you with them.
I haven’t had anyone else contact me with problems yet.
Take care looking forward to hearing from you.
Hi Joseph,
Since you have not replied to me either here or via email, I am going to assume that you were probably trolling and not really having problems with SWX. If this is not the case, my offer stands, contact me directly and I will work with you to make sure that you’re up and running with SWX.
Your’s is the first such feedback I’ve received about SWX and, if your complaint is legitimate, I want to hear about it and help you overcome whatever problems you’ve encountered with it.
Hi Aral,
I found your page because I googled for [”Warren McCulloch” quote]… This is a really nice blog, congrats! As a software developer for several scripting languages I could not resist to read this article and posting my comment:
“I wouldn’t hire people who wrote code that looked like that, and I sure wouldn’t use their frameworks”
… it is hard to review such code, thats true, but (face the facts) have you ever reviewed a project, that works brilliantly with continuesly added modules? The focus lies alway on the next step and not on the last perfect line of code…
“Unfortunately, however, it does show us the ugly face of elitism that I myself have been guilty of perpetuating to a certain degree without ever meaning to.”
Gnah… This elitism is common use in some perl communities. But “Flasher” are the creative easy-going… I thougth! ;P
“You do not need to be a computer scientist to make amazing Flash stuff and to have fun with Flash. ”
mhm. A semi-pro can make great things. But I think, that you always can see that: “Aha. nice. semi pro.” It’s ok when you want to create things that not get reviewed by real professionals.
Greetings from Germany,
Hendrik
Hi, nice web - site, and thanks a lot for all the useful informations, kind greetings from germany
I can’t help but feel that there’s much more fun to be had in playing the game, experimenting, making mistakes even, than sitting, easily-hidden in the crowd, criticising, and nay-saying. Life would thus be a lot more serious and even less-inspiring if all observers were of this nature. You can sit and observe all you like, but if you’re not happy with what’s being made, i’m sure you have the skills to do something about it?? I would gladly pay to see that happen…