Tuesday, September 11, 2012

With No Further Ado, Here's Flex 4.5

Almost four months in the making, Flex 4.5 has just been cleared by QA for general release and we've scheduled a full push of the new version just after 12:00 AM Pacific Time on Wednesday, September 12th. 

That being said, the release is done and ready.  Some beta testers got the release last night and anyone who'd like to get it a few hours early should feel free to contact us at support@flexrentalsolutions.com.

The Big Picture

Flex 4.5 includes a large number of new features, enhancements and bug fixes as detailed in the release notes here.  This release began as a simple release designed to added tiered pricing rules in order to support the complex labor calculations common in our industry.  This aspect of the release was completed fairly early on in the process.  What derailed the schedule, the usual frequency of our releases, was a redesign of the calendar system.

We had a customer fast track issue asking if certain columns could be added to the daybook screen.  We could have done it as a one off hack for this customer and the specific column they wanted.  Instead, we decided to redesign the system such that any field could be added to the Daybook.  In general, we felt the technical architecture of the calendar was outdated and inflexible, so we pulled it apart and put it back together the right way.  In addition, the old filter tree Shoptick users may remember had been ripped out when the Ajax calendar was moved to Flash.  We redesigned it and brought it back.  Chris is preparing a video tutorial on the new calendar system with more detail.  I'll update this post when it's ready.  It's also been discussed at length in the support forums here.

At a high level the new calendar system isn't wildly different from the old system - it merely adds more personalization and flexibility.  We take an old Flex concept of Calendar Templates and better integrate it with default calendars.  You can now configure any number of different calendar templates, determine whether or not the list (daybook), traditional calendar, or Gantt views are considered relevant for a particular template.  You can use the filter tree to determine what types of elements and statuses are shown on a calendar - and you can also determine what fields are shown in the list or daybook view.  You can even change the name of the daybook view to something else if you have different lingo.

Other Stuff

A significant amount of time was spent in the last month or so fine tuning the scan and availability process, particularly for non-serialized items and subrentals.  Any fixes related to pricing math and availability usually take a little longer because we build regression tests for these kinds of fixes (to make sure what gets fixed stays fixed).

You can also now cross scan items from one list to another without manually scanning each item in and back out.  This should cut scan time in half in certain warehouses.  This is the first stage in a series of improvements planned to support alternate warehouse workflows.  We'll soon be introducing something to the scanning process called Concurrency Mode.  Right now there's only one concurrency mode: Real Time.  In the coming months we'll be introducing two others for fast paced warehouse environments.

One of my favorite enhancements in this release involves reworking the way availability is calculated for suggestions.  Some customers with lots of suggestions were reporting long wait times as availability was calculated.  We redesigned this to be a lazy loading process on a per suggestion type basis.  We also added the availability meatball to the suggestion dialog so the way availability is displayed remains consistent.

Those of you who frequently interact with administrative screens may notice that many of the admin console menu options have been moved into the workbench.  This is part of an ongoing process to phase out Struts, as Roger Diller - the developer heading up this effort - noted in his blog post dated August 31.  Struts is an older MVC framework introduced with Shoptick E.  As we get ready to move toward a REST/JSON oriented architecture for our mobile back end, we felt it was wise to start clearing out the cobwebs so we don't need to run two MVC frameworks side by side.  For the curious, we're probably going to run the REST back end we'll use to support iPhone/iPad devices on Spring-MVC.

A little Easter Egg that's come out of this refactoring relates to how the Performance Monitor was moved from HTML to Flash.  We introduced the first glimpse of our new dashboard architecture.  To access it, put the workbench in debug mode by adding ?debug=true to the URL and goto Flex > Performance Monitor.  This was a nice bit of initiative on Roger's part and I think it turned out great.  Can't wait to see how it looks when we bring back the dashboard.  (Remember Flex/Shoptick had the industry's first dashboard way back in 2007.)

Coming Up Next

The calendar redesign put us in the weeds and a large number of Fast Track projects have stacked up, so the next few releases will be dedicated to custom development for Fast Track customers, many of which are small tweaks and enhancements.  We'll also be monitoring customer logs for error reports and I would anticipate a fairly frequent number of maintenance releases over the coming weeks.  It's been several months without a release, which I want to emphasize is not really how we prefer to do things.  We prefer small, frequent, incremental releases and until the next big redesign project, we're planning on getting back to that way of doing business.

If the upcoming part of the development roadmap has any overall themes, they would include adding scheduling and planning tools to the labor/crew list section, adding scan concurrency modes for fast paced warehouse environments, and multi-session event planning.  We're also planning a big upgrade of our internal development tools and a redesign of the security architecture we use to administer and support customer systems.

I'm also sneaking in support for lighting paperwork.  Since I worked myself into a desk job a decade ago supporting people who do what I used to do, I've missed being out in the field and I volunteer with a local community theatre as a lighting designer a few times a year to stay current.  I really don't want to buy Lightwright just for two shows a year, so with no offense intended to John McKernon, I'll be introducing configuration options that will enable lighting paperwork to be incorporated into pull sheets - with custom reports for Instrument Schedules, Channel Hookups, etc.  Our customers may find this useful, but it's really just for me at this point.  One of the perks of being the software developer is that you can occasionally slip something in for yourself.

In Conclusion

I'm proud of what we've accomplished in this release.  Roger, Suman and Courtney have worked incredibly hard to get it ready and tested.  The calendar redesign did blow our schedule and make it tough to set expectations about when the release would be ready.  For those who wondered what was taking so long - it was the calendar and subrental testing.  In the future we'll introduce code branching for major rework so that critical bug fixes aren't delayed by other unrelated work and we're also introducing some process changes to ensure that we get back to the tight, frequent release schedules our customers had come to expect prior to 4.5.

Thanks to our growing customer base for their support thus far and their patience.  If any problems arise tomorrow morning, please let us know.  If you'd prefer to evaluate the release prior to deployment, please contact support and we'll take you off the automatic push list and arrange a private beta site.

1 comment:

  1. I been using flex for a little over a year and as we grow I get into more features that Flex has to offer and just floored, how fast the support team is and seems they have created a great community with the Flex user forums.

    Keep up with the good work and the humour your have in answering our questions.

    ReplyDelete