In development: flashticle
We at Mochi Media have been working on Macromedia Flash related stuff a lot lately (especially MochiBot). One such thing is a soon-to-be-released (but available from svn) open source library called flashticle.
flashticle deals in all of those gnarly binary proprietary formats: FLV, SWF, AMF, Flash Remoting, Local Shared Object files, etc. The only reason this was possible is because of the efforts of the osflash community, who have tirelessly reverse engineered all of these things and boiled it down into source code and documentation that I can learn from.
One of the more interesting features of flashticle is the integration it has with TurboGears: flashticle.turbogateway. This lets you very simply develop Flash Remoting services using Python. How simple you ask? Well, here's the Python source to TWO demo applications:
- turbogatewaydemos.model (database model for both)
- turbogatewaydemos.services.PizzaService (pizzaService example from AMFPHP / ARP)
- turbogatewaydemos.services.BirthdayOrganizer (BirthdayOrganizer example from OpenAMF / ARP)
This is a total of a whopping 117 lines of very liberally spaced Python code that defines all three database tables and fully implements every feature of both sample applications.
The PHP version of the pizzaService backend (pizzaService.php) is 138 lines of code, is one big security flaw (doesn't escape SQL properly, big surprise), is MySQL specific, and it doesn't include the DB schema and can't create any tables for you (thank you tg-admin sql create).
The Java version of the BirthdayOrganizer backend, which I won't even bother linking to, is well... ginormous. 246 lines of XML configuration sludge in 5 files, 29 lines of SQL schema in 1 file, and 3004 lines of Java code in 45 files. Holy crap. If you add that all up, the trivial BirthdayOrganizer example is only a hair shorter than all of flashticle! And the BirthdayOrganizer example builds on top of 15 Java dependencies and requires a J2EE server plus ant. Friends don't let friends code Java. Oh, and it's also MySQL specific, but you better be damn well sure that there's a stub implementation you can subclass and an XML file you can mangle in order to support something else if you so choose to write that 200 lines of code to support a single three column table database.