Amcom Home Page

 Service Capture 2.0 Available

As mentioned at MAX 2008, Flex Builder 4 will have a built in network monitor so that you can watch what's going on behind the scenes as your client interacts with back-end servers.

But... until then, a tool you definitely need to have (even when FB4 becomes available) is a good traffic analyzer. The two popular ones for use with Flex are ServiceCapture and Charles Web Debug Proxy.

These tools are lifesavers, and can save you an enormous amount of time when trying to figure communication/integration issues.

Kevin Langdon has now released a major update to his ServiceCapture tool which has a slew of nifty enhancements. Here's a snippet:

Save and Restore Sessions
A full session's data can now be saved to a portable file. This allows you to open up a previous session from any computer. It is the perfect way to prove to a remote team member that you are in fact seeing some unwanted server responses.

Firefox Extension to Automatically Handle Proxy Settings
Now with a very simple installation, you can say goodbye to starting and stopping Firefox while working in ServiceCapture.

See Trace Output from Flash Player
If you have the flash debug player installed, ServiceCapture will now display all trace() calls inside it's UI.

Map URLs to Local Directories
You can now map a segment of a URL to a local directory. This allows you to mimic a complete static website from your hard drive with no local server and the whole time your browser still thinks it's hitting production servers.

Resend/Test any HTTP request
You can now select resend any HTTP request and view the results. This allows you to isolate and test a specific service call. Gone are the days of signing in and recreating 33 steps to test one call back to the server.

Include/Exclude Based on URL Regular Expressions
Tired of seeing all those request for files you don't care about? You can now exclude or include requests based on any part of the URL, domain, extension, or query string.

Monitor ANY Log File
You can now setup ServiceCapture to point at any text-based log file on your system and it will display logging inside the UI with the other events and network traffic. This is great for watching an HTTP Server error file for any issues that might be related to your browser's requests.

Images Displayed in Response Area
A new tab was added to the Response area to allow you to view any image that is served back to your client.


For more information visit www.kevinlangdon.com.

 Split Screen View in Eclipse

Most IDEs offer what's known as a "split screen" view. In such a view, while editing a single file, you can horizontally "split" the page in the editor and scroll each section individually. This is useful when you've got a particularly long file to edit, and you need to see some code at the top of the page while editing code at the bottom (or really, editing any part of the page that might depend on another part that would have otherwise scrolled off of the page).

A co-worker is trying to make the change from his current IDE to Eclipse and recently asked whether or not this functionality is there. The answer is yes. Kind of. It's not a "true" split screen view, but here's how to get as close to it as is currently possible within Eclipse.

[More]

 Adobe MAX 2008 Formalized wrap up in printable format

One of the things that we do when sending team members on training and conferences is to share what they've learned with the rest of the team.

Taking all the notes we've made from our time at MAX08 we've polished that off into an organized format that's easy to digest.

