360 Flex

-

Monday, February 1st, 2010

Rain is a big fan of the 360 Flex conferences. We send developers every time, and have noticed the conference quality increase with each year. We are pleased to announce that we are sending 5, count them 5 speakers.

If you are considering going, I highly recommend taking part. If no other reason than to see our beautiful faces. Here is the link to register.

Here are the individuals we are sending, as well as the sessions they are teaching:

badge-2
Speaker: Aaron Hardy
Title: Queue N Cache
Description: Take control of service calls by creating your own queue and dynamically shifting priority based off user interaction. Load what users are looking at first and and delay the rest for later. Show progress indicators in multiple locations for a single request. Once loaded, cache images in such a way that they can be displayed immediately anywhere in the app.

badge-2
Speaker: Bryce Barrand
Title: Golden nuggets: How to find and keep top developers
Description: Part I. Even in a down economy, finding top developers is quite a task. For the most part, good people have solid jobs they love. Should you cross train? Pay hefty fees for head hunters? Monster.com? In this session we will go over a couple of options, and what we’ve found to be successful for procuring those “golden nugget” employees.

Part II: Once you have them, what makes them stay? How much does company culture make a difference? How about work load? What type of environment is cost effective for you as the employer and awesome for everybody around? We’ll also cover tips on keeping developers happy, and around for years.

badge-2
Speaker: Garth Braithwaite (teaching 2 sessions)
Title: Flex 101
Description: Get up to speed on Flex quickly.  We’ll be taking a full day of training to cram as much Flex 4 goodness into your head.  This training is designed for those who have never used Flex.

Title: Your Flex App Looks Like Poo
Description: There is absolutely no excuse for not skinning your Flex 4 applications.  We will be exploring skinning Workflows, skin requirements, and creating custom preloaders.  Ultimately overhauling the interface.  Although user interface design principles will be discussed, this session will not teach you how to design.

badge-2
Speaker: Chase Brammer
Title: Analytics Throwdown
Description: Clients will ask, and you will be forced to choose your analytics weapon. Learn about Adomniture’s and Google’s analytics tools and how you can use them to drive business. The session will be divided up into three sections. First, the high level details about the qualities and business benefits of each. Second, a simple walk through of how to use the tools. And last, how to implement and deploy those tools in your applications.

badge-2
Speaker: Gary Rogers
Title: Automated Build and Deployment Processes
Description: This session would encompass the often misunderstood methods for automating flex build and deployment cycles. Several options and examples would be concisely presented including java ant, php phing and others, as well as how to wield the power of the command line flex sdk. I would present a brief tutorial on how to get started with these methods. Also, a sophisticated GUI based build server concept would be discussed. I would also weigh the pros and cons of nightly builds and scheduled deployments and how these impact various architecture phases of an application. Also arguments discouraging the use of SVN/CVS for deployments would be presented.

In case you missed it at the beginning of the post, here is the link to register.

Alternative Implementation of Grant Skinner’s Spelling Plus library (SPL)

-

Wednesday, December 16th, 2009

Rain recently purchased a multi-seat site license for a great tool that is certain to save a lot of time and headache: Grant Skinner’s Spelling Plus Library (SPL – info here). This post describes some aspects of the implementation.  You can view the source here.

THE WRAPPER CLASS

The quick start documentation lists three .mxml tags to test functionality from within the application’s main .mxml file. That quickly showed us that the SPL library worked well with standard Flex components. However, due to the large scale of our application, we wanted to make sure that the functionality was available from more than just within the main .mxml file. The target property for the SpellingHighlighter.as class is bindable on the tag. So one option would be to make that property universally accessible. However, since we needed some specific behavior modification in our implementation, a wrapper class (SpellChecker.as in the .zip file below) seemed like the best option.

COMPATIBILITY WITH OUR CUSTOM TEXT FIELDS

Many of our text components are instances of Flash’s TextField class deep within custom containers rather than standard Flex text components. SPL, however, only checks the first generation of children within a container to find a TextField. The getBiggestTextField() method in the included code digs recursively to find all available TextFields within the referenced container, grabbing the biggest one for checking.

All the rest of what the class does is contained within the inline documentation. For the robustness, ease of implementation, and extensibility of gskinner.com’s Spelling Plus Library, I’d recommend it to anyone.  The only real issue right now is that it doesn’t work with Flash’s new text layout framework; I contacted them about it and they told me that that would soon be remedied.

Here’s the link:

http://blog.mediarain.com/wp-content/uploads/2009/12/splExample.pdf

Calculating Image Resolutions in Flex

-

Sunday, September 20th, 2009

Custom book builders are great Rich Internet Applications that we’ve made at Rain. One core component of custom book builders is allowing users to upload their own photos. The most common user error is uploading and using a photo that cannot be printed at a high quality print resolution. It is our job to let the user know if the image he or she has selected for a particular ImageWell (a rectangle where a photo can be placed) can be printed.

Basics of printing

Printers print according to dpi (dots per inch). Say a 1200 px x 1800 px image is printed onto a 4″ x 6″ sheet of paper. The dpi would then be:

  • width: 1200 px / 4 inches = 300 dpi
  • height: 1800 px / 6 inches = 300 dpi

Print resolutions can vary anywhere from 150 dpi (low/medium quality) to 300 dpi (high quality) and up.

Our Example

First we need to define two variables:

  1. Final print resolution dpi
  2. Warning dpi

For this example we will use a final print resolution of 300 dpi and we will show a warning if the image resolution is lower than 200 dpi. The user has uploaded a low resolution 400 x 500 photo to our photo book application. The user has placed the photo into an ImageWell that is 1200 x 1200 (square). Then the user scales the image to 200% which crops the photo and lowers the dpi.

(more…)

Flex Custom Component Lifecycle

-

Wednesday, January 21st, 2009

The purpose of this post is to identify what the component lifecycle is and how to utilize it to create components that are efficient and re-usable. I will cover both the functions we need to override as well as the events that are dispatched along the way.

First, let’s start with a quiz.

1. True or False. I know what the lifecycle functions: createChildren(), commitProperties(), measure(), and updateDisplayList() are and I use them often in my custom component development.
2. True or False. I know what circumstances are appropriate for overriding commitProperties(), measure(), and updateDisplayList().
3. True or False. I know what deferred validation is and how it is used in the component lifecycle.
4. True or False. I know when the preinitialize, initialize, creationComplete, and updateComplete are dispatched relative to createChildren(), commitProperties(), measure(), and updateDisplayList().

If you answered false to any of the above questions, I will cover the answers next. So keep reading :) .

(more…)