<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flexgenie</title>
	<atom:link href="http://truitgroup.com/flexgenie/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://truitgroup.com/flexgenie</link>
	<description>Creative Solutions For The Flex Developer</description>
	<lastBuildDate>Fri, 20 Jan 2012 14:44:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>What do Flex developers do now?</title>
		<link>http://truitgroup.com/flexgenie/?p=460</link>
		<comments>http://truitgroup.com/flexgenie/?p=460#comments</comments>
		<pubDate>Thu, 05 Jan 2012 11:28:30 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Random Flex Thoughts]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=460</guid>
		<description><![CDATA[Unless you have been living under a rock in the Flex world lately, you are by now well aware of the issues surrounding Adobe&#8217;s release of Flex to Apache. Being someone who has worked as a consultant in Flex development since the beginning, it took me awhile to gather my thoughts on the subject as [...]]]></description>
			<content:encoded><![CDATA[<p>Unless you have been living under a rock in the Flex world lately, you are by now well aware of the issues surrounding Adobe&#8217;s release of Flex to Apache.<br />
Being someone who has worked as a consultant in Flex development since the beginning, it took me awhile to gather my thoughts on the subject as you can imagine.<br />
I went through the stages of shock, denial, anger, and finally determined to address the subject directly as some of my colleagues have.<br />
So here are some of my thoughts&#8230;</p>
<p>First off, we are all aware that Adobe did not handle this transition in the best way possible.<br />
Within the first few days of the announcement, I received no less than 10 emails or calls from former clients that I either did work for or built and ran their Flex Teams.<br />
Of course all were in a panic as they had invested large amounts of capital and time in developing their Flex applications and were concerned for their companies and employees.</p>
<p>First thing I reminded them is that Flex has been around in various version since 2004 and that it was now a mature RIA environment and very stable.<br />
Secondly I advised them to remain calm that Flex will certainly be around for a long time to come and that their application was indeed going to be OK.<br />
What speaking with my clients reminded me of was that Perception is EVERYTHING.<br />
No one said that Flex was going away, no one said that it would not longer be supported or continued SDK development or IDEs would just end.<br />
However, a few of them immediately began talking about using HTML5 as expected.</p>
<p>Now I do believe that HTML5 is something to consider but as I began my Flex career in version 1.5 and now work in 4.5, I have seen the growing pains that all technologies go through and have no reason to believe that HTML5 will have the same issues to deal with.<br />
In the beginning we were just finding our way through things, Best Practices were in their infancy and we made a lot of mistakes and learned from them.<br />
Documentation and tutorials were scarce to say the least and we pretty much had baptism by fire during those times.<br />
The version of Flex out now is a polished and robust environment to work in, take from someone who has been in those trenches for the last 8 yrs. thing have come A LONG WAY!</p>
<p>I suspect that HTML5 will probably go the same route but do believe that any Flex developer who has more than a few RIA applications under the &#8220;belts&#8221; will make the transition into a new language well.</p>
<p>Anyone out here that considered himself a Programmer first and specialist in Flex second would welcome the chance to learn a new technology, so let&#8217;s put our considerable experience in developing Flex applications to a good cause and help our clients migrate to HTML5 if they choose to go that route.</p>
<p>But remember, Flex has been here for 8 years and I personally do not see it going away anytime soon so, keep up the good fight and continue to be as passionate as possible about this great technology&#8230;. Flex.</p>
<p>Thanks for stopping by.<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D460&amp;title=What%20do%20Flex%20developers%20do%20now%3F" id="wpa2a_2"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=460</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to survive getting that next project</title>
		<link>http://truitgroup.com/flexgenie/?p=416</link>
		<comments>http://truitgroup.com/flexgenie/?p=416#comments</comments>
		<pubDate>Mon, 28 Feb 2011 20:51:04 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Plain Ole' Stuff]]></category>
		<category><![CDATA[Random Flex Thoughts]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Adobe Flex Development]]></category>
		<category><![CDATA[Flex Consulting]]></category>
		<category><![CDATA[Flex Contracting]]></category>
		<category><![CDATA[Flex Development]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=416</guid>
		<description><![CDATA[&#8220;I bet someone was saying, Now why don&#8217;t he write&#8221; (sorry for the cheap Dances With Wolves reference). Mostly because I have been up to my eyeballs in projects, applications and well life in general. A few weeks ago I began my quest for my next project and let me tell you this time was [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;I bet someone was saying, Now why don&#8217;t he write&#8221; (sorry for the cheap Dances With Wolves reference).</p>
<p>Mostly because I have been up to my eyeballs in projects, applications and well life in general.<br />
A few weeks ago I began my quest for my next project and let me tell you this time was a bit different.<br />
I waded through the numerous calls and emails from recruiters, some good, some not so good and some just completely off the mark.<br />
So this prompted me to see what I can do to help out some fellow Flex Consultants out there looking for work, sorting through the mess and plucking out that one perfect project to sign on to.<br />
Although some items covered in this post will be helpful in any technology job search.</p>
<p>Those of you that don&#8217;t know me (and maybe some that do) might not be aware of the fact that for the last 10 years I have been pretty blessed and successful in keeping myself busy (sometimes more than I want to be) with minimal gaps in projects.<br />
As a matter of fact even had a few overlap unexpectedly which is out of scope on how to handle that for this post.</p>
<p>To survive getting that next project or contract you have to consider some important points:<br />
<font size="4pt" color="green"><u>Project Points to Consider</u></font></p>
<ul>
<li><strong>Location</strong>- partially remote or on-site</li>
<li><strong>Contract type</strong> &#8211; Corp to Corp, 10-99, W2</li>
<li><strong>Client stability</strong> &#8211; Do they pay, is this a solid company or something else</li>
<li><strong>Team Dynamics</strong> &#8211; Is this a team of experts who respect your expertise or are you going to be battling your point at every meeting</li>
<li><strong>Recruiting Agency</strong> &#8211; Are you a warm body to fill a desk chair or are they interested in a professional relationship with you</li>
<li><strong>Rate of Pay</strong> &#8211; Do they get your value to the Team</li>
<li><strong>Duration of Contract or Project</strong> &#8211; is this a quick get in and knock it out or a long term commitment</li>
<li><strong>Your role on the Team</strong> &#8211; Are you the Flex Architect, Team Mentor, Subject Matter Expert, Lead Flex Dev, or just another in-line developer</li>
</ul>
<p>Now of course there are NUMEROUS other considerations and believe me in the beginning of my Flex Consulting career, I was not aware of them and sometimes it was a disaster.<br />
There are a few recruiting agencies, companies, etc that I would chose to not work with again.<br />
That being said, most of the Agencies and Clients I have worked with over the last decade were professional and a joy to work with.</p>
<p>What we will break down over the rest of this post is&#8230;</p>
<ul>
<li><strong>Successful Resumes</strong> &#8211;  Is Less More ?</li>
<li><strong>The Hunt</strong> &#8211; Are you the Hunter or the Hunted</li>
<li><strong>Recruiting Agency Relationships</strong> &#8211; The right questions to ask</li>
<li><strong>Client Teams and Technology</strong> &#8211; Are you going to have to constantly defend your technology or do they &#8220;GET&#8221; it</li>
<li><strong>First Contact</strong> &#8211; Both Agency and Client</li>
<li><strong>Interview Process</strong> &#8211; Just how many people am I going to have to talk to before they decide</li>
<li><strong>The DREADED Tech Screen</strong> &#8211; &#8220;To Screen or Not to Screen&#8221; &#8211; The client that is, you don&#8217;t have a choice</li>
<li><strong>Negotiating</strong> &#8211; Everyone does it</li>
<li><strong>Project Logistics</strong> &#8211; On-site and Remote</li>
<li><strong>Closing the Deal</strong> &#8211; It ain&#8217;t a project till the ink is dry</li>
</ul>
<p><span id="more-416"></span><br />
<font size="4pt" color="green"><u>Successful Resumes</u></font><em> &#8211;  Is Less More ?</em></p>
<p>Over the last decade, I have accumulated approximately 10 pages of projects that I have been on.<br />
Some short term, some long, it practically read like a short novel.<br />
But what I have come to figure out is that Less IS More.</p>
<p>For those of you who do not know, my wife is a retired Director of Retained Executive Search.<br />
What that long title means is that she staffed candidates for some of the largest corporations in the world and her candidates were either &#8220;C&#8221; level or VP level folks.<br />
She is an expert at the resume and interview process and believe me, on this subject at least I listened and learned which I credit for my success throughout my career.</p>
<p>Although I am proud of every one of my Clients, Projects and the responsibilities that I have had on each, in the recent few years you could probably just copy and paste the bullet points from project to project.<br />
I found myself getting very repetitious on some of my points then I realized that both the recruiters and the client&#8217;s rep will probably on read your last few projects and your responsibilities on each.<br />
If you are like me, they don&#8217;t vary much.</p>
<p>So what I did recently is to pare down my resume by only adding bullet points (responsibilities) and details to the last 6-8 projects and removed the bullet points from all the others.<br />
I just left the client name, my title and the dates/duration of the project.<br />
This shrunk my resume down to about 6 pages that included my bio, experience, languages (coding that is) and education, I can deliver the full version of my resume if the recruiter requests this.<br />
This made for a much easier read and almost guarantees that the full weight of your skill set will be read cover to cover, not just skimmed over and tossed on a pile. </p>
<p>And by all means&#8230;.<strong>USE SPELL CHECK</strong>!<br />
Nothing says &#8220;don&#8217;t hire this guy or gal&#8221; like misspelled words on your resume.</p>
<p><font color="yellow"><strong>-Bio</strong></font><br />
This is not the place to sing your praises, pat yourself on the back or just plain ole&#8217; brag about yourself.<br />
The Bio should reflect you as an integral member of the Team and give your client a reason to want to talk with you.<br />
They are not going to care that your dog&#8217;s name is &#8220;Buffy&#8221; or that you love to watch classic movies in black and white on the weekend, stick to pertinent information only.<br />
Use the &#8220;carrot&#8221; not the &#8220;stick&#8221; in your Bio.</p>
<p><font color="yellow"><strong>-Experience</strong></font><br />
As I stated before, only give brief descriptions of your duties on the project.<br />
Give a few details about what the application&#8217;s goal was, what you did to achieve the goal.<br />
If you are like me, occasionally you are called upon to mentor other developers (leadership role) either new to or just starting into working in Flex, mention this as well as any pertinent technologies involved in the project.<br />
This gives the person reading your resume and good idea of your &#8220;grasp&#8221; of the technology and what you are capable of delivering for them, bottom line, that&#8217;s really all they care about.<br />
As I said, less is more so stick to the facts not ramble on about things that the perspective client would not be interested in.</p>
<p>It&#8217;s important to cover all months of the year, even gaps during which time you could have been honing your skills as a developer.<br />
The client&#8217;s name is important, especially if you have worked for Fortune 100&#8242;s to 1000&#8242;s over the course of your career.<br />
Some names of previous clients just POP off the page.</p>
<p><font color="yellow"><strong>-Programming Languages</strong></font><br />
Here is the area that is usually picked up by the search engines when the recruiters are looking for candidates to fill a position.<br />
Be careful though that you do not use keyword names (ex: Java) if you have not actually coded in Java, you may have used it for your Mid-Tier environment but not done any of the work to develop data services.<br />
If that keyword gets picked up in the search, you might find yourself being contacted about a project that will require you wear both &#8220;hats&#8221; Flex and Java.</p>
<p>Yes, there are actually some of us out here who didn&#8217;t start in Java and move to Flex.<br />
If you do get asked about your (ex: Java) experience be honest, tell them it was used for Mid-Tier data services and you are VERY familiar with how to connect to the services for the Front End data.</p>
<p>Some requirements sent out by clients have these basic Object Oriented Programming (OOP) development languages just to make sure you can develop an MVC application.<br />
So ask, don&#8217;t assume that just because the specs on a job description say Java, J2EE, that you don&#8217;t have the skill set.</p>
<p>We won&#8217;t cover Education because well that&#8217;s pretty much self explanatory.</p>
<p><font size="4pt" color="green"><u>The Hunt</u></font><em> &#8211; Are you the Hunted or the Hunter ?</em></p>
<p>While it&#8217;s important to point out that as your career and experience progresses in this business, you will start to get the majority of your projects by repeat business and referrals.<br />
But early on in your career and even to some degree down the road you will have to put on your Hunter&#8217;s cap and find some opportunities out there.</p>
<p>Seven years ago when Flex started out into the development market, you REALLY had to search out the jobs.<br />
They were few and far between and usually short term, basically you were a hired gun riding into town knocking out a project, educating your client and fellow team mates about Flex and then riding off into the sunset.<br />
The good news is that over the last couple of years I have seen an enormous increase in Flex projects and the story is always the same, too many projects not enough Flex devs.</p>
<p><font color="yellow"><strong>Job Boards</strong></font> &#8211; These are your bread and butter in the consulting game, I will tell you how this works.<br />
There is for all practical purposes a &#8220;cue&#8221; of resumes out there returned to a recruiter when they do a keyword search, if you change one thing on your resume it throws you back to the top of the list.<br />
This is a doubled edged sword situation, it will get your noticed but be prepared to receive LOADS of calls from folks searching for your skill set so set aside some time to speak with them.<br />
It&#8217;s a numbers game, the more prospects you speak with, the more chance you will have on finding a good project.<br />
I have had great success with Dice.com and Linked In.<br />
Most importantly keep your resume up to date on the boards.</p>
<p><font color="yellow"><strong>Blogs</strong></font> &#8211; This is your place to shine but make sure your blog is pertinent to your technology.<br />
Remember that the internet is FOREVER so if you rant on and on about a previous client you had a problem with chances are, no will touch you.<br />
Blogs are great for showing off your code and your expertise as well as giving the person reading your blog a good sense of your ability to communicate effectively about Flex.<br />
I would also suggest a link to your resume that they can download in PDF format and a link to your Twitter account.</p>
<p><font color="yellow"><strong>Twitter</strong></font> &#8211; Although this social environment is predominantly used for social commentary, be very careful about your Tweets.<br />
When a client is sizing you up for an interview or considering bringing you onto a Team, they will search out EVERYTHING on you good and bad.<br />
So again, and I cannot stress this enough, DO NOT BASH YOUR PREVIOUS CLIENTS, no matter how much they may have deserved it.<br />
Do not mention how you couldn&#8217;t find your car after leaving the bar at 2 in the morning.<br />
Personal items are good but Tweet keeping the above concepts in mind.<br />
Keep it clean and professional.</p>
<p><font color="yellow"><strong>Flex User&#8217;s Groups</strong></font> &#8211; This is a great place to network and glean information on Flex in general.<br />
A lot of user&#8217;s groups have recruiting agencies browsing their message boards and posting jobs.<br />
I personally am a senior member of D-Flex, the Dallas Flex User&#8217;s Group and have enjoyed the connections and information in our group.<br />
Find one in your area and join up, some even have Connect sessions setup for their meetings so you can join and view the sessions remotely.</p>
<p><font size="4pt" color="green"><u>Recruiting Agency Relationships</u></font><em> &#8211; The right questions to ask</em></p>
<p>Although being married to one, recruiters seem to be an obstacle at times to getting the right project.<br />
Now don&#8217;t take that the wrong way, I have the greatest respect for some of the recruiters I have worked with over the years but occasionally you will be contacted by a recruiter that doesn&#8217;t really understand what Flex is or does.<br />
This can make it difficult to convey your expertise and accomplishments to them but be patient and above all be direct.<br />
Ask questions (in essence, interview &#8220;them&#8221;), about the project, make sure it&#8217;s a good fit for you, there has been many times I have told a recruiter that their project was not really for me.<br />
Many factors would come into play that I listed above in &#8220;Project Points to Consider&#8221; section.</p>
<p>Remember that you will probably spend more time speaking with the recruiter or their hiring manager than you will with the client at this stage of the game so clarify ALL of the requirements and job specifications.<br />
If you don&#8217;t and get blind sided by a tech screen for a .NET developer with some Flex skills you have no one to blame but yourself and quite honestly won&#8217;t get the gig (unless you are a .NET dev with Flex skills).</p>
<p>Find out if it&#8217;s on-site, partially remote or fully remote, most of the recruiters I speak with want an all inclusive rate for the project.<br />
This means that you need to determine a BASE amount per hour for your skills and responsibilities on the project then figure out the per hour cost of being on site, then quote a rate covering everything.</p>
<p>And by all means, check out the Agency you are dealing with, as I said there are a few that I choose not to work with again for one reason or another but I have great relationships with several reputable agencies and receive calls from them for projects on a regular basis (that&#8217;s being the &#8220;Hunted&#8221; by the way).</p>
<p><font size="4pt" color="green"><u>Client Teams and Technology</u></font><em> &#8211; Are you going to have to constantly defend your technology or do they &#8220;GET&#8221; it</em></p>
<p>When clients start on the sometimes long search for a Flex Developer, they have several levels of exposure to Flex.<br />
Could be the CIO or CTO just flipped a coin and said, &#8220;let&#8217;s use Flex for the font end&#8221; or it could be that they have done their due diligence and determined that Flex was for them.<br />
Another scenario which is my favorite, is that they are currently using Flex and just need your expertise to either bail them out of a jam or move them forward or they had success on a previous application and want to continue forward with a new application project.<br />
So weather this is a &#8220;fire fight/swat team&#8221; or a &#8220;come on in and show us the way&#8221; situation they probably seem to &#8220;get&#8221; what Flex can do.</p>
<p>With Adobe educating their clients in Flex/Flash technologies over the last few years, clients come to you valuing your expertise in the uses and implementation of Flex.<br />
So make sure you are one!</p>
<p>You can code yourself into a &#8220;corner&#8221; VERY quickly if you don&#8217;t know what you are doing.<br />
I spent the first part of my career cleaning up projects where a less than qualified developer got into the code and mucked things up.<br />
Spend some time learning your craft, more now than in the beginning years of Flex, there are numerous resources for learning and development in Flex and always remember, the best way to learn Flex development is under the advise and expertise of a seasoned Flex Developer.</p>
<p>Remember, you are their ambassador for Flex so be honest and by all means be an &#8220;Evangelist&#8221; for Flex, the more you know, the more you can make your clients feel that your were the right choice for the job.</p>
<p><font size="4pt" color="green"><u>First Contact and Interview Process</u></font><em> &#8211; Both Agency and Client</em></p>
<p>First contact if very important if you are going to land the project.<br />
We covered the recruiting agency side of things and once they submit your resume to the client at that point it&#8217;s the waiting game.<br />
Don&#8217;t be shy about telling the recruiter that you have other pressing offers that need an answer if you do, but be honest as always and keep in contact with your agency rep.<br />
Use discretion on how often you check in with them, lately I have had some clients just drag their feet on connecting with me.</p>
<p>This tells me two things.<br />
1- They are new to Flex and think there are a whole lot more experienced Flex devs out there looking for work than there actually are<br />
2 &#8211; If they are a large organization, they are just REALLY busy</p>
<p>Number 1 you cannot do much about, that&#8217;s the recruiters job to educate them.<br />
Number 2 you can just be patient but keep looking at other opportunities &#8211; believe me they are out there.</p>
<p>If you do get a chance to for the First interview (and I stress &#8220;first&#8221; because for some reason lately clients require several interviews even for contracts and sometimes in person), hopefully it will be with all the deciding members of the Team.</p>
<p>On the interview call here are some tips to get your through:</p>
<ul>
<li>Be ready for their call &#8211; don&#8217;t be in your car, at the restaurant, etc. &#8211; be somewhere that you can concentrate on them not everything else</li>
<li>Write down everyone&#8217;s name on a piece of paper with their responsibilities on the Team &#8211; it&#8217;s a good habit to make sure to use their names when speaking with them</li>
<li>Make your answers semi-short and to the point &#8211; answer the question don&#8217;t elaborate, you will get the chance to add more information at the end of the interview</li>
<li>BE HONEST &#8211; do not be a &#8220;yes&#8221; man (or woman), if you are not sure about something tell them, even after 8 years of Flex and numerous projects, there are things I have not run across, that&#8217;s what networking  and colleague&#8217;s mobile numbers are for if you get stuck</li>
<li>Thank them for their time &#8211; I know this sounds basic but on all the candidates I screened over the years for various projects, rarely am I thanked for taking the time to speak with them, everyone&#8217;s time is important &#8211; it&#8217;s just a good courteous habit to get into and the person screening you is giving a recommendation to the client&#8217;s representative</li>
</ul>
<p>If the call turns into a tech screen, don&#8217;t be surprised.</p>
<p><font size="4pt" color="green"><u>The DREADED Tech Screen</u></font><em> &#8211; &#8220;To Screen or Not to Screen&#8221; &#8211; The client that is, you don&#8217;t have a choice</em></p>
<p>This can be a time for you to either WOW them or fail miserably.<br />
Although based on my resume and years of experience I am less than often tech screened on a client call, but it does happen.<br />
I can understand this change over the last few years as there are some folks new to Flex that work on a project for 6 months and since they are the only Flex developer in the building, they now consider themselves to be a &#8220;Senior&#8221; Flex Developer on their resume.<br />
This is simply not the case.</p>
<p>&#8220;Senior&#8221; in Flex development means senior experience, not necessarily senior knowledge.<br />
There is no substitute for hands on work in Flex.</p>
<p>If you do get tech screened on your knowledge of Flex&#8230;<br />
Answer the questions to the best of your ability and again&#8230;.be honest, if you haven&#8217;t dealt with something in Flex that they ask about, tell them but make sure they know you are able to figure out a solution to the scenario given time.</p>
<p>I am called upon by several recruiting agencies to tech screen possible candidates for a project.<br />
I screened almost the entire team on the Fed-X project here in Dallas a few years ago.<br />
Personally I tailor the screen based on their resume and experience and don&#8217;t use standardized questions but most do.<br />
You will probably hear the same questions over and over again, that&#8217;s a good thing since you can have a good response ready to go.</p>
<p>Standard practice at the end of a client interview call is for them to ask you if you have any questions.<br />
MAKE SURE YOU DO!<br />
Nothing says, &#8220;I&#8217;m a noob in Flex&#8221; like not having any questions for them.</p>
<p>You don&#8217;t necessarily have to ask about the application architecture, but asking about their data services, is the mid-tier Java, .NET or LCDS, etc is always a good consideration for you.<br />
And by all means&#8230;..CLOSE THE DEAL!</p>
<p>You won&#8217;t get the job unless you show them you want it, ask how quickly they are going to place someone onto the project.<br />
This is a BIG factor since you probably are considering other offers and if you are, again, be honest, let them know what you have going and how soon you need to decision.<br />
It&#8217;s not being pushy, it&#8217;s giving them all the information on you if they decide you are the one for them.<br />
And don&#8217;t be a robot or Flex encyclopedia, they are just as interested if you will &#8220;fit&#8221; into their Team dynamics as your skills as a Flex developer.</p>
<p>As always thanks for stopping by!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D416&amp;title=How%20to%20survive%20getting%20that%20next%20project" id="wpa2a_4"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=416</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dallas Techfest 2010 &#8211; Session Speaker</title>
		<link>http://truitgroup.com/flexgenie/?p=398</link>
		<comments>http://truitgroup.com/flexgenie/?p=398#comments</comments>
		<pubDate>Wed, 14 Jul 2010 17:49:16 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Plain Ole' Stuff]]></category>
		<category><![CDATA[Random Flex Thoughts]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=398</guid>
		<description><![CDATA[To all you folks in Flexgenie Land, once again for the 3rd year in a row, I will be speaking at Dallas Techfest on &#8220;Working with AIR and SQLite&#8221; (logo link above). My session will focus on utilizing the built in SQLite DB in an AIR/Flex application for content management. If you get the chance [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dallastechfest.com/Home/tabid/36/Default.aspx"><img src="http://truitgroup.com/flexgenie/wp-content/uploads/2010/07/DTF2010-300x89.png" width="300" height="89" /></a></p>
<p>To all you folks in Flexgenie Land, once again for the 3rd year in a row, I will be speaking at Dallas Techfest on &#8220;Working with AIR and SQLite&#8221; (logo link above).</p>
<p>My session will focus on utilizing the built in SQLite DB in an AIR/Flex application for content management.</p>
<p>If you get the chance come on out and hang around for not only my session but several others that will be filled with good information on not only Flex but other technologies as well.<br />
Hope to see you there and PLEASE come up after my session and introduce yourself.</p>
<p>Again, thanks for stopping by and hope to see ya there!<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D398&amp;title=Dallas%20Techfest%202010%20%E2%80%93%20Session%20Speaker" id="wpa2a_6"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=398</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding with Blinders On</title>
		<link>http://truitgroup.com/flexgenie/?p=384</link>
		<comments>http://truitgroup.com/flexgenie/?p=384#comments</comments>
		<pubDate>Wed, 11 Nov 2009 23:04:13 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Gotchas]]></category>
		<category><![CDATA[Random Flex Thoughts]]></category>
		<category><![CDATA[Flex Best Practices]]></category>
		<category><![CDATA[Flex Development]]></category>
		<category><![CDATA[Flex Gotchas]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=384</guid>
		<description><![CDATA[While working on projects recently I noticed a trend when the &#8220;IT&#8221; is hitting the fan in the development and delivery cycle of an Application project. The tendancy to code with &#8220;blinders&#8221; on. What I mean by this is that when you are working on either new functionality, regression issues or just BUGS in general, [...]]]></description>
			<content:encoded><![CDATA[<p>While working on projects recently I noticed a trend when the &#8220;IT&#8221; is hitting the fan in the development and delivery cycle of an Application project.<br />
The tendancy to code with &#8220;blinders&#8221; on.</p>
<p>What I mean by this is that when you are working on either new functionality, regression issues or just BUGS in general, most developers, although very talented in their own right, maintain focus on just getting the thing done.</p>
<p>This tunnel visioned focus creates more work down the road.<br />
In a presentation given at MAX 2008, Michael Labriola spoke on Testing a Flex Application, which you can find on Adobe TV <a href="http://tv.adobe.com/watch/max-2008-develop/testing-your-flex-applications-by-michael-labriola">here</a>.<br />
In this presentation he shocked most of us by quoting the unbelievable amount of money and time spent on fixing defects in existing code.</p>
<p>Now I can tell you from first hand experience that although that situation has been mine and well as other Senior Flex Developers that have been around for awhile&#8217;s Bread and Butter, it&#8217;s still the LEAST favorite thing for us to deal with.</p>
<p>When developing a Flex Application, keep in mind the entire Architecture as well as the overall functional processes when you are working. Make it easy on the next guy or gal who will be following in your footsteps to enhance or maintain the application moving forward.</p>
<p>Some quick thoughts and good rules to follow:</p>
<ul>
<li>Know your architecture &#8211; don&#8217;t code in a  vacum</li>
<li>Know the application&#8217;s requirments &#8211; INSIDE AND OUT!!</li>
<li>Be aware of how your work will impact other&#8217;s</li>
<li>UNIT TEST, UNIT TEST, UNIT TEST</li>
<li>Integration test</li>
</ul>
<p>And by all means&#8230;.make sure your code works in YOUR environment BEFORE you commit to the repository, whatever that might be.<br />
Don&#8217;t be the guy or gal who breaks the Build and causes others to be blocked, especially if you do it at the end of your day.</p>
<p>That&#8217;s all my thoughts for now on the subject, but as most of us can rant on forever on this, you probably will be hearing about this again.<br />
And don&#8217;t forget to check out Mike&#8217;s presentation, great speaker, FANTASTIC coder and all around Good Guy.</p>
<p>As always, thanks for stopping by,<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D384&amp;title=Coding%20with%20Blinders%20On" id="wpa2a_8"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=384</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Long time away</title>
		<link>http://truitgroup.com/flexgenie/?p=382</link>
		<comments>http://truitgroup.com/flexgenie/?p=382#comments</comments>
		<pubDate>Mon, 28 Sep 2009 04:37:10 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Plain Ole' Stuff]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=382</guid>
		<description><![CDATA[Flexgeniers, I have been scarce for some time now, getting back into the groove of being back in Texas and working with new clients. But heading back to Atlanta again for the week for Adobe. Working with Flash Builder 4 recently and working on a new Post related to that. Also been looking into Mate [...]]]></description>
			<content:encoded><![CDATA[<p>Flexgeniers,</p>
<p>I have been scarce for some time now, getting back into the groove of being back in Texas and working with new clients.<br />
But heading back to Atlanta again for the week for Adobe.</p>
<p>Working with Flash Builder 4 recently and working on a new Post related to that.<br />
Also been looking into Mate and Swiz Micro-Architectures.<br />
Expect articles on both soon.</p>
<p>Sorry for the long absence but back after again.</p>
<p>Thanks for stopping by&#8230;&#8230;.Stay Tuned!!<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D382&amp;title=Long%20time%20away" id="wpa2a_10"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=382</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Attending Flash Camp Atlanta &#8211; This Friday</title>
		<link>http://truitgroup.com/flexgenie/?p=378</link>
		<comments>http://truitgroup.com/flexgenie/?p=378#comments</comments>
		<pubDate>Mon, 24 Aug 2009 18:00:04 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=378</guid>
		<description><![CDATA[I will be attending Flash Camp Atlanta this Friday the 28th. Yes I am still here in Atlanta for now and Andrew Powell over at Universal Mind forwarded my &#8220;prize&#8221; I won at the ATL Flex User&#8217;s Group meeting back in July which was a free pass to Flash Camp! I am looking forward to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flashcampatlanta-badges.eventbrite.com" target="_blank"><br />
<img src="http://s3.davidtucker.net/fcatl-250.png" width="250" border="0" /><br />
</a><br />
<br />
I will be attending Flash Camp Atlanta this Friday the 28th.</p>
<p>Yes I am still here in Atlanta for now and Andrew Powell over at Universal Mind forwarded my &#8220;prize&#8221; I won at the ATL Flex User&#8217;s Group meeting back in July which was a free pass to Flash Camp!<br />
I am looking forward to meeting some colleagues and networking with some great Flash and Flex folks.</p>
<p>If any Flexgeniers are in attendance, make sure to Twitter me and we can get together.</p>
<p>Thanks for stopping by!<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D378&amp;title=Attending%20Flash%20Camp%20Atlanta%20%E2%80%93%20This%20Friday" id="wpa2a_12"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=378</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flexgenie UPDATED!!  &#8211; Code friendly</title>
		<link>http://truitgroup.com/flexgenie/?p=376</link>
		<comments>http://truitgroup.com/flexgenie/?p=376#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:40:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=376</guid>
		<description><![CDATA[Flexgeniers, I have added a new plugin to my blog that allows a much more friendly viewing of the Code. It now gives you the ability to view the code in a Pop Up, Save to Clipboard and Print. I hope you enjoy! I know I promised everyone my final installment in the Data/Advanced Grid [...]]]></description>
			<content:encoded><![CDATA[<p>Flexgeniers,</p>
<p>I have added a new plugin to my blog that allows a much more friendly viewing of the Code.<br />
It now gives you the ability to view the code in a Pop Up, Save to Clipboard and Print.</p>
<p>I hope you enjoy!</p>
<p>I know I promised everyone my final installment in the Data/Advanced Grid Series, and I have not forgotten about you!<br />
I will be working on that this weekend and should have the final installment dealing with Grouping and Column labels and Styling.</p>
<p>STAY TUNED!!</p>
<p>And as usual, Thanks for stopping by,<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D376&amp;title=Flexgenie%20UPDATED%21%21%20%20%E2%80%93%20Code%20friendly" id="wpa2a_14"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=376</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced Data Grids &#8211; Pt.2</title>
		<link>http://truitgroup.com/flexgenie/?p=324</link>
		<comments>http://truitgroup.com/flexgenie/?p=324#comments</comments>
		<pubDate>Fri, 07 Aug 2009 16:12:53 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Components]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=324</guid>
		<description><![CDATA[Welcome back Flexgeniers (now it&#8217;s a word). If you have not gone through the Pt1 of this series I suggest you do, so you can follow along as this is a continuous series. If you have you will remember that we looked at the Data Grid(again from here on DG), and addressed using XML data [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome back <font size="3pt" color="green"><strong><em>Flexgeniers</em></strong></font> (now it&#8217;s a word).<br />
If you have not gone through the <a href="http://truitgroup.com/flexgenie/?p=307">Pt1</a> of this series I suggest you do, so you can follow along as this is a continuous series.<br />
<br />
If you have you will remember that we looked at the Data Grid(again from here on DG), and addressed using XML data converted to an Array Collection as the Data Provider for the Grid.<br />
The XML structure was very complex and let&#8217;s face it in a real world situation, the XML is NEVER simple.<br />
To refresh, the DG I displayed showed the data but in a very FLAT view, this is not optimal when trying to view numerous items with the same Category name.<br />
In this case, &#8220;Courses&#8221;.<br />
<br />
Enter the Advanced Data Grid (again from here on ADG).<br />
Here is a look at the ADG with a bit of styling applied (we will get to that later).<br />
<br />
<font size="3pt" color="green"><strong><em>EXAMPLE ADVANCED DG</em></strong></font><br />
<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DTFXML_ADG_1626210988"
			class="flashmovie"
			width="600"
			height="300">
	<param name="movie" value="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/DTFXML_ADG.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/DTFXML_ADG.swf"
			name="fm_DTFXML_ADG_1626210988"
			width="600"
			height="300">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
<span id="more-324"></span><br />
<br />
As you can see we now have Grouped the courses by name and they are in alphabetical order as well as they now contain &#8220;child&#8221; items.<br />
This makes for a much easier way for the User to quickly get to the information they need.<br />
There are some styles set on this version of the ADG:</p>
<ul>
<li>Custom Folder Icons &#8211; First Level</li>
<li>No Folder Icons for all other levels</li>
<li>Alternate colors for each Group Levels</li>
</ul>
<p>
We will get to those later in the &#8220;Styling&#8221; section.<br />
<br />
Let&#8217;s take a look at the ADG MXML code.<br />
</p>
<pre class="brush: as3; title: ; notranslate">&lt;mx:AdvancedDataGrid x=&quot;0&quot; y=&quot;0&quot; id=&quot;adgResults&quot; width=&quot;100%&quot; height=&quot;100%&quot;
		initialize=&quot;gc.refresh()&quot;
		folderClosedIcon=&quot;{null}&quot;
        	folderOpenIcon=&quot;{null}&quot;
        	defaultLeafIcon=&quot;{null}&quot;
        	groupIconFunction=&quot;myIconFunc&quot;&gt;
		&lt;mx:dataProvider&gt;
	    		&lt;mx:GroupingCollection id=&quot;gc&quot; source=&quot;{acComplexResults}&quot;
	    			childrenField=&quot;sectionChildren&quot;&gt;
				&lt;mx:Grouping id=&quot;groupFields&quot;&gt;
					&lt;mx:GroupingField name=&quot;courseTitle&quot;/&gt;
				&lt;/mx:Grouping&gt;
			&lt;/mx:GroupingCollection&gt;
		&lt;/mx:dataProvider&gt;
		&lt;mx:columns&gt;
			&lt;mx:AdvancedDataGridColumn headerText=&quot;Course&quot; labelFunction=&quot;courseLabel&quot;/&gt;
			&lt;mx:AdvancedDataGridColumn headerText=&quot;Course Number&quot; dataField=&quot;courseNumber&quot;/&gt;
			&lt;mx:AdvancedDataGridColumn headerText=&quot;Start Date&quot; dataField=&quot;startDate&quot;/&gt;
			&lt;mx:AdvancedDataGridColumn headerText=&quot;End Date&quot; dataField=&quot;endDate&quot;/&gt;
		&lt;/mx:columns&gt;
&lt;/mx:AdvancedDataGrid&gt;</pre>
<p>
In know there are ALOT of properties and functions we are using here but we will get to each and every one of them in detail.<br />
<br />
Before we get started on that, every good ADG or DG begins with Data so let&#8217;s look into how we created the Array Collection for the ADG and how it differs from the Array Collection we used in Pt1.<br />
</p>
<pre class="brush: as3; title: ; notranslate">public function srvComplexXMLResult():void
{
	var acChildren:ArrayCollection;
	acComplexResults = new ArrayCollection();

	complexXMLList = new XMLList();
	complexXMLList = ComplexXML..Course;

	if(complexXMLList.length() == 0)
	{
		Alert.show(&quot;No matching items were found.\nPlease &quot; +
				&quot;try another search criteria&quot;, &quot;No Match&quot;);
	}
	else
	{
		for each(var item:XML in complexXMLList)
		{
			var _itemObj:Object = new Object();
			_itemObj.courseID = item.@crn;
			_itemObj.courseName = item..courseName;
			_itemObj.courseTitle = item..courseTitle;

			var childXMLList:XMLList = item..Section;
			acChildren = new ArrayCollection();

			for each(var child:XML in childXMLList)
			{
				var _childObj:Object = new Object();
				_childObj.sectionID = child.@id;
				_childObj.courseNumber = child..courseId;
				_childObj.sectionTitle = child..sectionTitle;
				_childObj.creditHours = child..creditHours;
				_childObj.instructor = child..fullName;
				_childObj.seatsTotal = child..total;
				_childObj.seatsAvailable = child..available;
				_childObj.scheduleType = child..scheduleType;
				_childObj.startDate = child..startDate;
				_childObj.endDate = child..endDate;

				acChildren.addItem(_childObj);
			}
			_itemObj.sectionChildren = acChildren;
			acComplexResults.addItem(_itemObj);
		}
		gc.refresh();
	}
}</pre>
<p>
As you can see above, it&#8217;s a bit more involved than setting up the Flat Array Collection for the DG.<br />
First off a bit about using Grouping in ADGs, you can use 2 different types of Grouping for the &#8220;<dataProvider>&#8221; in ADGs.</p>
<ul>
<li>Grouping Collection (which we are using here)</li>
<li>Hierarchical Data (which we will not address but I will provide link to LiveDocs)</li>
</ul>
<p>
First thing we do is create/clear the Array Collection we are going to use as the Data Provider for our ADG, take note of the fact that we are also declaring a local Array Collection named &#8220;acChildren&#8221; for use as the Data Provider for the child fields in the Grouping order as well as we are now drilling down using E4X to a higher level in the XML structure to grab not only the Section (as we did in Pt1) but the Parent level &#8220;Course&#8221; so that we can Group the Data together in a Parent/Child relationship.<br />
Basically&#8230;..Courses have multiple Sections, and we want to see them all grouped properly for display.<br />
</p>
<pre class="brush: as3; title: ; notranslate">var acChildren:ArrayCollection;
	acComplexResults = new ArrayCollection();

	complexXMLList = new XMLList();
	complexXMLList = ComplexXML..Course;</pre>
<p>
To &#8220;fill&#8221; the 2 separate Array Collections we need a Nested &#8220;For&#8221; loop, one for the Parent Object and one for each Child Object in that Parent.<br />
</p>
<pre class="brush: as3; title: ; notranslate">for each(var item:XML in complexXMLList)
		{
			var _itemObj:Object = new Object();
			_itemObj.courseID = item.@crn;
			_itemObj.courseName = item..courseName;
			_itemObj.courseTitle = item..courseTitle;

			var childXMLList:XMLList = item..Section;
			acChildren = new ArrayCollection();

			for each(var child:XML in childXMLList)
			{
				var _childObj:Object = new Object();
				_childObj.sectionID = child.@id;
				_childObj.courseNumber = child..courseId;
				_childObj.sectionTitle = child..sectionTitle;
				_childObj.creditHours = child..creditHours;
				_childObj.instructor = child..fullName;
				_childObj.seatsTotal = child..total;
				_childObj.seatsAvailable = child..available;
				_childObj.scheduleType = child..scheduleType;
				_childObj.startDate = child..startDate;
				_childObj.endDate = child..endDate;

				acChildren.addItem(_childObj);
			}</pre>
<p>
We grab a few data values out of the Parent (in this case &#8220;Course&#8221;) and create objects for them.<br />
Next we declare a new XMLList for our Child values and load it with just the Section Nodes and their children.<br />
We instantiate the Child Array Collection &#8220;acChildren&#8221;.<br />
Now we create an Object for each value in each Child node of the Section grouping of Values and then add this &#8220;_childObj&#8221; into our &#8220;acChildren&#8221; Array Collection.<br />
<br />
Now that our child Array Collection is filled up, we can create a new &#8220;_itemObj&#8221; naming it &#8220;sectionChildren&#8221;, assign our &#8220;acChildren&#8221; array as it&#8217;s value and load it into our Parent Array Collection for use in our Grouping.<br />
</p>
<pre class="brush: as3; title: ; notranslate">_itemObj.sectionChildren = acChildren;
	acComplexResults.addItem(_itemObj);</pre>
<p></p>
<table bgcolor="#000080" height="75" width="100%"><font color="#ffffff" size="+1" paddingLeft="10"></p>
<tr>
<td><a href="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png"><img src="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png" alt="blogNote" title="blogNote" width="48" height="48" class="alignleft size-full wp-image-320" /></a><br />Don&#8217;t forget to run a &#8220;refresh()&#8221; on your Grouping Collection MXML item (here it&#8217;s &#8220;gc.refresh()&#8221;, this is a &#8220;GOTCHA&#8221; when using Grouping Data in Flex and you will pull out your hair trying to figure out why your data is not showing up</td>
</tr>
<p></font></table >
<br />
That&#8217;s basically it, now we have an Array Collection we can use as our Data Provider for our ADG with a Complex set of Data.<br />
<br />
Now let&#8217;s talk about how this Complex set of Data gets applied to our ADG and used as Grouping values and Advanced Data Grid column &#8220;dataFields&#8221;.<br />
We will also touch base on using Grouping Labels Functions and Column Label Functions as well.<br />
<br />
<font size="3pt" color="green"><strong><em>APPLYING THE DATA TO OUR GROUPINGS</em></strong></font><br />
<br />
The &#8220;nuts and bolts&#8221; of the Grouping setup is this code:<br />
</p>
<pre class="brush: as3; title: ; notranslate">&lt;mx:dataProvider&gt;
	    		&lt;mx:GroupingCollection id=&quot;gc&quot; source=&quot;{acComplexResults}&quot;
	    			childrenField=&quot;sectionChildren&quot;&gt;
					&lt;mx:Grouping id=&quot;groupFields&quot;&gt;
						&lt;mx:GroupingField name=&quot;courseTitle&quot;/&gt;
					&lt;/mx:Grouping&gt;
				&lt;/mx:GroupingCollection&gt;
			&lt;/mx:dataProvider&gt;</pre>
<p>
We Bind our Parent Array Collection as the Data Provider for the GroupingCollection &#8211; &#8220;acComplexResults&#8221;.<br />
Add the property &#8220;childrenField&#8221; and as you can see we set it&#8217;s value to our Child Array Collection &#8220;sectionChildren&#8221; that we created earlier.<br />
Next we set up a Grouping item, this &#8220;Grouping&#8221; tag can have multiple &#8220;GroupField&#8221; items inside it (you can play around with that on your own), but for our purposes here we are just Grouping by one value or Data Item from our Array Collection &#8220;courseTitle&#8221;.<br />
</p>
<table bgcolor="#000080" height="75" width="100%"><font color="#ffffff" size="+1" paddingLeft="10"></p>
<tr>
<td><a href="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png"><img src="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png" alt="blogNote" title="blogNote" width="48" height="48" class="alignleft size-full wp-image-320" /></a><br />We Bind the Array Collection as a Data Provider to the GroupingCollection here NOT the AdvancedDataGrid&#8217;s Data Provider as we did in Pt1 on our Standard DG</td>
</tr>
<p></font></table >
That&#8217;s pretty much it for applying the Data, now we have to get the values into our Columns.<br />
</p>
<pre class="brush: as3; title: ; notranslate">&lt;mx:columns&gt;
				&lt;mx:AdvancedDataGridColumn headerText=&quot;Course&quot; labelFunction=&quot;courseLabel&quot;/&gt;
				&lt;mx:AdvancedDataGridColumn headerText=&quot;Course Number&quot; dataField=&quot;courseNumber&quot;/&gt;
				&lt;mx:AdvancedDataGridColumn headerText=&quot;Start Date&quot; dataField=&quot;startDate&quot;/&gt;
				&lt;mx:AdvancedDataGridColumn headerText=&quot;End Date&quot; dataField=&quot;endDate&quot;/&gt;
			&lt;/mx:columns&gt;</pre>
<p>
As you can see we simply apply the Node Names of the values we want to display in each Column as it&#8217;s &#8220;dataField&#8221;.<br />
<br />
Now one of the GOTCHAS with the ADG is that even though we use E4X as our XML format, the dataField value MUST be in a single Child level.<br />
You cannot use the &#8220;dot-dot&#8221; delimeter to drill down to the Node that you want to apply to the dataField property.<br />
<br />
I know it&#8217;s an inconvenience at best, but a collegue of mine Michael Labriola has a great article on using a custom E4XParser class to be able to use the delimiter to drill down in a &#8220;dot-delimited&#8221; daisy chain of Node names to use as a dataField provider.<br />
I have applied this to a couple of Applications and it works great.<br />
<br />
Check it out when you get the chance.<br />
<a href="http://www.adobe.com/devnet/flex/articles/e4x.html">Custom E4X Parser</a><br />
<br />
That&#8217;s all for Pt2 of this series, in Pt3 we will get into using the Grouping Label and Column Label functions in depth as well as wrap up with the Styling of the ADG using custom Icons for each Group, Grouping colors and well as some others.<br />
<br />
As always, thanks for stopping by and&#8230;&#8230;.<br />
STAY TUNED!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D324&amp;title=Advanced%20Data%20Grids%20%E2%80%93%20Pt.2" id="wpa2a_16"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=324</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Advanced Data Grids &#8211; Pt. 1</title>
		<link>http://truitgroup.com/flexgenie/?p=307</link>
		<comments>http://truitgroup.com/flexgenie/?p=307#comments</comments>
		<pubDate>Thu, 06 Aug 2009 13:27:51 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Components]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Advanced Data Grid Tutorial]]></category>
		<category><![CDATA[Customizing the Advanced Data Grid]]></category>
		<category><![CDATA[Flex Advanced Data Grid]]></category>
		<category><![CDATA[Flex Application Tutorials]]></category>
		<category><![CDATA[Flex Data Grid]]></category>
		<category><![CDATA[Using Flex Component]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=307</guid>
		<description><![CDATA[Today begins the multi-part series on Data Grids and Advanced Data Grids. Throughout this series rather than typing out &#8220;Data Grid&#8221; and &#8220;Advanced Data Grid&#8221; I will be using &#8220;DG&#8221; and &#8220;ADG&#8221; (less typing you know). Topics that will be covered, explained and exampled (again&#8230;.is that a word??) Basics of Grids &#8211; How to use [...]]]></description>
			<content:encoded><![CDATA[<p>Today begins the multi-part series on Data Grids and Advanced Data Grids.<br />
Throughout this series rather than typing out &#8220;Data Grid&#8221; and &#8220;Advanced Data Grid&#8221; I will be using &#8220;DG&#8221; and &#8220;ADG&#8221; (less typing you know).</p>
<p>Topics that will be covered, explained and exampled (again&#8230;.is that a word??)</p>
<ul>
<li>Basics of Grids &#8211; How to use them, How to provide Data for them, When to use them</li>
<li>Data Grid(DG) vs. Advanced Data Grid(ADG) &#8211; How to decide</li>
<li>Using XML for a Data Provider &#8211; Using E4X, converting to Array Collection, Modifying the Data</li>
<li>Using Grouping Collections and Hierarchical Data as Data Providers in Advanced Data Grids</li>
<li>Using Item Renderers and Custom Item Renderers in Grids</li>
<li>Editing Data in a DG or ADG using standard editable Columns and Item Renderers</li>
<li>Writing edited Data back to the Data Provider (both Array Collection and XML)</li>
<li>Adding Style to your Grid &#8211; Styling using CSS and Skins</li>
</ul>
<p>We will stick to the above items but as this series progresses if you have additional items that you would like me to include in this Series, please add a comment and let me know your thoughts.<br />
And of course as the author of this series I will probably take the liberty to expand and add to the topics as anyone who has attended one of my speaking engagements knows is a strong possibility when I get on a roll.<br />
<span id="more-307"></span><br />
<font size="4pt" color="green"><u><strong>Standard Data Grid</u></font><em></strong> &#8211;  Using XML and Array Collections for Data Providers</em></p>
<p>Since Flex was originally used for building Business Applications back in the 1.5 days, the use of the DG (that&#8217;s Data Grid for those of you who didn&#8217;t read the beginning of this) was as you can imagine, VERY predominant.<br />
This simplest and cleanest way to provide the users/employees with a quick way to see a large amount of data was to use the DG.</p>
<p>For those of us who worked in Flex 1.5 for our clients back then it made life easier and the fact that Flex was such a robust and strong environment for Data meant we could display rows and rows of data quickly.<br />
Through 1.5 to 2.0 up to 3.0 (sorry not addressing Flash Builder in this one), the DG has evolved into the EXTREMELY customizable and easy to use component you now use on a regular basis.</p>
<p><font size="3pt" color="green"><strong><em>EXAMPLE BASIC DG</em></strong></font><br />
<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DTFXML_268035721"
			class="flashmovie"
			width="600"
			height="300">
	<param name="movie" value="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/DTFXML.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/DTFXML.swf"
			name="fm_DTFXML_268035721"
			width="600"
			height="300">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>First let&#8217;s take a look at the code for the DG itself then we will get into the Data Provider.</p>
<pre class="brush: as3; title: ; notranslate">&lt;mx:DataGrid x=&quot;0&quot; y=&quot; 0&quot; id=&quot;dgResults&quot; width=&quot;100%&quot; height=&quot;100%&quot;
        dataProvider=&quot;{acBasicResults}&quot;&gt;
	&lt;mx:columns&gt;
		&lt;mx:DataGridColumn headerText=&quot;Title&quot; dataField=&quot;sectionTitle&quot;/&gt;
		&lt;mx:DataGridColumn headerText=&quot;Start Date&quot; dataField=&quot;startDate&quot;/&gt;
		&lt;mx:DataGridColumn headerText=&quot;End Date&quot; dataField=&quot;endDate&quot;/&gt;
		&lt;mx:DataGridColumn headerText=&quot;Available Seats&quot; dataField=&quot;seatsAvailable&quot;/&gt;
	&lt;/mx:columns&gt;
&lt;/mx:DataGrid&gt;</pre>
<p>
As you can see we are using an Array Collection as the Data Provider for the DG, this was created using XML as the data source and by use of the &#8220;resultFormat&#8221; of E4X we are able to quickly loop through a large XML structure and convert the XML nodes we need into an Array Collection</p>
<pre class="brush: as3; title: ; notranslate">
public function srvBasicXMLResult():void
{
	acBasicResults = new ArrayCollection();
	basicXMLList = new XMLList();
	basicXMLList = ComplexXML..Section;

	if(basicXMLList.length() == 0)
	{
		Alert.show(&quot;No matching items were found.\nPlease try another search criteria&quot;,
		&quot;No Match&quot;);
	}
	else
	{
//LOOP THROUGH THE XMLLIST AND CREATE AN OBJECT OF NAME/VALUE PAIRS FOR EACH ITEM*****
		for each(var child:XML in basicXMLList)
		{
			var _childObj:Object = new Object();
			_childObj.sectionID = child.@id;
			_childObj.courseNumber = child..courseId;
			_childObj.sectionTitle = child..sectionTitle;
			_childObj.creditHours = child..creditHours;
			_childObj.instructor = child..fullName;
			_childObj.seatsTotal = child..total;
			_childObj.seatsAvailable = child..available;
			_childObj.scheduleType = child..scheduleType;
			_childObj.startDate = child..startDate;
			_childObj.endDate = child..endDate;

			acBasicResults.addItem(_childObj);
		}
	}
	acBasicResults.refresh();
}</pre>
<p>
EXAMPLE OF XML SNIPPET</p>
<pre class="brush: as3; title: ; notranslate">
&lt;Root&gt;
	&lt;SearchResponse&gt;
		&lt;Courses&gt;
			&lt;Course crn=&quot;MATH:1030:199610&quot;&gt;
				&lt;subject&gt;MATH&lt;/subject&gt;
				&lt;courseTitle&gt;College Algebra&lt;/courseTitle&gt;
				&lt;courseNumber&gt;1030&lt;/courseNumber&gt;
				&lt;Sections&gt;
					&lt;Section id=&quot;199610&quot;&gt;
						&lt;courseId&gt;MATH:1030&lt;/courseId&gt;
						&lt;sectionTitle&gt;College Algebra&lt;/sectionTitle&gt;
						&lt;sectionDescription /&gt;
						&lt;instructor&gt;
							&lt;fullName&gt;STAFF&lt;/fullName&gt;
						&lt;/instructor&gt;
						&lt;seatAvailability&gt;
							&lt;total&gt;0&lt;/total&gt;
							&lt;available&gt;11&lt;/available&gt;
						&lt;/seatAvailability&gt;
						&lt;creditHours&gt;3&lt;/creditHours&gt;
						&lt;scheduleType&gt;L&lt;/scheduleType&gt;
						&lt;startDate&gt;1995-08-28&lt;/startDate&gt;
						&lt;endDate&gt;1995-12-15&lt;/endDate&gt;
						&lt;meetingLocations /&gt;
					&lt;/Section&gt;
				&lt;/Sections&gt;
			&lt;/Course&gt;
		&lt;/Courses&gt;
	&lt;/SearchResponse&gt;
&lt;/Root&gt;
</pre>
<p></p>
<table bgcolor="#000080" height="75" width="100%"><font color="#ffffff" size="+1" paddingLeft="10"></p>
<tr>
<td><a href="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png"><img src="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png" alt="blogNote" title="blogNote" width="48" height="48" class="alignleft size-full wp-image-320" /></a><br />Now don&#8217;t let that snippet of XML code fool you, there are several thousand courses in the Example Data above, so you can see how FAST using E4X gets the Data we need and applies it for display in our DG.</td>
</tr>
<p></font></table >
<br />
So using E4X we take the XML response (here it&#8217;s a static XML document but this could be a response from the Web Service) and using the &#8220;dot-dot&#8221; delimiter we can quickly traverse down and pluck out the group of nodes we need.<br />
We then assign those nodes to the XML List object we created.</p>
<pre class="brush: as3; title: ; notranslate">
basicXMLList = new XMLList();
basicXMLList = ComplexXML..Section;
</pre>
<p>
Then assign a node Name to the &#8220;dataField&#8221; property of our Data Grid Column to display the data into their appropriate locations.</p>
<table bgcolor="#000080" height="75" width="100%"><font color="#ffffff" size="+1" paddingLeft="10"></p>
<tr>
<td><a href="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png"><img src="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png" alt="blogNote" title="blogNote" width="48" height="48" class="alignleft size-full wp-image-320" /></a><br />We do not need to create a Column for each child Node in the &#8220;Section&#8221; node, just the ones we want to display. Though all the values of each child Node are available for future use when we get to the Data section and editing phase of this series later</td>
</tr>
<p></font></table >
<br />
Using E4X (ECMAScript for XML) our HUGE XML document is reduced to just the items we need in those columns and those XML nodes and their child Nodes are loaded into the XML List &#8220;basicXMLList &#8220;.</p>
<pre class="brush: as3; title: ; notranslate">
&lt;Section id=&quot;199610&quot;&gt;
	&lt;courseId&gt;MATH:1030&lt;/courseId&gt;
	&lt;sectionTitle&gt;College Algebra&lt;/sectionTitle&gt;
	&lt;sectionDescription /&gt;
	&lt;instructor&gt;
	    &lt;fullName&gt;STAFF&lt;/fullName&gt;
	&lt;/instructor&gt;
	&lt;seatAvailability&gt;
	    &lt;total&gt;0&lt;/total&gt;
	    &lt;available&gt;11&lt;/available&gt;
	&lt;/seatAvailability&gt;
	&lt;creditHours&gt;3&lt;/creditHours&gt;
	&lt;scheduleType&gt;L&lt;/scheduleType&gt;
	&lt;startDate&gt;1995-08-28&lt;/startDate&gt;
	&lt;endDate&gt;1995-12-15&lt;/endDate&gt;
	&lt;meetingLocations /&gt;
&lt;/Section&gt;
</pre>
<p>In the function code above &#8220;srvBasicXMLResult&#8221; you can see we then loop through the XML List and create an object of name/value paris for each item and load that object into our Array Collection that is Bound to the DG as it&#8217;s Data Provider.<br />
<br />
The beauty of Data Binding the Array Collection to the DG means that every time the Array Collection is updated for any reason the DG automatically updates it&#8217;s display and shows the new Data instantly!<br />
<br />
Now this is just ONE way of providing the Data Provider for the DG, we could of course use the XML List itself without converting it to an Array Collection (which we will cover later in the series).<br />
</p>
<table bgcolor="#000080" height="50" width="100%"><font color="#ffffff" size="+1" paddingLeft="10"></p>
<tr>
<td><a href="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png"><img src="http://truitgroup.com/flexgenie/wp-content/uploads/2009/08/blogNote.png" alt="blogNote" title="blogNote" width="48" height="48" class="alignleft size-full wp-image-320" /></a><br />For extremely large sets of Data you would probably skip the &#8220;conversion to Array Collection&#8221; step and use<br />the XML List directly</td>
</tr>
<p></font></table >
<br />
Well that&#8217;s the end of Part 1 of the series, to re-cap, we have covered&#8230;</p>
<ul>
<li>Creating the DG component</li>
<li>Loading in XML Data</li>
<li>Using E4X, convert the XML into a specific set of data in an XML List</li>
<li>Converting the XML Data to an Array Collection</li>
<li>Assigning the Array Collection as the Data Provider for our DG</li>
<li>Applying the &#8220;dataField&#8221; property on each Data Grid Column for our DG</li>
<li>Displaying large amounts of Data quickly into our DG</li>
</ul>
<p>
Next step we will tackle the ADG (Advanced Data Grid &#8211;  again for those of you who did not read the beginning of this series) which might need to be handled in several parts as there is ALOT you can do with the ADG that we will tackle.<br />
<br />
As always&#8230;.Thanks for stopping by and STAY TUNED!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D307&amp;title=Advanced%20Data%20Grids%20%E2%80%93%20Pt.%201" id="wpa2a_18"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=307</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Advanced Data Grid series</title>
		<link>http://truitgroup.com/flexgenie/?p=305</link>
		<comments>http://truitgroup.com/flexgenie/?p=305#comments</comments>
		<pubDate>Wed, 05 Aug 2009 17:16:19 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://truitgroup.com/flexgenie/?p=305</guid>
		<description><![CDATA[Flexgeniers (is that a word?), I apologize for the delay in getting the series up and running. Took a few rare and much needed days off. We will start into this series over the next couple of days and hopefully you will have a strong grasp of the Data Grid and Advanced Data Grid when [...]]]></description>
			<content:encoded><![CDATA[<p>Flexgeniers (is that a word?), I apologize for the delay in getting the series up and running.<br />
Took a few rare and much needed days off.<br />
We will start into this series over the next couple of days and hopefully you will have a strong grasp of the Data Grid and Advanced Data Grid when we get to the other side.</p>
<p>Thanks for your nice comments and to respond to the question about me being a professional journalist&#8230;&#8230;.Nope, just apparently was born with the gift of gab (he humbly said).</p>
<p>As always, thanks for visiting and see ya soon,<br />
Kenny</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ftruitgroup.com%2Fflexgenie%2F%3Fp%3D305&amp;title=Advanced%20Data%20Grid%20series" id="wpa2a_20"><img src="http://truitgroup.com/flexgenie/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://truitgroup.com/flexgenie/?feed=rss2&#038;p=305</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