The following link are the notes that we've shared with the team that we'd like to share with the community.

  • Amcom Tech's Adobe MAX 2008 Notes

  •  Stress Testing a CF Server - Interesting results

    Over the years we've been enhancing this fairly large (500K+ lines) CF application. It's a system that we've inherited, and as we've built up the infrastructure we generally knew what the operating capacity needed was.

    As part of a Disaster Recovery project we've relocated the environment to a state of the art Colo, so as part of building a brand new home for this product we wanted to do some stress testing. Part of that was to observe how the Web/CF/DB servers perform, but this is the first time users would be accessing the servers over a WAN - so we wanted to simulate what the experience will be like when the WAN has heavy HTTP load on it.

    Tool Selection

    We needed to quickly find some tools to do this, so we took a look at a few products including Microsoft's Web Application Stress Tool, Minq's PureLoad, Paessler's Webserver Stress Tool 7, and Apache's jMeter.

    Microsoft's tool seems to have technical potential, but from a usability point of view it's difficult to use. PureLoad is industrial strength, and a great solution if you need to do a lot of it regularly, but the setup is too involved for a quick and simple test. Similarly with jMeter, it's an industrial stength tool, but there's no way non-technical people would be able to quickly get it setup.

    So that left us with Paessler's WebServer Stress Tool (PWST); it's got great features and the ability to do complex scripting. But our use case was to have a bunch of people load it up on their desktops and fire away with a barrage of canned URLs. And PWST can help you do that in a matter of minutes.

    Granted, when the URLs remain static you'll start to get caching going on at very levels of the system, but we made sure everyone was generating their own unique set of URLs that even if cached were returning significant amounts of data.

    Observing the Results

    Our environment consists of a CISCO Network Load Balancer using round robin w/sticky sessions to four ColdFusion 8 Enterprise servers.

    We progressively ramped up more and more load and could see the load being distributed fairly evenly, and CPU and Memory increased at a linear rate.

    Another goal was to progressively increase the load towards a point of failure, and as the load ramped up towards 10X more load than what the servers would ever see, it was interesting to see how the system failed. I was expecting for one server to lock up first, and then the others to pick up the slack but act incredibly sluggish before another went down.

    What actually happened is within 10-15 seconds of the first server going down, the load was re-distributed and the remaining servers were already on the brink of failure that they all went down pretty much at the same time.

     MAX 2008: New ColdFusion IDE Announced ("Bolt")

    BoltLike many folks, I wasn't fortunate enough to be able to attend MAX this year, but thru the magic of the interwebs we were all able to "listen in" on today's keynote.

    Some interesting information about FlexBuilder and Dreamweaver... but the big news for me, as well as a lot of ColdFusion developers, was the announcement of Bolt, a new Eclipse-based ColdFusion IDE.

    There is not a lot of information available yet. The product isn't available for download. The best you can do is sign up for Adobe's prerelease program at http://www.adobe.com/go/boltprerelease. What little information there is can be found at http://labs.adobe.com/wiki/index.php/Bolt.

    Looking forward to hearing more about Bolt as information becomes available, as well as eventually test-driving a beta.

    PS - Yes, I'm aware that the Bolt image above isn't the ColdFusion IDE Bolt. Best I could do for now. Hopefully Disney doesn't sue. :)

    UPDATE:
    via Kristen Schofield's blog, what I assume to be the actual Bolt logo:

     Windows Users - Use ClearType

    At Amcom we're huge fans of maximum resolution and minimum font sizes, and apparently I wasn't fully maxing out on this capability.

    I noticed that one of our guys (Charlie) was coding with the Consolas 8pt font, but when I used it, it was blurry.

    Turns out the trick is to enable ClearType - which isn't on by default. If you're a fan of the ultra-small fonts, make sure to enable ClearType and try the Consolas font at 8pt.

     Structures and Pointers

    This is one of those entries that's kind of embarrassing to write, because I'd like to think that after doing this for as long as I have, it wouldn't have been an issue that stumped me for an hour. But it did. And I'd like to think that it may potentially stump somebody else, so let's get it out in the open and try to save somebody else an hour.

    I had data that related to 3 distinct entities. Let's say those entities were representations of an employee (a nice textbook-ish example). Employees have names, phone numbers, and departments. I want to store that information in a structure for each employee, and put each structure into an array. Here's how I went about doing that:

    <cfscript>
    	employees		= arrayNew(1);
    	employeeStruct	= structNew();
    	// populate employeeStruct, append to array
    	employeeStruct.name		= "Bob Smith";
    	employeeStruct.phone	= "800.555.1212";
    	employeeStruct.dept		= "Marketing";
    	arrayAppend(employees, employeeStruct);
    	// populate employeeStruct, append to array
    	employeeStruct.name		= "John Jones";
    	employeeStruct.phone	= "800.555.1313";
    	employeeStruct.dept		= "HR";
    	arrayAppend(employees, employeeStruct);
    	// populate employeeStruct, append to array
    	employeeStruct.name		= "Frank Wilson";
    	employeeStruct.phone	= "800.555.1414";
    	employeeStruct.dept		= "IT";
    	arrayAppend(employees, employeeStruct);
    </cfscript>

    [More]

     The ever growing mobile use-case and the impact to SDLC

    Few companies/organizations have made much of an effort to cater to the mobile use case, let alone specifically support it.

    Dev teams may have dabbled with it, but the reality is the demand from users (traffic wise) wasn't there, and from an ROI perspective the return didn't justify spending much QA time testing it, let alone developing views optimized for low resolutions.

    The traffic (as a percentage of overall traffic) still isn't there, but we're starting to see end users beginning to experiment more with what they can do with their mobile devices. Obviously iPhone opened up playing field, and as the next gen Palm, BlackBerry, HTC, and Android devices grab market share we're seeing users give them a try with our online web applications.

    Assuming mobile traffic becomes substantial enough to warrant catering to this use case, how does that affect the SDLC?

    From a development perspective, this is where your efforts in MVC are going to pay off as you focus on building different mobile views.

    As for the testing portion of development, and QA itself, obviously these are tremendously impacted. I'd expect to see test automation tools that can simulate different devices, OS's, and browsers. Similarly emulation tools that show you what it would look like on such a device; without it you'd need to buy all the devices you support, and they're coming in over public internet which typically your Dev and QA environments aren't exposed to.

    It's still a ways to go before these become a serious challenge that Dev teams need to deal with, but as it ramps up over the next few years and it'll be interesting to see how teams and tools adapt.

     Use SeeFusion's HTML interface when CPU is pegged

    We love SeeFusion - its been a life safer in helping isolate slow running pages and queries.

    But when CPU/Memory is totally pegged on the server its Flex interface may not load. As an alternative you can load it's HTML only interface which gives you a chance to spot the offending page/query.

    To do this add /html to the SeeFusion URL. E.g instead of http://machine:8999, use http://machine:8999/html.

    You can also kill a process from this page, but when it does that it'll redirect you back to the Flex interface. If it's still not loading, just go back manually to the HTML page to see if the process has been killed.

    When killing processes with SeeFusion, you may need to do it a few times. The first attempts will try to do it gracefully, whereas subsequent attempts will try a hard kill.

     AJAX/JS Framework Showdown - jQuery vs Spry

    In an ongoing effort to put together our development standards at Amcom, we're currently researching AJAX/JS frameworks. The choices have been essentially narrowed down to Spry or jQuery.

    I haven't done a considerable amount of work with either, but my personal preference leans towards jQuery. I'm more familiar with it than Spry (while I haven't really gotten my hands too dirty with it, I've used a number of jQuery plugins), and being someone who likes JavaScript I'm comfortable with the syntax.

    The boss, however, being a big Flex guy, really gravitates towards the Spry syntax, as it's more familiar to him. The boss, being a fair and noble kind of boss (yes, he reads the blog), told me to go out and do an objective analysis of the two and see if one comes out significantly ahead of the other.

    I built a few demo apps using each (http://amcomtech.net/labs/ajaxframeworks/) and from a technical perspective I have to admit, it's still kind of a tie.

    [More]

    More Entries

    BlogCFC was created by Raymond Camden. This blog is running version 5.9.002. Contact Blog Owner