I’m a developer and flash is in my toolbox

I’m an interactive developer and the main part of my job is to build interactive experiences that connect people with data.

Like any builder, I use tools to do my job. Over many years, I have carefully chosen the tools I use and have watched them change and grow. I’ve kept up to date with the strengths and weaknesses of each of them so that I can apply them correctly in my work.

Flash is one of the tools I use often as the experience I can deliver is fantastic. I’ve seen the platform and language grow over the years and while I do get frustrated at some of its oddities and occasional bugs, I’ve come to be quite fond of this tool in my toolbox.

I like the flash platform enough that I dedicate every third Wednesday night of the month, along with preparation time, to co-manage the Brisbane Flash Platform usergroup. Along with this, I’m organising the flex launch party for Brisbane and speaking in the flash stream at the webdu conference, as I have for the last 2 years.

Recently there has been a lot of talk about the demise of flash and why flash is ‘bad’. I wouldn’t mind if it was factual, but I’ve become annoyed with the misinformation that keeps getting spouted about the flash platform. I’m writing this blog post so that I don’t have to keep repeating myself when presented with misinformation.

Flash is accessible

If you are curious about the details, come along to the Brisbane flex launch or my Webdu session. There is a bit of work to get accessibility to work smoothly when you have custom rich content, but that workload is decreasing and the information and support is increasing. There is also a lot of out of the box accessibility in flex and flash.

I have been making keyboard accessible projects since 2003, when I started working for an eLearning company. Even back then, buttons were keyboard accessible without any additional work by a developer. Having custom tab order more of a challenge, but possible.

Flash can talk to screen readers and other assistive technologies through the Microsoft Accessibility interface. This has been possible for a while (2005 from memory). Other platforms are on Adobe’s radar too: http://blogs.adobe.com/accessibility/2010/03/flash_player_and_flex_support.html

If you plan your application correctly, you can skin it to support larger text, more contrast etc just like, and sometimes more powerfully, that you can do with CSS.

Flash takes no longer than any other content to load

Flash sites are often larger than html sites only because of the extra content they contain.
Flash has fantastic loading controls; you can control which order elements load (instead of the browser deciding for you) and what how many bytes are loaded at a certain time. Flash is also a compiled language, so only the final binaries are sent to the browser. This can make a code heavy site actually smaller than its html/js counterpart.

You can use browser controls to navigate in flash

Search ‘deep linking flash’ or ‘swfaddress’ in Google.

Ads and annoying intros are easy to produce in other languages

Yes ads and some intros can be really annoying. If/When HTML5 becomes available; the same annoying content will still be present. Removing flash from the equation won’t remove bad design or advertising.

Content isn’t free to produce. If you are not paying money for the content you are receiving, then you are paying through another currency. This is usually through advertising or the data that is being collected about you.

Adobe is not about to die

Adobe produces tools for designers and developers. Those tools will move with the community. Even in a world with no flash, people still need the ability to create graphics, animations and code.

I’ve seen demos at adobe events and online with content publishing from adobe tools out to HTML5 and linking with data to render dynamically. Producing tools for flash does not exclude them from producing tools for other mediums and technologies.

HTML5 does not do everything flash does

As I was working on a project this weekend I realised that without flash I wouldn’t be able to build what I was building. Sure I could still build the intention of the system (a safety quiz), but it wouldn’t have the same engaging experience to make people want to interact with it.

I’m really looking forward to HTML5 being finalised and adopted, but it will be just another tool in my toolbox. Like my other tools, it will have its limitations and benefits. At the moment it isn’t there yet and even with the canvas features, it still doesn’t come close to what I can produce with flash.

I fear browser adoption will be slower than flash player adoption. I remember back to the flash player 6,7 and 8 days when there were plenty of neat things we could do, but our target audience did not have the latest players. Now that the player updates nicer and there are more warnings about security, the uptake of updates has increased. Browser upgrades on the other hand are still a painful and we still have to support IE6 in a lot of our development.

The Flash platform doesn’t chew up CPU and or crash browsers

