Over the holidays I did, as most folks I suspect, things I enjoy doing. For me, one of those things was playing around with Adobe'sFlex using Flex Builder 3. Yes, I am that much of a geek.

I was a bit concerned it would take some time to figure it all out, but after quickly realizing that MXML, Adobe's interface markup language, was close enough to XAML, Microsoft's interface markup language, it was pretty much smooth going. ActionScript is close enough to JavaScript and C and most other languages I'm familiar with so that was not a problem either. In a matter of hours I had a simple interface talking to a few PHP services that proxy Web service calls for iControl to manage and monitor my BIG-IP.

Yes, I have a BIG-IP at home. I told you, I am that much of a geek.

The downside for those of you thinking about using Flex with iControl to build some sweet interfaces to control your BIG-IP is that Adobe's web service capabilities are based on Apache Axis 2. Apache Axis 2 at this point in time supports only DOC/LIT and RPC/LIT encoded WSDL. iControl is RPC/ENC, and the workarounds available to wrap iControl is not insignificant. So unless you're willing to run a proxy (which does have it's advantages, by the way) talking directly to the BIG-IP via iControl using Flex is probably not something you'll want to consider.

If you're willing to use a proxy, however, well...it's a breeze. I reused the PHP proxy code used to create my TwitterBot and added a few more calls to expand the information I was able to get. Integrating that with Flex was simple. Using a proxy meant I could reformat the data such that I could automatically bind the data into MXML grid components with very little work. In fact, almost no work at all.

So the truth is that I really love Flex. Awesome stuff. The downside? The price-tag on Flex Builder. I have about 40 days left on my trial run and when it's done, it's done. Yes, I could use the free Flex SDK and set up the command line and compile like we used to compile Java applications, but Flex is really geared toward visual development, and that's something the Flex SDK can't provide - but Flex Builder can, and does. Astoundingly well, as a matter of fact.

It's not that I'm unwilling to pay for Flex Builder, I'm just not willing to pay as much as Adobe wants for it. Not when the interface language is essentially the same as XAML and I can zip over to Microsoft's site and download an Express edition of a visual editor for XAML and use it - indefinitely - for free. XAML is the core of Silverlight, the closest competitor to Flex and AIR, so I could do the same things without the investment. A lot of the same things can be done with AJAX, DHTML, and some intense JavaScript, for that matter. If I'm going to develop on the command line and using vi then I might as well stick to standard technologies rather than mess with command-line compiles, class paths, library linkages, and the certs required to sign the AIR package. I'm a "hobbyist" developer at this point, and $200 or more for an environment that I'll use only occasionally just isn't feasible, and the investment in time required to emulate the same thing with the SDK isn't worth it to me.

Interestingly enough, I'd pay $50 tomorrow for Flex Builder. But $250? No thanks. Too steep for what I would use it for. The ROI just isn't there at the price Adobe is currently demanding for me and, I suspect, many other hobbyists looking to do more with Flex.

So yes, I love Flex. But no, I won't pay that much to develop in it. There are too many other options out there that are more affordable or free that provide the same functionality and awesome interface experience.

You can check out the BIG-IP Deck here. Right click inside the app to view source, if you like. Feel free to copy, paste, modify, whatever you like.

And that's really the hook with Flex Builder, isn't it? The visual aspects... nothing else really allows you to do the layout/manipulation of the UI.

Positioning containers and labels and panels and grids properly is a pain without a visual aid. When it comes down to it that's what you're paying for with Flex Builder - the visual editing environment. It's worth paying for, but not that much.

@Andy : The autocompletion for MXML does sound like a nice value add, though. Would make things at least somewhat easier.

I don't think it's off-base at all, considering the quality of free development tools that do as much or more as Flex Builder from its competitors.

However, as I said in the post, *for me* the ROI is not there, it's just too costly for what *I* would use it for. Context, context.

As a hobbyist - and even as a business - there are a lot of choices out there that compete with Flex & Flex Builder that provide more affordable options for complete, professional development environments.

Flex is nice, I really do love it, but I love other languages/toolkits as well and they aren't going to cost anything to use. As a business, the price may or may not be an issue, but the cost prevents a lot of hobbyists-by-night professionals-by-day from jumping in and learning to love Flex as well. 60 days isn't long enough to create an addiction that must be fed, so the pool of available developers for a business is going to continue to be minor compared to other languages/environments, which means if I'm running a business I'm not choosing Flex as my standard framework of choice.

There are several things that need to be done to use BIG-IP deck to monitor your BIG-IP.

1. You'll have to deploy a proxy (the one this code uses is a PHP based proxy) to talk to your BIG-IP 2. The Flex source code (the MXML) contains references (URL) to the proxy functions. The references will need to be changed to point to the proxy deployed in #1.

I will post source code and project files for both BIG-IP Deck and the proxy this coming week to make the process easier.

Enterprise Manager and our management pack are specific products, so you'll need to talk to your local sales representative, engineer, or partner for those. If you aren't sure who to talk to please e-mail me direction (l.macvittie@f5.com) and I'll help you find the right person to help you get what you need.

Yes, the BIG-IP Deck can be used for monitoring of a small subset of HTTP statistics and the status of pools/virtual servers. It is a sample app, however, and not a full monitoring solution so it isn't nearly as robust as it should be. But it should provide a good foundation for building it out further to include what you need/want.

That said, the code required is now available in the DevCentral articles for your viewing/copying pleasure.

In order for BIG-IP Deck to be useful to you, you'll need to do the following:

1. Download and install Adobe Flex Builder 32. Prepare the proxy server environment to ensure PHP SOAP support. The procedure for this is described here. 3. Deploy the PHP files on the server and modify them to point to the correct WSDL files and use the appropriate credentials. 4. Create a new AIR project in Flex Builder. 5. Copy the main.mxml code into the MXML file automatically created for your project, and modify the URLs for each HTTPService in the file to point to the proper URLs on the proxy server (set up in step #3)6. Add a new ActionScript file to the project called "airstats.as", then copy the code from the airstats.as file in the article into it. 7. Build and run the project.

That should get a BIG-IP Deck that monitors your BIG-IP up and running.

I'm not sure if that's a statement or question re: PHP SOAP and Win2003. If it's a statement - cool! If it's a question - I assume it can be, though I've never tried (I run all Linux-based servers at home).

I'm running various versions of Red Hat at the moment. Ubuntu is a Debian-derived system, so there are some differences in commands that I'm not entirely familiar with. I've not used Ubuntu or installed PEAR SOAP on a server running Ubuntu, but this documentation describes several methods with which you can install. I am hopeful that one of the methods described will do the trick for you, or perhaps one of the other DC members who have used Ubuntu will be able to help you out.

No worries. As the code sits it is used to monitor only a single BIG-IP.

The error sounds like the CURL extensions are not enabled in the php.ini.

In php.ini there should a list of extensions, many of them with a semi-colon at the beginning of a line. You'll need to remove the semi-colon from in front of the CURL extension and restart the HTTP daemon.