Domain: gskinner.com
Stories and comments across the archive that link to gskinner.com.
Comments · 8
-
Flash / Actionscript3
If I was to teach beginning programming to a child or someone who does not know if they want to commit to the field, I would teach programming in Flash.
While the Flash IDE's debugging and scripting area is not suited for an experienced programmer, it does a great job of letting someone quickly wire up visual elements for that instant feedback & gratification. Core programming concepts such as variables, loops, and functions are quick to learn. For those who want to continue AS3 has a long road of concepts going into bit fields, OO, shaders, etc...
There is a tremendous amount of books on programming in Flash / Actionscript 3; as well as great web sources in the forms of blogs and communities such as:
http://www.kirupa.com/forum/forumdisplay.php?f=6
http://wonderfl.net/
http://www.gskinner.com/blog/This is coming from someone who has created and taught curriculum in Turbo Pascal and Turbo C++ back in the 90's for 11-15 year olds, and these days I am an adjunct professor teaching Flash & Actionscript3 to artists (non-programmers).
-
Re:IP and Hardware addresses
There's a really cool little "real time" regex analyzer written in Flex: (if you're not one of them scared to death by Flash content)
Maybe you can monkey your way into "regexing" the a out of apple
:p -
Re:Take a second look at flash
I just posted this link below, but since it specifically addresses speed gains in the new engine, and the scenario is rendering 3D graphics, it seems apropos:
http://www.gskinner.com/blog/archives/2007/01/the_ coolest_fla.html
And, yes, 8000 polys at 25fps is not much to brag about, but I don't think javascript would best that (and I'm one of the people who like javascript.) -
Re:Take a second look at flashOh really?
* It is almost entirely client-side code, and not very efficient at that. Java applets are more portable (because Sun releases Java on more platforms simultaneously) and faster (Flash UIs are soooo sloooow) for executing client-side code. Even some JavaScript is a better choice in many cases.
It *is* entirely client-side code. Point? Re: speed, see this post about speed gains to be had in the new engine. Of course, as dynamic-language fans are always keen to point out, today's relative performance characteristics are not a very strong foundation on which to build an argument.
* The stuff that executes server-side has to go through the "Flash gateway servlet" which won't work with anything but JRun, a horrible, unsupported, poorly documented, crash-happy piece of crap masquerading as a J2EE server. Applet-Servlet, JSP or even AJAX RPC (god forbid!) make for better server-side code.
What a strange piece of misdirection - or do you actually believe what the Adobe (nee MACR) technotes tell you? ANYTHING server-side can talk to Flash. There are 3rd party remoting libraries for pretty much every notable web server language/environment. Add to this decent support for xml in the flash client. Then, of course, AS is ecmascript so JSON is free (OK, cheap). Oh, you meant *Flex* - sorry, I thought we were talking about Flash.
* You can't separate the ActionScript into separate files. Every VCS that I've seen Flash developers use gets filled up with dozens of binary versions of the .FLA source. Some even version-control the .SWF as well. Yuck. Obviously Flash developers weren't meant to use version control, which makes collaborating with them a real PITA.
I hope nobody believes this. Since AS2 (2004?), Flash has made it very difficult not to separate classes (yes classes!) out into individual files on the classpath (yes, classpath!), making source control pretty easy, really. Before then (AS1) it was possible for quite a while by means of an #include mechanism. One thing though - why did the anecdotal developer keep different versions of the same .fla under source control? Is it possible they didn't fully grasp the concept? If so, it's kind of understandable that they couldn't make it work for them. -
What about Flash?
I love Google maps and I like what you can do with AJAX- but the fundamental problem with most browser based scripting technologies is that they're best at rending text. Don't get me wrong, anything that makes a webpage more responsive than the -click- load -click- is a step in the right direction.
Flash has earned a bad rep among programmers because it's often used for @#$?%! annoying and obtrusive ads and unnecessary web... page
... intros... that... just...- swoosha- won't... stop. On behalf of Flash developers everywhere, I would like to apologize for every 'punch the monkey' banner ad out there. But if it's used for browser rending of information being streamed over an XML socket (and no, you don't have to send XML over the connection- it's just a socket) it kicks *ss. it's scripting language, Actionscript is dead easy to learn. If you're used to Java, you can pick it up in a few days. And I'm sorry, but SVG doesn't even come close to touching it. I don't think that it will survive the Adobe/Macromedia merger.My only beef with Flash is the vector rending pipeline. You get alpha for free but try overlaying a few transparent vectors and... performance... chugs. I'm crossing my fingers and hoping that the bitmap caching (you need the Flash 8 beta player to see bitmap caching in action) in the upcoming Flash 8 addresses this problem. The demo's I've seen look promising.
Check out Grant Skinner's or Yugo Nakamura work and if you want a great example of what you can do with real-time data in Flash- check out www.dentsu.com. What you see is the real-time position of all 30-some elevators in dentsu's corporate headquarters.
Disclaimer: I am currently a Flash Developer. If you want to see my work- it's at bodog.net. It's free online multiplayer poker and yes, those are real people playing. You can see the two technologies playing nicely together- the lobby was done using AJAX technology and the actual game tables are in Flash. Try refreshing the game table if you want an example of Flash using server-based persistance.
-
Re:Please provide links.
Well, there's GModeler:
http://www.gskinner.com/gmodeler/app/run.html
I make use of this tool extensively; it's a cross platform UML diagramer with a lot of good functionality. The gskinner.com site itself is an excellently done Flash site. It showcases their technical knowhow, with out the Flash interfering with the content.
Then there's things like the Laszlo Calendar: http://www.laszlosystems.com/lps/sample-apps/calen dar/calendar.lzo?lzt=html
This is a proof of concept only, it's not actually data bound, but it has the capacity to be.
Of course if I mention Laszlo Calendar, I have to mention the other Laszlo demos:
http://www.laszlosystems.com/demos/
Let's not forget Laszlo Mail: http://www.laszlosystems.com/products/modules/mail .php
One of the best web interfaces to mail I've ever seen (sorry, they don't have an actual demo out there for you to look at, but we've met with the Laszlo guys and they've let us play with it, it's very good!)
Once upon a time, I shared the same allergy to Flash that a lot of the /. crowd owns. It is perhaps because early incarnations of Flash were really not good for much more than making an annoying splash intro. Flash as a language (or rather, ActionScript) has come a long long way. The language itself is a robust language supporting a solid OOP environment. Its ability to load content pieces on demand is highly reminiscent of Ajax that everyone is so excited about now, only it's quite a bit more powerful.
You can build a series of movies (swf's) that each perform a discrete function, and use a master movie to bring them together. When you need the calendar (or any other) piece of your application, well, load it. One command and it's placed on the stage, with a loading indicator, while the user gets to continue interacting with the other pieces of the application. You could easily build an entire browser-based OS within Flash, just like a standard OS, with each piece of it being represented by its own 'process' (movie clip), and with all of it having asynchronous data binding to a server-side database. Imagine being able to log into the same OS, with access to all the same applications and data no matter where in the world you went. It's a pipe dream, but it's entirely possible within Flash, only most "serious" developers refuse to acknowledge the possibility.
Good Flash developers have been doing asynchronous applications for several years now, but have suffered an inability to get good market penetration due mostly to the pundits who call out, "What about users who don't have Flash?" referring to that 1% subset of users using, eg, Lynx. The same individuals have no problem, however, relying entirely on CSS to do their formatting, or linking to a PDF (this generalization is brought to you based on my personal experience with such users; of course I'm sure there are purists who would refuse to rely entirely on CSS for their formatting, or who would refuse to place any object on the web that is not part of HTML1.1).
People (developers) developed the allergy when Flash was immature, and have not bothered to reevaluate it as a rich web application interface since. Laszlo is FOSS whose entire purpose is built around building rich asynchronous applications for the web. It provides all of the UI components you need to build an app (and any you created that it didn't provide can be just as easily used). It even does this in a skinnable fashion, so, like Evolution, users could load their own custom skins which would be applied to all of the default elements.
I'm not saying Flash is the be-all and end-all of web goodness. I certainly realize there are pl -
Re:secure...?
Well, that UML diagrammer linked in the story post exports the diagrams as XML which you save and then import later. So it looks like that paradigm is shifting right beneath your mouse. (It's really a pretty neat little flash app.) -
Is it me?
I've never been one to rely too heavily on online apps.
Something about trusting my data (confidential or not) to some unknown, faceless entity, for lack of a better term, has always kept me away from such services.
Not that I'm a paranoid guy or anything ("even paranoid people have enemies!"), but who knows who's really seeing what your data, and who knows what they might do with that knowledge. Whether it's initially (mis)used or not, the danger is there. And if it's archived anywhere along the way, the potential for misuse is even greater, as now anyone down the road can come along and find/sell/misuse it.
"See this killer app that everyone's talking about? That was my idea! But no sooner had I began sketching out my flow on gmodeler then 'Boom!' it was patented and being marketed everywhere. That shoulda been me...." (Not that GModel would ever do this, but it's a good example of my point).
Not to mention the confidentiality issue... I work for a financial services company, and a few years ago, we were looking at ways to quickly re-purpose a bunch of PDF documents to HTML, and one proposed solution was a web service that offered online conversion of such documents for free. Clearly though the privacy issues, not to mention potential for misuse of the data made us choose a different avenue!
Plus there's always the fear of relying on the online apps. If I become dependant upon it, either for my work, or for the convenience it offers, what am I to do if suddenly the site goes under, becomes a pay site, or simply changes URLs due to a provider going down.
Not that there aren't any valuable services out there, there are! It's just that I feel safer relying on local software, and homegrown solutions. Am I alone with this perception?