A site that chews up your CPU or crashes your browser is due to bad software development. Trust me, I can kill your browser very easily with some nice JavaScript animations.

Flash does belong on a touch screen device

Touch devices in consumer pockets and homes is a relatively new development. A lot of current online content relies on mouse over interaction to work correctly. If content providers want to target these new consumers, then they will have to change their interaction design not by changing the tool they use. I’ve done a few projects for touch kiosks and having no mouse over doesn’t limit what you can produce.

The next version of the flash player will have multi-touch support along with support for accelerometer and navigation sensors for mobile devices. If you’re curious, go look at the feature list for flash player 10.1 and the partnership adobe have with the other 19 of the top 20 smart phone developers.

Intermediate layers produce sub standard apps

I believe that the more you abstract, the more you sacrifice in performance and/or control. This doesn’t mean I want to build everything from scratch. Libraries and tools speed up development time and allow content to be created in reasonable timelines.

I was looking forward to being able to publish flash content to iphone binaries. The company I work for develops business iphone apps including the Australian Dominos iphone app. The feature to publish flash to iphone wouldn’t replace our native iphone development, but would bring an opportunity to produce extra content that was cross compatible with other devices where appropriate.

I do find it sad that apple has chosen to exclude apps based on the tools used to build them instead of judge apps on their merit. Time will tell if they have enough of a developer community to support their new rules or if their exclusion will cause developers to move elsewhere.

You can develop flash applications for free using open source software

You can build applications for the flash platform completely free. Get the flex SDK from http://opensource.adobe.com/

If you wanted to write in notepad and call the command line compiler you could, or you could get a copy of flash develop (free and open source). This program is fantastic and I use it daily. Their time is worth as much as yours so please donate to them if you use the program.

I also use the creative suite daily to produce the graphics and animations for flash applications and from a business sense they are worth every cent. Adobe doesn’t prevent you from using any other program to create your flash platform targeted apps.

In summary

Bad designers and developers write poor interfaces and bad code – don’t blame their tools.

Thank you for reading and I hope you have learnt something.
I’ll add any extra points I hear over the next few days.

Posted in Programming | 2 Comments

Breaking things

I’m in the middle of updating things around here – the sidebar and navigation will stay a little broken for a bit.

Posted in Site updates | Leave a comment

XAMPP and skype

If you load skype before turning on your apache server, you will notice that it won’t load. Doing a port check shows that skype is listening on port 80.
Two easy fixes:
1. Quit skype and load xammp and then reload skype
2. Change the port xammp is listening on

Posted in php | Tagged | Leave a comment

Regular expression to find <? instead of <?php

So I was getting “Parse Error: syntax error, unexpected $end filename on line linenum” In a wordpress plugin. The file was working correctly on my live server but not on xampp and the line number was the last line of the file. A bit of googling searching pointed me to the issue being a mixture of <? and <?php.

So if you come across the issue, and don’t want to manually search through your 2000 line file to find the offending tag, the following regular expression will find those naughty <? tags

Posted in php, Programming | Tagged | Leave a comment

Handy info for staging wordpress sites

When setting up a wordpress site, I’ll usually develop it in a staging environment and then deploy it live. In the past i’ve been manually changing the database as per the instructions I found a couple of years ago. I decided to see if there was an easier solution and there is.
Wordpress has information on changing the site url

In other wordpress tips, Xammp lite is fantastic for setting up a small little dev site locally.

Posted in php, Programming | Tagged | Leave a comment

Securing your swfs

I just came across an article on creating more secure swfs from adobe.

P.S Unlike my personal blog, which has a decent amount of activity, this side of my blog has gone a bit unloved. The reason is that when I’m programming at home, I’m usually trying to solve a ‘what if’ or ‘I wonder if this is possible’ problem and when i’ve solved the problem it is usually late and I feel no urge to clean it up to show the world. Therefore I am going to aim to share links and small snippets as a reference for when I or anyone might need them later.

Posted in actionscript | Tagged | Leave a comment