How's it going with this Flex stuff?

I think it’s sometimes a good idea to conduct a thorough hard-hitting interview with yourself about a subject to fully explore said subject. There now follows an interview between you (U) and me (I), where I pose and answer the questions I think you might ask of me, and I’m not going to hold anything back…

U: A little while ago you talked about redeveloping CaseDetective with Adobe Flex, is that still happening?
I:
Sure is.

U: Great! How are you finding Flex then?
I:
I’m loving it.

U: Care to expand on that, it’s not going to be a great interview if you don’t give me proper answers!
I:
Oh, OK then, sorry.

I’m really enjoying developing with Adobe Flex, it’s name is very apt, the flexibility you have while developing is fantastic. Just being able to drag and drop a number of controls in Flex Builder’s great looking design view, and then switch to source view to add a few extra details is wonderful. The xml like nature of the mxml format makes this a breeze, especially with Flex Builder’s code hints and completion.

ActionScript (Flash Player’s and therefore Flex’s scripting language) is very clean and familiar, being based on the ECMAScript language specification. Anyone with even a smattering of experience in Java or any other modern object orientated language will get on famously with ActionScript. It’s deeply object orientated, it’s amazing what you can do with it, especially as the Flex and Flash libraries are pretty solid, and easy to extend.

U: It looks as though Flex Builder 3 is coming on strong, have you looked at it?
I:
I switched to using Flex Builder 3 beta 1 a couple of months ago!

U: Isn’t that a bit risky, developing on a non-released development platform?
I:
Some might think so, but in this case it works for me.

I started off with Flex Builder 2, bought it (and lot more from Adobe), and it does the job. However, when I saw some of the great new features in Flex Builder 3 I had to take a look.

I spent a good few weeks continuing main development in Flex Builder 2, and then checking out to Flex Builder 3 to see how it handled it. I had no problems at all.

When I played with the new AdvancedDataGrid I knew I couldn’t stay on Flex Builder 2, I wanted the multi-column sorting and grouping functionality the AdvancedDataGrid has to offer.

When I had good long think about it, I realised that I’m not planning to release CaseDetective 2.0 until early next year, which coincides quite nicely with the planned release schedule of Flex Builder 3. So for me it’s a strategically positive plan to develop with the better functionality available in the beta releases and submit any problems to the Flex Builder team, than to carry on using a version that doesn’t give me all of the whiz-bang features I want and that I’d want to upgrade around the time of CaseDetective’s release anyway. Better for me to get ahead of the game and be familiar with the new version of Flex Builder and the Flex SDK than to have to catch up later.

U: You mentioned the AdvancedDataGrid as a feature you’re really enjoying in Flex Builder 3, anything else you’re liking?
I:
The other Flex Builder 3 features that I’m totally and utterly in love with are “Mark Occurrences” and Code Refactor support.

Mark Occurrences highlights every occurrence of a class, function, variable etc that matches the one your cursor is currently on. It’s sounds like a very simple feature, but believe me it’s a really intelligent and very useful one. When your cursor is on a variable name for example, every usage of the variable is highlighted in a nice blue colour, and in the right hand gutter is a little blue block that shows where the occurrences are across the whole file. If you click on one of those gutter blocks the code window moves to show it, which is great for quickly navigating from the declaration to the use of a variable etc. It’s hard to explain, but it works very well and has really sped up navigating source files when editing. What’s particularly nice is that it understands scope, so it knows that the same variable name declared in multiple functions is not the same variable.

The new Refactor contextual menu is very handy when you’re zipping along with development and find you could have named that class, function, variable etc better. Pick refractor -> rename, give it a new name, select Preview to see all the places that it’ll get updated, from the declaration to all the uses, hit OK and the jobs done. Wonderful, saved me a barrel load of time, and what’s more removes all reasons for keeping a rubbish name, making code much easier to read.

Flex Builder 3 Beta 2 was released just a few days ago, and having those two features has made this week one of my most productive and committed development weeks for a long time!

U: Thanks for giving us the time for this interview Ian, much appreciated.
I:
You’re welcome, enjoyed it.

No comments.

  1. Thanks for the insight. I *might* be doing the same (re-invent my app in Flex).

    Are you tying everything to the back end via REST?

  2. Good luck with re-write, if you do it.

    Yeah, the FogBugz API is a basic REST implementation, tell it what you want, back comes some XML.

    http://www.fogcreek.com/FogBugz/docs/60/topics/advanced/API.html

  3. Welcome to Flex, Ian. It’s an awesome platform, and if the stuff Adobe just demo’d at MAX is any indication, it’s getting more awesome by the second.

  4. Thanks Maxim, I agree, Flex is going from strength to strength, I’m very glad I picked it for CaseDetective 2.0 and CaseDetective On Demand.

  5. Occurrence markers and refactor menus seem to have been borrowed from eclipse. Adobe should go all the way and get all of eclipse’s code assist features as well. Have fun :-)

  6. Subhash, using Flex Builder is the first time I’ve used the Eclipse IDE for any real length of time, and must say that I’m very impressed with what’s available.

    I’m sure the Flex Builder team intend to integrate all the Eclipse niceties over time, I’m personally hoping they bundle the Subclipse plugin in a future version. I know it takes just two minutes to install it, but still, I expect a huge proportion of Flex developers will be using Subversion and will be grateful if it was installed as standard.

    Thanks for your comment.

  7. A lot of people like Subversive too, which might be why they left it out.

    I personally use Subclipse after a bad experience over a year ago with Subversive, but I know some people who like Subversive better. Might be time for me to give it another shot.

    - max

  8. Subversive looks interesting, seems to be a little more powerful than Subclipse, not that I’ve felt restricted by Subclipse though, it’s done everything I’ve needed so far.

    While looking at the Subversive screenshots I did notice that the commit window doesn’t have the nice list of changed and unversioned files that Subclipse has, that’s a worry for me. I use that list of files as confirmation that everything is picked up before I commit, and as a convenient way to add files to the repository all in one go.

    I was going to say I might have a look at Subversive when I install the next iteration of Flex Builder, but unless that commit window changes I bet I’ll stay with Subclipse.

  9. Hi Ian,

    I found your blog by looking for information on REALbasic, which I planned on using for cross-platform development. Why have you chosen to turn to flex (which I also consider), rather than sticking with RB?

    Any insight mcuh appreciated :)

    Chuck

  10. Hi Chuck,

    Good question, I may just have to blog the full answer, but here’s the summary:

    I could have continued with REALbasic, it has perfectly good web-service and XML functionality so the requirement to connect to FogBugz On Demand isn’t a complete reason for the move, just a trigger for my re-analysis of the technology I want to use.

    Enterprise Penetration: REALbasic doesn’t seem to have the enterprise acceptance that Flash/Flex does, which is very important for me as I make most of my income from contract development and need to find something beyond Informix 4GL.

    Online and Offline: With Flex and AIR I can created an app that can be delivered online and on the desktop, big win for me as I can hopefully capture the FogBugz On Demand crowd with CaseDetective On Demand as well as self hosted users of FogBugz with CaseDetective 2.0.

    Graphs: The third party graphing controls for REALbasic simply aren’t anywhere near as sophisticated and good looking as the Flex graphing ones.

    Sex: Flex/AIR is just much sexier than REALbasic!

  11. Thanks for the reply Ian :)

    I can see how the move makes sense in your case, it sounds like you thought it through. I am also glad to see that none of these reasons would affect my consideration of RB as x-dev platform – I really like it so far (trial version).

    I look forward to reading more on your new development experiences, good luck!

  12. Good luck with your development too Chuck.