tag:blogger.com,1999:blog-88230542024-02-18T19:52:24.364-06:00Chandan Chopra - Musing and ShmoozingTechnologist deep in thought, contemplating and conversing casually to make social connections.Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.comBlogger152125tag:blogger.com,1999:blog-8823054.post-6715331141897646372016-11-14T13:45:00.000-06:002016-11-14T13:45:11.603-06:0095% of managers are wrong about what the most powerful motivator for employees at work<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
What do you think is the most important motivator for employees at work? Is it money, pressure, or praise?</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
<span style="box-sizing: border-box; font-weight: 700;">Typically managers believe the idea that pressure makes diamonds</span>. The thinking is that if you want exceptional performance, you align employee objectives with end-of-year bonuses for hitting certain milestones and then employees will turn up their work ethic to reach them.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
Long-held conventional wisdom on <a href="https://idonethis.com/what-you-dont-know-about-management/" style="box-sizing: border-box; color: #1c5e9b; text-decoration: none; transition: all 0.1s ease-in-out;">management</a> dies hard. That’s because it’s based on gut instinct and superstition — and managerial understanding of motivation is no different. <span style="box-sizing: border-box; font-weight: 700;">A massive 95% of managers are wrong about what the most powerful motivator for employees at work</span>.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
Not only that, they’re thinking about employee motivation fundamentally wrong.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
<span id="more-1096" style="box-sizing: border-box;"></span></div>
<h2 id="maslow's-hierarchy-of-needs-is-outdated" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 3rem; line-height: 1.2; margin: 0px 0px 1.6rem;">
Maslow’s Hierarchy of Needs is Outdated</h2>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnkYtuR3RFtMNt0Q-0mqto3scwkevkQSkseDbOGa47qwyN8qu4q5tG87IXaszO0ZGDftpsi1F4Y3FtBnalmoyBejyCXMysGGKLBtSudtihisJqkuu-7Nt858VXHNS486qpmOL_/s1600/Maslows_hierarchy_of_needs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnkYtuR3RFtMNt0Q-0mqto3scwkevkQSkseDbOGa47qwyN8qu4q5tG87IXaszO0ZGDftpsi1F4Y3FtBnalmoyBejyCXMysGGKLBtSudtihisJqkuu-7Nt858VXHNS486qpmOL_/s320/Maslows_hierarchy_of_needs.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
Seventy years ago, psychologist Abraham Maslow published the <a href="http://en.wikipedia.org/wiki/Maslow" s_hierarchy_of_needs="" style="box-sizing: border-box; color: #1c5e9b; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Hierarchy of Needs</a>, which has dominated popular thinking on the psychology of human motivation ever since.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
At the bottom of the hierarchy, you have your physiological needs: food, water, basic human needs. Building on top of that, you have safety, then love/belonging, then esteem, and finally, self-actualization. The pyramid shows a path of growth in an individual’s motivation as he satisfies one need and moves up to the next level.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
<a href="http://blog.idonethis.com/why-does-your-work-matter/" style="box-sizing: border-box; color: #1c5e9b; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">Maslow’s hierarchy</a> provides the basis for the kind of managerial thinking that focuses on cash bonuses as a reward for good performance. The rationale is that money is a more fundamental need in the hierarchy than passion or purpose, and therefore you can neglect the latter in favor of the former.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
Another example is when managers threaten job security to drive performance. They’re attempting to hit a base need in Maslow’s hierarchy of safety and security to motivate. Seeing such needs as more fundamental in Maslow’s hierarchy than self-esteem and respect means it’s logical that threats and pressure should motivate employees to work harder.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
Maslow’s hierarchy caught on immediately in the early 1940s — and perseveres today — because it’s simple to understand. But it’s outdated and facile.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
Recent psychological research <a href="http://blog.idonethis.com/why-does-your-work-matter/" style="box-sizing: border-box; color: #1c5e9b; text-decoration: none; transition: all 0.1s ease-in-out;" target="_blank">disproves the conventional wisdom around Maslow’s hierarchy</a>, providing proof that it should be eradicated from how you think about your employees.</div>
<h2 id="the-power-of-small-wins" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 3rem; line-height: 1.2; margin: 0px 0px 1.6rem;">
The Power of Small Wins</h2>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
In a wide-ranging study of employee motivation, Harvard Business School professor Teresa Amabile and psychologist Steven Kramer asked hundreds of employees to maintain a diary chronicling their peaks and valleys in motivation at work. Amabile and Kramer eventually analyzed 12,000 diary entries in total and what they discovered was totally contrary to Maslow’s hierarchy and conventional managerial wisdom.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
In fact, Amabile and Kramer talked with 600 managers about what they thought was the single-most important motivator for employees at work. A shocking 95% of them got the answer wrong.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
It’s not money, safety, security, or pressure that drives employees at work. It’s not the supposedly foundational needs in Maslow’s hierarchy.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
The most important motivator for employees at work is what Amabile and Kramer call “<a href="http://blog.idonethis.com/leverage-the-progress-principle-with-idonethis/" style="box-sizing: border-box; color: #1c5e9b; text-decoration: none; transition: all 0.1s ease-in-out;">the power of small wins</a>“: employees are highly productive and driven to do their best work when they feel as if they’re making progress every day toward a meaningful goal.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px; text-align: center;">
* * * * *</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
In a <a href="http://blogs.hbr.org/2014/07/make-sure-your-employees-emotional-needs-are-met/" style="box-sizing: border-box; color: #1c5e9b; text-decoration: none; transition: all 0.1s ease-in-out;">recent study by psychologist Susan David</a> of highly engaged employees at work, David asked people what made them so engaged and excited about their work.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
<span style="box-sizing: border-box; font-weight: 700;">96% of the employees didn’t mention pay at all</span>. Instead, what David found dovetailed with Amabile and Kramer’s discovery. In describing their motivations at work, highly engaged employees “highlighted feeling autonomous and empowered, and a sense of belonging on their teams.”</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
If you think that you need this touchy-feely stuff for only your weakest employees, you’re wrong. Non-hierarchical thinking about employee needs is even more important when it comes to your highest performers.</div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 2.6rem; padding: 0px;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.8); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; margin-bottom: 2.6rem; padding: 0px;">
<i><span style="font-size: xx-small;">(<a href="http://blog.idonethis.com/management-maslows-hierarchy-needs/" rel="nofollow" target="_blank">Source</a>) </span></i></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-79715546014434839392015-06-25T17:34:00.005-05:002015-06-25T17:34:33.297-05:00Prioritization: Less IS more<br />
<header style="background-color: white; box-sizing: inherit; color: #20242c; cursor: inherit; font-family: proxima-nova, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;"><h1 class="entry-title" style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: ff-tisa-web-pro, Georgia, 'Times New Roman', Times, serif; font-size: 2.8125em; font-weight: 400; line-height: 1.4; margin: 0px; padding: 1.875rem 0px 0px; text-decoration: inherit; vertical-align: inherit;">
Prioritization: Less IS more</h1>
</header><div class="entry-content" style="background-color: white; box-sizing: inherit; color: #20242c; cursor: inherit; font-family: proxima-nova, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.6000003814697px; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<img alt="Prioritization: Less IS more" class="attachment-post-thumbnail wp-post-image" height="340" src="https://blog.asana.com/wp-content/post-images/Screen-Shot-2014-12-03-at-10.34.21-AM.jpg" style="border: 0px; box-sizing: inherit; color: inherit; cursor: inherit; display: block; font-family: inherit; font-size: inherit; height: auto; line-height: inherit; margin: 2.5rem auto; max-width: 100%; padding: 0px; text-decoration: inherit; vertical-align: inherit; width: 840.75px;" width="888" /><div class="wpcollab-hello-emoji" style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
We all have a tendency to keep adding to our to-do lists; we often hear a voice that says, “Do more,” as if doing more equates to the value of work we’re producing. But this is a flawed strategy: taking on more has diminishing returns. You may get overworked, burn out, or feel chronically stressed by the scope of projects you’re taking on.</div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
No person or team can do <em style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">everything</em>. Instead of doing more, you can learn when to stop: when adding work no longer adds significant value (just before the curve above turns downward). You and your team will gain insight into what work is most impactful and, ultimately, you’ll be more focused and productive.</div>
<blockquote style="background: url(https://asanablog-wpengine.netdna-ssl.com/wp-content/themes/asana-2014/dist/images/blockquotes.svg) 0% 0% / 25px no-repeat; box-sizing: inherit; color: #1e8cd4; cursor: inherit; font-family: ff-tisa-web-pro, Georgia, 'Times New Roman', Times, serif; font-size: 1.25em; font-style: italic; line-height: inherit; margin: 0px 0px 0px -40px; padding: 0px 0px 0px 40px; text-decoration: inherit; vertical-align: inherit;">
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Science says, “do less”</div>
</blockquote>
<h2 style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 2.125em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Leaving the office no longer means leaving work</h2>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
There used to be an easy check against constantly doing more: going home. But now that many of us can work from anywhere, leaving the office no longer means “leaving work.” While working all the time has become the new normal, both science and common sense say this is completely unsustainable.</div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
The negative effects of constantly working are clear: <a href="http://globenewswire.com/news-release/2013/04/09/536945/10027728/en/Workplace-Stress-on-the-Rise-With-83-of-Americans-Frazzled-by-Something-at-Work.html" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">More than 80 percent of Americans are stressed at work</a>. Adults aged 18-33 experience more stress than any other age group, with work being the top reported source of stress according to a 2013 <a href="http://www.apa.org/news/press/releases/stress/2012/full-report.pdf" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">survey</a>.</div>
<h2 style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 2.125em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Prioritization shouldn’t be <em style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">this</em> complicated</h2>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
There is no shortage of advice about how to prioritize. But typically, advice and frameworks (like the diagrams below) don’t help you make decisions during crunch time, when deciding what your team needs to get done today, this week, or this month is crucial.</div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<img alt="Coaches and productivity experts have developed charts, graphs, and matrices to help you prioritize (images from prioritization.net, processgps.com, and planbox.com. Prioritization really shouldn’t be this complicated!" class="retina2x no-border aligncenter" src="https://d1gwm4cf8hecp4.cloudfront.net/images/guide/aspire/image_5.png" style="border: 0px; box-sizing: inherit; color: inherit; cursor: inherit; display: block; font-family: inherit; font-size: inherit; height: auto; line-height: inherit; margin: 5px auto; max-width: 100%; padding: 0px; text-decoration: inherit; vertical-align: inherit;" title="" /></div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Coaches and productivity experts have developed charts, graphs, and matrices to help you prioritize, but prioritization shouldn’t be this complicated!</div>
<h2 style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 2.125em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
3 Ways to prioritize your day</h2>
<h3 style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 1.75em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
1. Start by setting goals</h3>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Start by thinking about what you’re doing and why. <a href="https://asana.com/guide/more/insights/hit-your-goals" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">Set and record goals with your team for a specific time period</a>. Make these goals accessible, so everyone can refer back to them frequently.</div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Get into a habit of evaluating your work and tasks in the context of your team’s goals. Your top priorities should align with these goals and help you get one step closer to achieving them. Once goals become the common decision-making framework for your team, it will be completely reasonable to say, “This is a great idea, but isn’t a priority for this time period. Let’s save this for later when we are focused on that goal.”</div>
<blockquote style="background: url(https://asanablog-wpengine.netdna-ssl.com/wp-content/themes/asana-2014/dist/images/blockquotes.svg) 0% 0% / 25px no-repeat; box-sizing: inherit; color: #1e8cd4; cursor: inherit; font-family: ff-tisa-web-pro, Georgia, 'Times New Roman', Times, serif; font-size: 1.25em; font-style: italic; line-height: inherit; margin: 0px 0px 0px -40px; padding: 0px 0px 0px 40px; text-decoration: inherit; vertical-align: inherit;">
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<span style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; font-weight: 700; line-height: inherit; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">Asana Tip: </span><a href="https://asana.com/guide/more/insights/hit-your-goals" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">Track high-level goals</a>, and every step between now and the successful completion of the goal, in Asana.</div>
</blockquote>
<h3 style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 1.75em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
2. Keep your daily task list clutter free</h3>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Once your team is clear about the high-level goals, start prioritizing your tasks. Narrow down your daily task list to just 3 to 5 items (unless your tasks are very small).</div>
<blockquote style="background: url(https://asanablog-wpengine.netdna-ssl.com/wp-content/themes/asana-2014/dist/images/blockquotes.svg) 0% 0% / 25px no-repeat; box-sizing: inherit; color: #1e8cd4; cursor: inherit; font-family: ff-tisa-web-pro, Georgia, 'Times New Roman', Times, serif; font-size: 1.25em; font-style: italic; line-height: inherit; margin: 0px 0px 0px -40px; padding: 0px 0px 0px 40px; text-decoration: inherit; vertical-align: inherit;">
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<span style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; font-weight: 700; line-height: inherit; margin: 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">Asana Tip: </span><a href="https://asana.com/guide/basics/organize/plan-your-day" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">Use Today, Upcoming, and Later sections in your My Task List in Asana to plan exactly what you’ll work on each day.</a> This process should just take just a few minutes each day.</div>
</blockquote>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Consider these questions as you prioritize your tasks:</div>
<ul style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; list-style-type: circle; margin: 0.9375rem 0px 0px 20px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<li style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0.9375rem 0px 0px; padding: 0px; position: relative; text-decoration: inherit; vertical-align: inherit;">Does this task directly support the goals we set for this time period?</li>
<li style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0.9375rem 0px 0px; padding: 0px; position: relative; text-decoration: inherit; vertical-align: inherit;">What do I absolutely have to accomplish today?</li>
<li style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0.9375rem 0px 0px; padding: 0px; position: relative; text-decoration: inherit; vertical-align: inherit;">When does this need to get done by?</li>
<li style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0.9375rem 0px 0px; padding: 0px; position: relative; text-decoration: inherit; vertical-align: inherit;">Am I excited about this?</li>
<li style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0.9375rem 0px 0px; padding: 0px; position: relative; text-decoration: inherit; vertical-align: inherit;">Is my team excited about this?</li>
<li style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0.9375rem 0px 0px; padding: 0px; position: relative; text-decoration: inherit; vertical-align: inherit;">Do I have the energy and brainpower required to do this effectively today/right now?</li>
</ul>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Once you have <a href="https://asana.com/guide/basics/organize/plan-your-day" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">your task list set for the day</a>, you will find that you are more productive, effective, and at ease when you start working.</div>
<h3 style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 1.75em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
3. Get more done</h3>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Once you have an uncluttered plan for the day, get started on your work. Getting going might be the most challenging “task” of all, since your highest-priority task may be what you are resisting the most. To move from procrastination to action, try breaking the task into smaller parts or <a href="http://www.linkedin.com/today/post/article/20140121123613-25056271-tasks-down-how-to-overcome-procrastination-by-facing-discomfort?trk=prof-post" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">reflecting on why you are avoiding the work</a>.</div>
<blockquote style="background: url(https://asanablog-wpengine.netdna-ssl.com/wp-content/themes/asana-2014/dist/images/blockquotes.svg) 0% 0% / 25px no-repeat; box-sizing: inherit; color: #1e8cd4; cursor: inherit; font-family: ff-tisa-web-pro, Georgia, 'Times New Roman', Times, serif; font-size: 1.25em; font-style: italic; line-height: inherit; margin: 0px 0px 0px -40px; padding: 0px 0px 0px 40px; text-decoration: inherit; vertical-align: inherit;">
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
“I’ve found an indispensable three-step process for reliably moving from procrastination to action: (1) face whatever I’m putting off, (2) be honest with myself or a friend about why it’s uncomfortable, and (3) identify one easeful next step.” Justin Rosenstein, Asana co-founder, <a href="http://www.linkedin.com/today/post/article/20140121123613-25056271-tasks-down-how-to-overcome-procrastination-by-facing-discomfort?trk=prof-post" style="-webkit-transition: all 0.3s; background: 0px 0px; box-sizing: inherit; color: #1e8cd4; cursor: pointer; font-family: inherit; font-size: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: all 0.3s; vertical-align: inherit;">How to Overcome Procrastination by Facing Discomfort on Linkedin</a></div>
</blockquote>
<h2 class="pullquote" style="box-sizing: inherit; color: inherit; cursor: inherit; font-size: 2.125em; font-weight: 400; line-height: 1.4; margin: 1.875rem 0px 0px; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Leave room in your planning for unexpected tasks</h2>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Throughout the day, you’ll encounter distractions and hurdles that will lure you from your task list. Leave room in your planning for unexpected tasks, but feel empowered to respond to requests for your time by citing your priorities and team goals. Instead of saying, “I’m too busy,” say, “I would love to work on this, but I’m focused on goal X this week.”</div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
Mastering the art of prioritization is one of the best ways to achieve more. By dedicating yourself to what’s most important to your team and eliminating the other options, you’ll be more productive, more valuable to your team, and have more time to relax.</div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<br /></div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
(<i>Credit: <a href="https://blog.asana.com/2014/12/workstyle-prioritization/" target="_blank">Asana</a></i>)<br /></div>
<div style="box-sizing: inherit; color: inherit; cursor: inherit; font-family: inherit; font-size: inherit; line-height: inherit; margin-top: 1.875rem; padding: 0px; text-decoration: inherit; vertical-align: inherit;">
<br /></div>
</div>
</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-40647350431146348442014-08-01T13:07:00.003-05:002014-08-01T13:07:48.578-05:00Credit Services Organization (CSO) vs. Credit Access Business (CAB)<div dir="ltr" style="text-align: left;" trbidi="on">
<b><br /></b>
<b>Credit Services Organization (CSO)</b><br />
<br />CSOs were formerly defined as credit repair companies, and are any establishment that provides payment in order to extend consumer credit. CSOs are regulated by the government to ensure that all stipulations are met and that consumers don’t pay outrageous fees for help with credit repair.<br />
<br />
<b>Credit Access Business (CAB) </b><br />
<br />
The term credit access business is used in some states to refer to the new model of CSOs. Payday loan companies and car title loan companies are required to have a CAB license that is more specific and detailed regarding the laws of these loans. A credit service organization (CSO) was the former model and was an all-encompassing establishment that did little to regulate how loans are given and paid back.
The CAB license was created by lawmakers in an attempt to define strict parameters and regulations for the borrowing industry.</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-11182876863248057542014-08-01T12:50:00.003-05:002014-08-01T13:01:04.316-05:00The 20 best wireframing tools<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 class="strapline" style="background-color: white; border: 0px; color: #333333; font-family: Oswald, Arial, sans-serif; font-size: 1.25em; font-weight: 400; letter-spacing: 0.04em; line-height: 1.52381em; margin: 0.5625em 0px 15px; padding: 0px; vertical-align: baseline;">
There are more wireframing tools to choose from than ever. We find you the pick of the bunch.</h2>
<div class="copy" style="background-color: white; border: 0px; color: #333333; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 18px; line-height: 1.52381em; margin: 0px 0px 15px; padding: 0px; vertical-align: baseline;">
<div style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; text-align: left; vertical-align: baseline;">
Wireframing tools make the process of creating an app or website fundamentally easier, by visually stripping the product down and allowing all involved to focus purely on functions and user interactivity.</div>
<div style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; text-align: left; vertical-align: baseline;">
Clients need to understand how your proposed app or website will work. But simply explaining to them verbally or textually leaves the vast majority of functions down to their imagination. Wireframing tools can be extremely helpful in squaring that circle.</div>
<h4 style="border: 0px; font-family: Oswald, Arial, sans-serif; font-size: 28.8px; font-style: inherit; font-variant: inherit; font-weight: 400; letter-spacing: 0.04em; line-height: 22px; margin: 0px 0px 30px; padding: 0px; vertical-align: baseline;">
Choose wisely</h4>
<div style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
There are more wireframing tools on the market than ever, each offering varying levels of functionality. Some software can be used purely for simple wireframes, while others will allow you to create a working prototype.</div>
<div style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Being creative should come first over any part of the process. So taking advantage of trial downloads or free software and finding the one that fits in with the way <em style="border: 0px; font-family: inherit; font-size: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">you</em> work is the only way of finding out which one is right for you. We've selected 20 of the best wireframing tools to get you started. Enjoy!</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; font-style: inherit; font-variant: inherit; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
01. <a href="http://www.balsamiq.com/products/mockups" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Balsamiq Mockups</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCRy-x5uhdLeWa6q2Kfj5WPg5E9UObCKyOmrTSa3xy2oX2yuQWsMnaD4y7bUdV7Qo99oo-3D2lyYJLGaZU_fyGN8qD4VHU9O-JIhzBjiPbYk-E5k6rZ6ak_29PjvK1vQEFPUX1/s1600/balsamiq.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCRy-x5uhdLeWa6q2Kfj5WPg5E9UObCKyOmrTSa3xy2oX2yuQWsMnaD4y7bUdV7Qo99oo-3D2lyYJLGaZU_fyGN8qD4VHU9O-JIhzBjiPbYk-E5k6rZ6ak_29PjvK1vQEFPUX1/s1600/balsamiq.png" /></a></div>
<div>
<br /></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline; width: 535px;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Wireframing tool Balsamiq Mockups is a firm favourite among the web design community</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac, Linux, Windows & web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$79</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Balsamiq Mockups includes several drag-and-drop elements, from buttons to lists, each styled as a hand-drawing. The basic premise behind this wireframing tool is to keep the mock-ups "intentionally rough and low fidelity", to encourage as much feedback as possible.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
02. <a href="http://www.axure.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Axure</a></h3>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhzikEM5sAtrk6HzPCIrhTJy-uv2kuX7fYuauXhCMzVPvv6QiLmeShBt-_mHiUBSkLRRDZYgHm7bv-DQqpFCAai0knO7EVwG_J4FYOOt9f8V8RHgSvHeJCG5_RgCw34MIwve5v/s1600/axure.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhzikEM5sAtrk6HzPCIrhTJy-uv2kuX7fYuauXhCMzVPvv6QiLmeShBt-_mHiUBSkLRRDZYgHm7bv-DQqpFCAai0knO7EVwG_J4FYOOt9f8V8RHgSvHeJCG5_RgCw34MIwve5v/s1600/axure.png" /></a></div>
<div>
<br /></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Axure lets you create interactive HTML mock-ups for both websites and apps</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac & Windows</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$289 - $589</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
As well as creating mock-ups, Axure allows you to add functionality to your layout and create an interactive prototype. Features of this wireframing tool include sitemaps and various 'widgets' in the form of various UI elements. Interactive HTML mock-ups can be created for both websites and apps; you can even view your app design on your phone with a built-in share function.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
03. <a href="http://pidoco.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Pidoco</a></h3>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKiUcPcHvo-RvGXukbUWUoGNT3wmJTBZPB5nRV8KlJubY7ZdivNvSL_LTmxbUEtCWoTinWXK4W1l4Bgb2duwC2Op_ILOy_DBPgXe4YVsM9pAfU-Th2ibYHJu2wOHL7bR3HRGRz/s1600/pidoco.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKiUcPcHvo-RvGXukbUWUoGNT3wmJTBZPB5nRV8KlJubY7ZdivNvSL_LTmxbUEtCWoTinWXK4W1l4Bgb2duwC2Op_ILOy_DBPgXe4YVsM9pAfU-Th2ibYHJu2wOHL7bR3HRGRz/s1600/pidoco.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline; width: 535px;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Pidoco includes a handy library of drag-and-drop interface elements</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$9-$59 per month</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Pidoco is similar to Axure, in that it includes library of various drag-and-drop interface elements, as well as the ability to add multiple pages and layers. Your prototypes can be shared online with clients, and includes functions for collaborative feedback and discussion. Viewing your prototypes on your phone is as easy as downloading the Pidoco app.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
04. <a href="http://visio.microsoft.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Visio</a></h3>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7jgv-l3kTxEkiw8LY1uUqWWOG99fzbLVP-FPwq_RKKkm4h2XYOxFcAm_Pj_KXdX84aD_SMhRDsoDa4F2RdnzFdpTo-7AOZLvBjT41CMlcpmz-6XlcJqqgfp3sx8G4vaFsOGT-/s1600/visio.png" imageanchor="1" style="line-height: 1.52381em; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7jgv-l3kTxEkiw8LY1uUqWWOG99fzbLVP-FPwq_RKKkm4h2XYOxFcAm_Pj_KXdX84aD_SMhRDsoDa4F2RdnzFdpTo-7AOZLvBjT41CMlcpmz-6XlcJqqgfp3sx8G4vaFsOGT-/s1600/visio.png" height="191" width="320" /></a><br />
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline; width: 535px;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Visio's interface will be familiar if you're used to using Microsoft Word or Excel</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Windows</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$599.95-$999</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Visio's real strength lies in technical diagrams rather than wireframing; however, for those already accustomed with other Microsoft apps such as Word or Excel, the interface will be very familiar. It is quite clunky, Visio does offer add-on tools such as Swipr, which allows you to create and export a usable HTML prototype.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
05. <a href="http://www.adobe.com/products/indesign.html" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">InDesign</a></h3>
</div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOplUbYzLN729nCQ7e-3-mS5zv26bxuL8nc9tFhN9FXE4aKZRJqHl5Yds8mXBLHQOrLtBDmj1tQftl-uSU0M2a4XDG3BywECqk4kxjhh8ylFWrFtzNnZBW6c2JIhZBBYpP_hy_/s1600/indesignliquidlayout.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOplUbYzLN729nCQ7e-3-mS5zv26bxuL8nc9tFhN9FXE4aKZRJqHl5Yds8mXBLHQOrLtBDmj1tQftl-uSU0M2a4XDG3BywECqk4kxjhh8ylFWrFtzNnZBW6c2JIhZBBYpP_hy_/s1600/indesignliquidlayout.png" /></a></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline; width: 535px;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">InDesign lets you use animations and videos in your wireframes</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac, Windows</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong><a href="http://www.adobe.com/uk/products/illustrator.html" sl-processed="1" style="background: transparent; border: 0px; color: black; display: inline; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">£660.51</a> or as part of Adobe Creative Cloud</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
By including animations, video and object states, it’s very easy to create a mock-up of a website or app in the form of an interactive PDF with InDesign - <a href="http://www.creativebloq.com/graphic-design-tips/adobe-indesign-cs6-review-1233331" sl-processed="1" style="background: transparent; border: 0px; color: #ff5a14; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">read this review of InDesign CS6 here</a>. The software also includes the ability to create libraries of page elements, so you can create collections of various reusable interface graphics.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
06. <a href="http://iplotz.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">iPlotz</a></h3>
</div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNS06-_F_Mt9y_bTc5iDBt0DSmmlnVJF4wYUeNaAAR9_VO1LM9IKXGeFn8tIHqcvefF7iQqcRd-4jXS1MEHME6zmCr0a6TIf4yrSJNNRsl9Oe7tgtDsYpvCz5TfBzl26pQhTVE/s1600/iplotzlarge.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNS06-_F_Mt9y_bTc5iDBt0DSmmlnVJF4wYUeNaAAR9_VO1LM9IKXGeFn8tIHqcvefF7iQqcRd-4jXS1MEHME6zmCr0a6TIf4yrSJNNRsl9Oe7tgtDsYpvCz5TfBzl26pQhTVE/s1600/iplotzlarge.png" /></a></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Create Flash-powered wireframes with iPlotz</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based (Flash)</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>Free-$79</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Flash-base wireframing tool iPlotz allows you to make clickable wireframes with drag-and-drop components. Its main addition includes the ability to add tasks and notes for project managers and coders.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
07. <a href="http://www.adobe.com/uk/products/photoshop" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Photoshop</a></h3>
</div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqXVGMiHSa5Xtv5_x855zxov89xUv0DyloUfLzXreCrZbzjAydxAi9sbZGrV5td1AfxiKdtjeZ_ie8Culq1sQCraYqTpeoeczld_1iDJ7-btvLDYbR-0QAHbpa240xboCjc8lI/s1600/photoshop.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqXVGMiHSa5Xtv5_x855zxov89xUv0DyloUfLzXreCrZbzjAydxAi9sbZGrV5td1AfxiKdtjeZ_ie8Culq1sQCraYqTpeoeczld_1iDJ7-btvLDYbR-0QAHbpa240xboCjc8lI/s1600/photoshop.png" /></a></div>
<div>
<br /></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Never thought of Photoshop as a wireframing tool? Think again!</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac, Windows</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>£660.51 or as part of Adobe Creative Cloud</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Photoshop doesn’t offer libraries of interface elements, but for straight-forward, fast wireframing, it is a very easy choice for designers - <a href="http://www.creativebloq.com/photo-editing/adobe-photoshop-cs6-review-1233260" sl-processed="1" style="background: transparent; border: 0px; color: #ff5a14; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">read our review of Photoshop CS6 here</a>. Even for those not familiar with Adobe products, sketching out quick ideas, grouping various elements and layers affords a very quick process.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
08. <a href="http://www.adobe.com/uk/products/fireworks" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Fireworks</a></h3>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy6KF2XDSApiB90Vr70SzsfX8R7ZSu1WYIMy_849Gpzea_YO2oZEmBphjbvGUvDrRm1toGA4r3igdetZMyP2NrMm7JsnxF8Xz3Mo5p-P4MFUnGmC_RM0PqDUp3CZxmwKcjkh-j/s1600/fireworkswin.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy6KF2XDSApiB90Vr70SzsfX8R7ZSu1WYIMy_849Gpzea_YO2oZEmBphjbvGUvDrRm1toGA4r3igdetZMyP2NrMm7JsnxF8Xz3Mo5p-P4MFUnGmC_RM0PqDUp3CZxmwKcjkh-j/s1600/fireworkswin.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">With Fireworks, it's easy to duplicate styles implemented in the wireframe in the final build</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac, Windows</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>£282.90 or as part of <a href="http://www.creativebloq.com/graphic-design-tips/adobe-creative-cloud-1233149/" sl-processed="1" style="background: transparent; border: 0px; color: black; display: inline; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Adobe Creative Cloud</a></li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Fireworks allows you to design wireframes and prototypes for web, as well as mobile and tablet apps. CSS including colours, fonts and corner radius can be extracted so styles implemented throughout the process can be duplicated in the final build. Various symbols and templates are also included for quick wireframing.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
<span style="font-size: 28.6px; letter-spacing: 0.04em;">09.</span><span style="font-size: 28.6px; letter-spacing: 0.04em;"> </span><a href="http://www.protoshare.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Protoshare</a></h3>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Bqh6-DbjVw-F6pqAtKul2zUOC_bpYSg1cRD4E66R3okfoyNGydTgce_6juFjYjDh7Kaj1aN_dYmMHaR1H3Mub8BRQEcL9sFXxsiXIqVTtVo19HaAtjLl9Q6x4mwhDFnnmd8f/s1600/protoshare.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Bqh6-DbjVw-F6pqAtKul2zUOC_bpYSg1cRD4E66R3okfoyNGydTgce_6juFjYjDh7Kaj1aN_dYmMHaR1H3Mub8BRQEcL9sFXxsiXIqVTtVo19HaAtjLl9Q6x4mwhDFnnmd8f/s1600/protoshare.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Protoshare puts emphasis on online collaboration</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$290-$590</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Protoshare is an online tool, with a focus on collaboration and sharing. It includes a library of drag-and-drop elements, a sitemap, and the ability to use custom css and insert your own elements. Due to the emphasis on online collaboration, unlike some other tools, it can't export as a PDF, however it is worth considering for its prototyping features.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
10. <a href="http://evernote.com/penultimate" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Penultimate</a></h3>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh66I4-zsJrojN8ffggLATreT-axqBOQ4eCtqA5uyafIy3CMgFlXLcHElHqTCRXsECghsFZUyR6nZlTurA0NmHf8NWvXhouOCo0wv9mR_4LabWV30Md4upxArE6OlmltaOW7rqU/s1600/penultimate.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh66I4-zsJrojN8ffggLATreT-axqBOQ4eCtqA5uyafIy3CMgFlXLcHElHqTCRXsECghsFZUyR6nZlTurA0NmHf8NWvXhouOCo0wv9mR_4LabWV30Md4upxArE6OlmltaOW7rqU/s1600/penultimate.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh66I4-zsJrojN8ffggLATreT-axqBOQ4eCtqA5uyafIy3CMgFlXLcHElHqTCRXsECghsFZUyR6nZlTurA0NmHf8NWvXhouOCo0wv9mR_4LabWV30Md4upxArE6OlmltaOW7rqU/s1600/penultimate.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Wireframing for an iPad app? Then use an iPad tool!</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: iPad</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>69p</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
If you're working purely for iPad design, sketching out ideas directly within the device itself is the perfect way to ensure you’re working to the right ratio and with well-sized active areas. Sketches and ideas can be easily saved out and sent to clients for approval.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
11. <a href="http://pencil.evolus.vn/Default.html" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Pencil Project</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3jfzpNNSvsLSLi13DlYvXWkvEjhmUoAtni54ssTzAww1oK5MgVEtV6TB2zBzdkv6BdqzR49d4FMp4CbnFuwi12RUUyOP6EY5WzHdITs4PFiDw4da6faMPHj-cixaRhYZGlBie/s1600/pencilproject.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3jfzpNNSvsLSLi13DlYvXWkvEjhmUoAtni54ssTzAww1oK5MgVEtV6TB2zBzdkv6BdqzR49d4FMp4CbnFuwi12RUUyOP6EY5WzHdITs4PFiDw4da6faMPHj-cixaRhYZGlBie/s1600/pencilproject.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;"><br />Pencil is free, open source and comes with a variety of templates</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Windows & Mac</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>Free</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Pencil is a free, open source wireframing tool available for both Windows and Mac. Features include multi-page documents, external object import, as well as aligning, z-ordering, scaling and rotation. Various templates are included as well as the ability to export to HTML, PNG, <span class="skimlinks-unlinked" style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Openoffice.org</span> document, Word document, and PDF.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
12. <a href="http://www.omnigroup.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">OmniGraffle</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtzQ1P8YinobGkGGWB0XbZmUz3yT3O1NR-2U1CZFxnf-9N_74iaBj9_ROKY3BzOHKdzU8KbJZktXvScu8PVQO-4WWl406nrZlU0V9gKkUCOEA47XRrYg3pE_y9NRpkCYHTk7m-/s1600/omni2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtzQ1P8YinobGkGGWB0XbZmUz3yT3O1NR-2U1CZFxnf-9N_74iaBj9_ROKY3BzOHKdzU8KbJZktXvScu8PVQO-4WWl406nrZlU0V9gKkUCOEA47XRrYg3pE_y9NRpkCYHTk7m-/s1600/omni2.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">OmniGraffle has made a seamless transition from Mac to iPad</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac and iPad</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$49.99</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
OmniGraffle is one of those perennial Mac favourites that makes a seamless and obvious transition to the iPad. It’s effectively an ideas tool that enables you to quickly bash together website wireframes, diagrams, process charts or page layouts. You select a document type, and OmniGraffle makes context-sensitive joins between separate elements, automatically linking lines in diagrams and aligning shapes and elements in wireframes or page layouts.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
13. <a href="http://www.gliffy.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Gliffy</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsW79-v8_PMuHJdcxEv4xpyjR6YzcFTeNkG6WAvkmTvI_JDLM1San2TQ9muIMJsow9MVwGMG9h3IYTFr8h6RGNa1uCsTbsV09Rhy8N4A_iEAsNEufbFGYjfkG5WVkfc12Hq8NL/s1600/gliffy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsW79-v8_PMuHJdcxEv4xpyjR6YzcFTeNkG6WAvkmTvI_JDLM1San2TQ9muIMJsow9MVwGMG9h3IYTFr8h6RGNa1uCsTbsV09Rhy8N4A_iEAsNEufbFGYjfkG5WVkfc12Hq8NL/s1600/gliffy.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;"><br />Gliffy: like Visio, but cheaper</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>Free-$9.95 p/month</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Gliffy pretty much pitches itself as a cheaper online version of Viseo. It includes drag and drop components, online collaboration, image export and version tracking. There's no ability to create prototypes, but if you happen to be looking for a cheaper version of Vimeo, then this is it.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
14. <a href="http://www.mockflow.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Mockflow</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0tjBP14_DDA7WSZfdHio-nDgTAgzjICl8oZa9MlREv-INHAjWx9i3seG8uFNoGiGNKtYgwV7yAU1EOT_aFGAmXbosdsMc3B5hAxQddY6VZkjr1QBIDYFdM_3cIwGBPjRRxUfT/s1600/mockflow.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0tjBP14_DDA7WSZfdHio-nDgTAgzjICl8oZa9MlREv-INHAjWx9i3seG8uFNoGiGNKtYgwV7yAU1EOT_aFGAmXbosdsMc3B5hAxQddY6VZkjr1QBIDYFdM_3cIwGBPjRRxUfT/s1600/mockflow.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>Free-$69 per year</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Mockflow allows you to create working prototypes, and like Protoshare has an emphasis on collaboration and sharing. It includes features such as a sitemap creator for pages and folders, version tracking, image and component collections, chat, and HTML5 export.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
15. <a href="http://framebox.org/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Framebox</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6oS_m9o17HSjHd_LIRnXzIxb4Ns_nRu14-5KbkxZltz_9NUnawxpWkTVmr9yjUJmZ_ScZBrZbZojg7da_yKLyMlDgw9LJ47isLjWc_oc-yGvyhLcec2L0rVapr9i1H0C4USX/s1600/framebox.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6oS_m9o17HSjHd_LIRnXzIxb4Ns_nRu14-5KbkxZltz_9NUnawxpWkTVmr9yjUJmZ_ScZBrZbZojg7da_yKLyMlDgw9LJ47isLjWc_oc-yGvyhLcec2L0rVapr9i1H0C4USX/s1600/framebox.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Framebox is a good free solution for building simple wireframes</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Online</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>Free</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Framebox is a great, free online tool for very simple wireframing. It includes a few drag and drop elements and allows you to share the web page as a unique URL. You can also give your elements titles and descriptions to help explain their function.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
16. <a href="http://iphonemockup.lkmc.ch/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">iPhone mockup</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglv6FG3HACEPOokDNdFuqIJSAVf1zQfaVIQ5gJBnaJn_pFhUNZ0lc5nlUS8EJSGuZm8vk1ZIwZd2Muyr7aGyLqw2Rjs3mjk9zRrSQ7NbVYfS4Lsg98d_TIRyBd40qsCd0-TnZ0/s1600/iphonemockup.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglv6FG3HACEPOokDNdFuqIJSAVf1zQfaVIQ5gJBnaJn_pFhUNZ0lc5nlUS8EJSGuZm8vk1ZIwZd2Muyr7aGyLqw2Rjs3mjk9zRrSQ7NbVYfS4Lsg98d_TIRyBd40qsCd0-TnZ0/s1600/iphonemockup.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;"><br />iPhone Mockup is purely a wireframing tool for iPhone app UIs</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>Free</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Like Framebox, this is another free online tool, albeit even simpler and aimed entirely at iPhone interfaces. There are two visual styles to choose from - 'pencil' and 'illustration' - the latter being the cleaner version or the two. Designs can be shared via a unique URL.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
17. <a href="http://www.flairbuilder.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">FlairBuilder</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy4zPyXf7KUcgcSD42_FME7qrw-YwWXvd9R_EG0-b7__BG-oEWBMUTD7-klQLJoDVMFe5GxK8aaXGET5qUpdAVBhK9LkL8AMj_8-ZeMumybVJnloGDuMjwD5NiPgVrcQsTtht6/s1600/FlairBuilder.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy4zPyXf7KUcgcSD42_FME7qrw-YwWXvd9R_EG0-b7__BG-oEWBMUTD7-klQLJoDVMFe5GxK8aaXGET5qUpdAVBhK9LkL8AMj_8-ZeMumybVJnloGDuMjwD5NiPgVrcQsTtht6/s1600/FlairBuilder.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Flairbuilder lets you choose between ‘high-fidelity’ and ‘low-fidelity’ style graphics</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Mac, Windows</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$99</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Flairbuilder works on the Adobe Air platform and features multi-page projects, site map and comments. Like the rest, components are placed using a drag-and-drop interface and a clickable prototypes can be exported as HTML or shared online. You can also choose between 'high-fidelity' and 'low-fidelity' style graphics.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
18. <a href="http://www.justinmind.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">Justinmind</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCSnFGCO5u0iJiBIgSXRZJWzpHndm-b76UsSJWDrFR590Gb_R2sFrlrGJfjko5usZqNHIdsY51vO9dfQqfTKZo5A1dwZtT3y2C3cOAroFwm03NEH84pGQuBFh_an4_TEgo-9sB/s1600/justInmind.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCSnFGCO5u0iJiBIgSXRZJWzpHndm-b76UsSJWDrFR590Gb_R2sFrlrGJfjko5usZqNHIdsY51vO9dfQqfTKZo5A1dwZtT3y2C3cOAroFwm03NEH84pGQuBFh_an4_TEgo-9sB/s1600/justInmind.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline; width: 535px;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Justinmind offers a library of UI elements and custom styling for use in your wireframes</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price:</strong> $19-$29 per month</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Web-based Justinmind includes a library of UI elements, from buttons and form, to generics shapes and a range of widgets for iOS, Blackberry, SAP, and Android. Custom styling is included, so you can add rounded corners, cropped images or colour gradients, or import graphics by dragging them into the browser. Prototypes can be exported as HTML.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
19. <a href="http://www.hotgloo.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">HotGloo</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDjn7XvgmBsgjlhZKAd9GL1CNtyNdgFS3SMhsKcE6N4EW6_6Dx10Wlbmi-vv1ynNGU9l_lJVoNrEfIX6wpNnTP32ig7BbK_XqtywITP8yfYS9d4q9YoDE0PF_AP1uDXMHvftQB/s1600/hotgloo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDjn7XvgmBsgjlhZKAd9GL1CNtyNdgFS3SMhsKcE6N4EW6_6Dx10Wlbmi-vv1ynNGU9l_lJVoNrEfIX6wpNnTP32ig7BbK_XqtywITP8yfYS9d4q9YoDE0PF_AP1uDXMHvftQB/s1600/hotgloo.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">Flash-based wireframing tool HotGloo offers a rich level of features</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based (Flash)</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price: </strong>$14-$54 per month</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
HotGloo's prototyping alone offers a rich level of features, going far beyond simple clickable buttons, such as the ability to change displayed elements depending on whether or not a user is logged in. Prototypes can be exported as PDFs, however given the fact HotGloo is Flash-based, most of the more complex interactivity that makes it great, is lost in the process; equally, viewing on iOS devices isn't an option.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
20. <a href="http://www.justproto.com/" sl-processed="1" style="background: transparent; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">JustProto</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrD8Jt519nHji0VblnxEQmmHfPevMh4RTF6X3alNHCFzGLXuH9qeoyGQs4nTYRkhGSLS03RA-uhF2c-tBNqDKHwWBUqgfX5KoSFXIEjKYKR0t-qGHuWxw2C9kadh5TAVnIXnL/s1600/justproto.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrD8Jt519nHji0VblnxEQmmHfPevMh4RTF6X3alNHCFzGLXuH9qeoyGQs4nTYRkhGSLS03RA-uhF2c-tBNqDKHwWBUqgfX5KoSFXIEjKYKR0t-qGHuWxw2C9kadh5TAVnIXnL/s1600/justproto.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">JustProto offers live collaboration and chat features</figcaption></figure><br />
<ul style="border: 0px; counter-reset: li 0; display: inline-block; list-style-image: initial; list-style-position: initial; margin: 0px 0px 20px; padding: 0px 0px 0px 26px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Platform</strong>: Web-based</li>
<li style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 4px; padding: 0px; position: relative; vertical-align: baseline;"><strong style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Price:</strong> $13-$63 per month</li>
</ul>
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
JustProto features include live collaboration and chat, functional prototyping, drag-and-drop component library and URL sharing. It also allows you to make custom elements and add them to a user library.</div>
<h3 class="crosshead" style="border: 0px; clear: both; font-family: Oswald, Arial, sans-serif; font-size: 28.6px; letter-spacing: 0.04em; line-height: 45.7599983215332px; margin: 0px 0px 1em; padding: 0px; position: relative; vertical-align: baseline;">
And don't forget... pen and paper</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPwiIOcUdpXohhZRGDFG7tnD7xtwaRD9QfrS-8e5jW7TzQtceTOchQf4Vzb7qVUfkwWks8W7b0Y4ZhnIoUogHogaFWAuGEnf-EoETGfXtA7W6Cs7MJluH52-NyPGgacsP6XU3p/s1600/penandpaper.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPwiIOcUdpXohhZRGDFG7tnD7xtwaRD9QfrS-8e5jW7TzQtceTOchQf4Vzb7qVUfkwWks8W7b0Y4ZhnIoUogHogaFWAuGEnf-EoETGfXtA7W6Cs7MJluH52-NyPGgacsP6XU3p/s1600/penandpaper.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<figure class="captioned-image" style="border: 0px; margin: 0px 0px 15px; max-width: 100%; padding: 0px; position: relative; vertical-align: baseline;"><figcaption style="border-bottom-color: rgb(227, 227, 227); border-bottom-style: solid; border-width: 0px 0px 1px; color: #111111; font-family: Oswald, Arial, sans-serif; font-size: 16px; font-style: inherit; font-variant: inherit; font-weight: inherit; letter-spacing: 0.04em; line-height: 22.399999618530273px; margin: 0px 0px 0px 7px; padding: 0.625em 0.75em; position: relative; vertical-align: baseline;">There's nothing quicker than grabbing a pen and paper</figcaption></figure><br />
<div style="border: 0px; line-height: 30.600000381469727px; margin-bottom: 20px; padding: 0px 25px 0px 0px; vertical-align: baseline;">
Yes. An actual pen. And some real made-from-wood paper. Okay, so these don’t allow you to make a prototype, and there’s no built-in elements. But, if you feel more comfortable using a more traditional approach, why not get your ideas down on paper first and refine them in software later?</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div style="font-size: 10px;">
(Source: <a href="http://www.creativebloq.com/wireframes/top-wireframing-tools-11121302" target="_blank">creativeblog</a>)
</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com1tag:blogger.com,1999:blog-8823054.post-65672357380485992102014-08-01T12:39:00.001-05:002014-08-01T12:39:12.670-05:00The Complete Guide to Building Your Personal Brand<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ9lcSIlyHlPS_ARDC01xZ_GB4cN38cN4J1ECrjxqXcdc1HsYwONWSi9Pp9vzCiQbozsG2l4trLg63mG9vkmReFWIcvf6XJ5nzSBvrLSjvzHq_iYV9NDu9vgDvCQwuzq2HZ8UJ/s1600/personal-brand.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ9lcSIlyHlPS_ARDC01xZ_GB4cN38cN4J1ECrjxqXcdc1HsYwONWSi9Pp9vzCiQbozsG2l4trLg63mG9vkmReFWIcvf6XJ5nzSBvrLSjvzHq_iYV9NDu9vgDvCQwuzq2HZ8UJ/s1600/personal-brand.png" height="193" width="320" /></a></div>
<br />
<br />
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
Do you know what separates me from other entrepreneurs? No, it’s not that I am smarter or work harder. <em style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">A lot of entrepreneurs have those characteristics</em>. It’s that I have a much bigger personal brand.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
You don’t want to build your personal brand to feed your ego. You want to build it so you can get more opportunities. The bigger your brand, the easier it will be to make deals for your company and gain opportunities that you couldn’t have before.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
So, with the help of Aaron Agius of <a href="http://louderonline.com.au/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Louder Online</a>, I’ve created a 30,000-word guide that <a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">breaks down the steps you need to take to build your personal brand</a>.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
Here’s what you will learn in <a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">The Complete Guide to Building Your Personal Brand</a>:<span id="more-25081" style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"></span></div>
<ul style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin: 0px 0px 1.6875rem 2rem; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-1/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 1: How to create your personal brand vision</a></strong> – just like how businesses create vision statements for their companies, you need to create one for your personal brand. This will help lay the ground work for the rest of the steps you need to take.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-2/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 2: How to define your target audience</a></strong> – building a personal brand is useless unless you target the right audience. We’ll teach you how to target the right group of people so you can eventually monetize your brand.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-3/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 3: How to build up your online and offline assets</a></strong> – there are a lot of online and offline tools that can help you grow your personal brand. We’ll teach you how to leverage them.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-4/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 4: How to build your brand through outreach</a></strong> – in this chapter you will learn how to gain exposure through earned media, advertising and a few other strategies.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-5/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 5: How to get free press coverage</a></strong> – press is going to be one of the most influential channels in building your brand. The beautiful part about press is that it doesn’t have to be hard to get or cost money.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-6/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 6: How to connect with mentors</a></strong> – you can always learn more by getting help from others. Mentors can guide you, show you what worked for them, and even open doors.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-7/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 7: How to monitor your brand</a></strong> – it’s important to keep a pulse on your brand as some people may see it in a positive light, while others may see it in a negative light. In this chapter, you’ll learn how to monitor your brand.</li>
<li style="border: 0px; list-style-type: square; margin: 0px; padding: 0px; vertical-align: baseline;"><strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand-chapter-8/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Chapter 8: Be yourself</a></strong> – being yourself and being unique are necessary components of your success. This chapter will show you how to identify what’s unique about you and how to leverage it.</li>
</ul>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
Click here to read <a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">The Complete Guide to Building Your Personal Brand</a>.</div>
<h3 style="background-color: white; border: 0px; color: #111111; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 1.1875rem; line-height: 1.375rem; margin: 2rem 0px 0.75rem; padding: 0px; vertical-align: baseline;">
Conclusion</h3>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
Personal branding is so important that everyone should spend time and effort building it. Whether you are an entrepreneur or an employee of a company, having a strong brand will open more doors for you and help you make more money.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
Just look at <a href="http://louderonline.com.au/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">Aaron</a>. He spends a large portion of his time connecting with influencers like me in order to associate his brand with successful brands. He will go above and beyond to help people out, and this strategy has been working well for him.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
<a href="http://louderonline.com.au/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">His agency</a> has been generating more leads because of it, and his revenue has been climbing at a fast pace.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
Not only should you <a href="http://www.quicksprout.com/the-complete-guide-to-building-your-personal-brand/" style="-webkit-transition: all 0.1s ease-in-out; border: 0px; color: #2361a1; margin: 0px; padding: 0px; transition: all 0.1s ease-in-out; vertical-align: baseline;">read this guide</a>, but you should also take a page out of Aaron’s playbook by connecting with influencers and piggybacking on their brands.</div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
<em style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">How else can you grow your personal brand?</em></div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
<em style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><br /></em></div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
<em style="border: 0px; font-size: 10px; margin: 0px; padding: 0px; vertical-align: baseline;">(Source: <a href="http://www.quicksprout.com/2014/07/16/the-complete-guide-to-building-your-personal-brand/?utm_source=email&utm_medium=email&utm_campaign=email" target="_blank">quicksprout</a>)</em></div>
<div style="background-color: white; border: 0px; color: #111111; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px; line-height: 22.0049991607666px; margin-bottom: 1.467rem; padding: 0px; vertical-align: baseline;">
<em style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><br /></em></div>
</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-83441663622741238692014-06-04T01:05:00.005-05:002014-06-04T01:05:58.173-05:00How To Open Mobile Version Of Any Website From Desktop<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<span style="background-color: white; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify;">When browsing the web, you must have come across some sites with a link to “switch to mobile site.” Viewing the mobile version of such sites is easy, but what if you want to view a mobile version of a site that does not offers any such link. Even though there is no such option, many sites automatically switch to mobile site when viewed from a mobile device like smartphones and tablets. Its possible to open mobile websites from your desktop browser using a desktop extension. Let’s take a look at this process in detail.</span><br />
<h2 style="background-color: white; box-sizing: border-box; font-family: Oswald, sans-serif; font-weight: normal; text-align: justify; word-wrap: break-word;">
Installing User Agent Switcher Extension</h2>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
If you want to view mobile websites on your desktop browser, then the most easiest way to do this is to use a browser extension.</div>
<ul style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<li style="box-sizing: border-box; word-wrap: break-word;">For Firefox: You can install the User Agent Switcher extension from <a href="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/" rel="nofollow" style="box-sizing: border-box; color: #1e73be; text-decoration: none; word-wrap: break-word;" target="_blank">Mozilla’s addon library</a>.</li>
<li style="box-sizing: border-box; word-wrap: break-word;">For Chrome: Install the User-Agent Switcher for Chrome extension from <a href="https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg/" rel="nofollow" style="box-sizing: border-box; color: #1e73be; text-decoration: none; word-wrap: break-word;" target="_blank">Chrome’s Web Store</a>.</li>
<li style="box-sizing: border-box; word-wrap: break-word;">For Internet Explore: Install the <a href="http://www.iegallery.com/Addons/Details/2040" rel="nofollow" style="box-sizing: border-box; color: #1e73be; text-decoration: none; word-wrap: break-word;" target="_blank">UAPick User-Agent Switcher</a> add-on.</li>
</ul>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; word-wrap: break-word;">
</div>
<h2 style="background-color: white; box-sizing: border-box; font-family: Oswald, sans-serif; font-weight: normal; text-align: justify; word-wrap: break-word;">
</h2>
<h2 style="background-color: white; box-sizing: border-box; font-family: Oswald, sans-serif; font-weight: normal; text-align: justify; word-wrap: break-word;">
<div style="box-sizing: border-box; word-wrap: break-word;">
Changing Mobile User Agent</div>
</h2>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; word-wrap: break-word;">
</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
To change your user agent on Firefox, press Alt to view the menu bar, go to Tools > Default User Agent and then select a mobile user agent as per your wish. For example; iPhone.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<img alt="user-agent" class="aligncenter size-full wp-image-131074" height="221" src="http://ify.valuewalk.com/wp-content/uploads/2013/03/user-agent.jpg" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 5px auto; max-width: 100%; width: auto; word-wrap: break-word;" width="600" /></div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
Alternatively, you can also add the User Agent Switcher icon to Firefox’s toolbar, by right-clicking on the toolbar, selecting Customize, and then drag and drop the User Agent icon to the Firefox’s toolbar.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
Now all you need to do is to visit the site or refresh the current site that you are on. You can access the mobile website for any site that you wish to, including our own<em style="box-sizing: border-box; word-wrap: break-word;">ValueWalk </em>site. Here’s how the mobile version of Wikipedia looks like on desktop.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<img alt="wiki-mobile" class="aligncenter size-full wp-image-131073" height="501" src="http://ify.valuewalk.com/wp-content/uploads/2013/03/wiki-mobile.jpg" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 5px auto; max-width: 100%; width: auto; word-wrap: break-word;" width="600" /></div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
Once you are done, simply switch back to the “Default User Agent” by again navigating to the same location, or from its icon on the toolbar.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
If you want to add more user agents, then you can do so from its options. For example; there’s no option to switch to iPad’s user agent and for that you’ll need to manually add this user agent.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
You can download additional user agents by going to Tools > Default User Agent > Edit User Agent. From here, click on “Download lists of user agents to import.” From the web page, you will be able to download more user agents. You can also add a user agent string directly by clicking on “New” button.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<img alt="user-agent-options" class="aligncenter size-full wp-image-131075" height="519" src="http://ify.valuewalk.com/wp-content/uploads/2013/03/user-agent-options.jpg" style="border: 0px; box-sizing: border-box; display: block; height: auto; margin: 5px auto; max-width: 100%; width: auto; word-wrap: break-word;" width="550" /></div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
So that’s how you can easily switch browser user agent to view the mobile site. This is very useful for testing purposes or to the view light-weight version of any site.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<strong style="box-sizing: border-box; word-wrap: break-word;">Tip</strong>: One more advantage of this method is that you can avoid Flash and instead view the HTML5 website, for example on YouTube, etc sites.</div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; font-size: 16px; line-height: 27px; text-align: justify; word-wrap: break-word;">
<br /></div>
<div style="background-color: white; box-sizing: border-box; font-family: Georgia, serif; line-height: 27px; text-align: justify; word-wrap: break-word;">
<span style="font-size: xx-small;">(<i><a href="http://www.valuewalk.com/2013/03/how-to-open-mobile-version-of-any-website-from-desktop/" target="_blank">Source</a></i>)</span></div>
</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-66166060761150626812014-06-04T01:03:00.002-05:002014-06-04T01:03:28.949-05:00Evernote Tips: The 11 Amazing Features That Make Using Evernote So Freaking Awesome<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/Ce2_gWZHBIs/0.jpg"><param name="movie" value="https://youtube.googleapis.com/v/Ce2_gWZHBIs&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://youtube.googleapis.com/v/Ce2_gWZHBIs&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
<br />
<br />
https://www.youtube.com/watch?v=Ce2_gWZHBIs</div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-26701434320300564392014-06-04T00:57:00.003-05:002014-06-04T00:57:44.819-05:003 Gmail Add-Ons You Need to Use!<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
https://www.youtube.com/watch?v=l_vUJ0CCIAk<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/l_vUJ0CCIAk/0.jpg"><param name="movie" value="https://youtube.googleapis.com/v/l_vUJ0CCIAk&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://youtube.googleapis.com/v/l_vUJ0CCIAk&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br /></div>
<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-86267672723449295892009-08-23T20:38:00.005-05:002009-08-23T20:43:55.451-05:00Why I am excited about Azure Platform's .Net Service Bus?<div>Basically, the following statement:<br />
<br />
<em><span style="color: #990000;"><strong><span style="color: #000099;">"...Full-duplex, connection-oriented peer-to-peer sessions with network-boundary traversal create direct end-to-end connectivity through NAT"</span></strong><br />
</span></em><br />
That's awesome... because any developer that has ever tried to create a real-time, Peer-to-Peer application, he/she knows what hell it is to penetrate firewalls specially Symmetric NATs. <a href="http://en.wikipedia.org/wiki/Network_address_translation">Click here to learn about NATs</a><br />
<br />
<a href="http://www.microsoft.com/azure/images/service_bus1.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="283" src="http://www.microsoft.com/azure/images/service_bus1.jpg" width="420" /></a>The Service Bus enables <u>secure</u>, <u>loosely-coupled connectivity between services and applications</u> to <u>navigate firewalls or network boundaries</u>, using a variety of communication patterns. The Access Control service provides an enterprise-class mechanism for federated authorization across organizations and protocols.<br />
<br />
In the same way that Microsoft® .NET Framework provides higher-level libraries to make developers more productive, .NET Services help developers focus on their application logic rather than deploying and managing their own cloud-based infrastructure."<br />
<br />
Azure's .Net Service Bus enables developers to build applications for the cloud and offers a scalable hosted infrastructure for deploying and managing these applications and their data stores combined with a workflow engine and a security infrastructure. The Azure Service platform is the new OS for internet scaled applications.<br />
<a href="http://www.microsoft.com/azure/images/service_bus2.jpg" imageanchor="1" style="clear: right; display: inline !important; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="285" src="http://www.microsoft.com/azure/images/service_bus2.jpg" width="420" /></a><br />
<strong>Lower Barriers to Building Composite Applications </strong></div><strong><br />
</strong><br />
<div>Using the Service Bus, an application or service can expose and access endpoints that would otherwise be hard or impossible to reach. For example, the endpoints may be located behind network address translation (NAT) boundaries or bound to frequently changing, dynamically assigned IP addresses.</div><ul><li><strong>Exposes Service Endpoints Easily</strong><br />
<br />
-- Users can access a global hierarchical namespace that is DNS- and transport- independent<br />
<br />
-- Services can be located through a stable, Internet-accessible URL, irrespective of location.<br />
<br />
</li>
<li><strong>Offers Multiple Connection Options<br />
</strong><br />
-- One-way messaging between sender and listener supports unicast and multicast datagram distribution<br />
<br />
-- Full-duplex connection-oriented sessions between sender and listener support bi-directional communication<br />
<br />
-- Full-duplex, connection-oriented peer-to-peer sessions with network-boundary traversal create direct end-to-end connectivity through NAT<br />
<br />
</li>
<li><strong>Supports Publish and Subscribe for Multicasting<br />
</strong><br />
The simple publish/subscribe model lets multiple publishers and multiple subscribers simultaneously use the service’s topic management and event distribution system.</li>
</ul><div></div><div></div><br />
<br />
Learn more:<br />
<a href="http://www.microsoft.com/azure/default.mspx">http://www.microsoft.com/azure/default.mspx</a><br />
<a href="http://www.microsoft.com/azure/servicebus.mspx">http://www.microsoft.com/azure/servicebus.mspx</a><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com1tag:blogger.com,1999:blog-8823054.post-26719325325569625382009-08-23T20:33:00.000-05:002009-08-23T20:33:25.330-05:00WCF Hosting<div><a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx">Windows Communication Foundation</a> (WCF) Services can be hosted with Internet Information Services (IIS); with the new Windows Activation Service (WAS) installed with IIS 7.0; or with any managed application process including console, Windows Forms, Windows Presentation Foundation (WPF), or managed Windows service applications. </div><div><br />
</div><div>Selecting the right hosting environment for your services is a choice driven largely by deployment requirements related to transport protocol and operating platform.</div><div><br />
</div><div><span class="Apple-style-span" style="font-family: Verdana;"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><b>A summary of hosting options and supported features:<br />
<br />
</b></span> <table cellspacing="0"><tbody>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>Feature</b></i></span></td> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>Self-Hosting</b></i></span></td> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>IIS Hosting</b></i></span></td> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>WAS Hosting</b></i></span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Executable Process/ App Domain</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Configuration</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">App.config</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Web.config</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Web.config</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Activation</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Manual at startup</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Message-based</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Message-based </span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Idle-Time Management</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">No</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Health Monitoring</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">No</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Process Recycling</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">No</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Management Tools</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">No</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Yes<br />
<br />
</span></td></tr>
</tbody></table></span></div><div><br />
</div><div><span class="Apple-style-span" style="font-family: Verdana;"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><b><br />
A summary of hosting options based on operating platform and communication protocol:<br />
<br />
</b></span> <table cellspacing="0"><tbody>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>Operating Platform</b></i></span></td> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>Protocol</b></i></span></td> <td style="border-bottom: blue 2px solid;" valign="top"><span style="color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 85%;"><i><b>Hosting Options</b></i></span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Windows XP/SP2</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">HTTP</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">IIS 5.1 or self-host</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx=""></span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Named Pipes, TCP, MSMQ</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Self-host</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Windows Vista</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">HTTP, Named Pipes, TCP, MSMQ</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">WAS or self-host</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Windows Server 2003</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">HTTP</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">IIS 6.0</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx=""></span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Named Pipes, TCP, MSMQ</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Self-host</span></td></tr>
<tr style="color: #d7d7ff;"> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">Windows Longhorn Server</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">HTTP, Named Pipes, TCP, MSMQ</span></td> <td style="border-bottom: blue 1px solid;" valign="top"><span style="color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif;" xxx="">IIS 7.0/WAS or self-host<br />
<br />
</span></td></tr>
</tbody></table></span></div><div><br />
</div><div><br />
</div><div><a href="http://www.code-magazine.com/article.aspx?quickid=0701041&page=1">Read this great article by Michele Leroux Bustamante.</a></div><div><br />
</div><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-55434984810186453092009-08-23T20:31:00.000-05:002009-08-23T20:31:17.563-05:00Memories of our band: Tatva - The ElementI was going through some Audio CDs while cleaning my office and stumbled upon a CD from our Band - <a href="http://www.tatvatheelement.com/">Tatva - The Element</a>.<br />
<br />
Tatva's music can be described as: "rustic Indian folk transposed into western, popular rock rythms..."<br />
<br />
Check out our music and please let us know what you think about it.<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-66273073801798798552009-08-23T20:14:00.000-05:002009-08-23T20:14:24.505-05:00Facebook and Flex: Rock On!!!I've been incredibly motivated and enthusiastic about <a href="http://www.adobe.com/products/flex/">Flex</a> since I first started working with it back in early 2007. I have created Flex based interfaces for desktop apps (C++ container) and medium and large web-based apps. I have always loved Flex for the ease of use and the power it gives to developers.<br />
<br />
Flex is, hands down, the best RIA technology available today. Flex is fast becoming the primary technology for building Rich Internet Applications.<br />
<br />
<a href="http://www.facebook.com/">Facebook</a>, on the other hand, is the best, most powerful and the fastest growing social networking platform. The real power of facebook is not because of "social" (there's LinkedIn and other websites for that!)... the power is in the "platform". If you don't agree with me, just look at what Apple did with its Application platform! It's making much more money after it opened its platform to developers. Facebook would be nothing but a better and clearner looking LinkedIn, if it wasn't for the applicaiton platform.<br />
<br />
Most of my friends use Facebook for the applications. They probably spend 10-20% of their time managing their profile and friends (social graph) and the rest on apps like iLike, Zombies, Mafia War etc etc. Good or bad, these apps have an audience - A global, over 200 million large audience. So, if you have an apps, that costs, say $1, and appeals to only 1% of the audience - you have the potential to make $2 million!!!! THAT'S THE REAL POWER!!!!!<br />
<br />
Facebook's Ad Platform is not as good as Google's AdSense, but that is another area that can generate a lot of money for not just Facebook, but the application developers. Under Facebook's COO, Sheryl Sandberg's guidance that will likely change. Check out <a href="http://www.forbes.com/forbes/2009/0907/power-women-09-facebook-sheryl-sandberg.html?feed=rss_news">this Forbes article</a>.<br />
<br />
So, if you combine the best RIA technology (FLEX) with the best Social, Application platform (FACEBOOK), you can make a killing!!! You can deliver rich, social experiences on the web.<br />
<br />
This is what Adobe Developer Connection website has to say:<br />
<br />
<span style="color: #073763;">The Adobe Flash Platform and Facebook Platform provide the ideal solution for building rich, social experiences on the web. Flash is available on more than 98% of Internet-connected PCs, so people can immediately access the applications, content, and video that enable social interactions. The Facebook Platform is used by millions of people everyday to connect and share with the people in their lives. Together, both platforms allow you to:</span><br />
<span style="color: #073763;"><br />
</span><br />
<br />
<ul><li><span style="color: #073763;">Share: Create rich interactions for users to share with friends.</span></li>
<li><span style="color: #073763;">Have fun: Make games social; let users compete against their friends.</span></li>
<li><span style="color: #073763;">Connect: Let users connect to your RIAs with Facebook Connect.</span></li>
<li><span style="color: #073763;">Solve problems: Build RIAs that harness the power of community.</span></li>
<li><span style="color: #073763;">Reach people: Reach millions of Facebook users through social distribution.</span></li>
</ul><br />
<span style="color: #073763;">The new ActionScript 3.0 Client Library for Facebook Platform API, fully supported by Facebook and Adobe, makes it easy to build applications that combine the strengths of the Flash Platform and Facebook Platform.</span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-80133288864429017982009-08-23T20:02:00.000-05:002009-08-23T20:02:40.660-05:00I am back...I am back to my personal blog after a long break. While I was away, I got married, switched jobs and started some new projects. I'm excited to be back to my personal blog.<div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com1tag:blogger.com,1999:blog-8823054.post-17551118997208075462009-03-02T07:23:00.000-06:002009-03-02T07:24:51.504-06:00Know your Customer :)<span class="Apple-style-span" style="border-collapse: collapse; font-family: arial; font-size: 13px; "><p align="center" style="text-align: center; "><b><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-weight: bold; font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "><span class="Apple-style-span" style="font-weight: normal;">A disappointed salesman of Coca Cola returns from his Middle East assignment. A friend asked, "Why weren't you successful with the Arabs?" <br /><br />The salesman explained, "When I got posted in the Middle East, I was very confident that I would make a good sales pitch as Cola is virtually unknown there. But, I had a problem I didn't know to speak Arabic. So, I planned to convey the message through three posters... </span><br /><br /></span></span></b><span style="font-family:Trebuchet MS;color:#0d0d0d;"><span style="color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "><img height="186" src="http://mail.google.com/mail/?ui=2&ik=5ae095db95&view=att&th=11f930fdf60dae50&attid=0.1&disp=emb&realattid=0.3&zw" width="244" /><img height="186" src="http://mail.google.com/mail/?ui=2&ik=5ae095db95&view=att&th=11f930fdf60dae50&attid=0.2&disp=emb&realattid=0.1&zw" width="201" /><img height="186" src="http://mail.google.com/mail/?ui=2&ik=5ae095db95&view=att&th=11f930fdf60dae50&attid=0.3&disp=emb&realattid=0.2&zw" width="182" /></span></span></p><p align="center" style="text-align: center; "><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "><br /><u><span style=""><br />First poster </span></u>- A man lying in the hot desert sand...totally exhausted and fainting.</span></span></p><p align="center" style="text-align: center; "><u><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">Second poster</span></span></u><span style="font-family:Trebuchet MS;color:#0d0d0d;"><span style="color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "> - man is drinking our Cola.</span></span><span style="font-family:Trebuchet MS;color:#0d0d0d;"><span style="color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "></span></span></p><p align="center" style="text-align: center; "><u><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">Third poster</span></span></u><span style="font-family:Trebuchet MS;color:#0d0d0d;"><span style="color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">- Our man is now totally refreshed.</span></span><span style="font-family:Trebuchet MS;color:#0d0d0d;"><span style="color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "></span></span></p><p align="center" style="text-align: center; "><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">Then these posters were pasted all over the place</span></span><span style="font-family:Trebuchet MS;color:#0d0d0d;"><span style="color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "></span></span></p><p align="center" style="text-align: center; "><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">"That should have worked," said the friend.</span></span></p><p align="center" style="text-align: center; "><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">|</span></span></p><p align="center" style="text-align: center; "><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">|</span></span></p><p align="center" style="text-align: center; "><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; ">|</span></span></p><p align="center" style="text-align: center; "><b><span style="font-family:Trebuchet MS;font-size:100%;color:#0d0d0d;"><span style="font-weight: bold; font-size: 12pt; color: rgb(13, 13, 13); font-family: 'Trebuchet MS'; "><br /><br /></span></span></b><b><i><span style="font-family:Trebuchet MS;color:#c00000;"><span style="font-weight: bold; color: rgb(192, 0, 0); font-style: italic; font-family: 'Trebuchet MS'; "><span class="Apple-style-span" style="font-size: large;">The salesman replied "I also didn't realize that Arabs read from right to left"</span></span></span></i></b></p><p align="center" style="text-align: center; "><span class="Apple-style-span" style="color: rgb(192, 0, 0); font-family: 'Trebuchet MS'; font-size: 21px; font-style: italic; font-weight: bold;"><br /></span></p></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-57341672970413172662009-03-02T06:35:00.000-06:002009-03-02T06:36:26.842-06:00Develop Web services clients with Macromedia FlexFlex the power of Web services by learning how to easily leverage them within a Rich Internet Application (RIA) using Macromedia Flex for a more complex, engaging, and interactive client-side experience. RIAs are an evolution of the traditional Web page based model for Web applications. A big part of the attraction in using Flex for RIA development is the speed and ease with which you can leverage Web services in your applications. The authors walk you through several examples and simplify how sometimes confusing WSDL constructs map to Flex declarations.<div><br /></div><div><a href="http://www.ibm.com/developerworks/webservices/library/ws-macroflex/">Read article...</a></div><div><br /></div><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-91453270037453990462009-03-02T05:43:00.000-06:002009-03-02T05:45:23.603-06:00Selecting the Right Flex Application Framework<span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: 'Trebuchet MS'; font-size: 12px; line-height: 19px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; ">So you’ve <a title="Consider Flex to Pump Up Internet Application Development (TEQ Magazine)" href="http://www.pghtech.org/news-and-publications/teq/article.aspx?Article=1902" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.pghtech.org/news-and-publications/teq/article.aspx?Article=1902');" style="color: rgb(28, 142, 255); text-decoration: none; ">decided to use Flex for your web application development</a>. It’s easy to follow the online tutorials and prototype an application, but deciding on an application framework for your major production Flex application is more difficult. The Flex community is divided between Adobe’s <a title="Cairngorm" href="http://opensource.adobe.com/wiki/display/cairngorm/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://opensource.adobe.com/wiki/display/cairngorm/');" style="color: rgb(28, 142, 255); text-decoration: none; ">Cairngorm</a> and Cliff Hall’s <a title="PureMVC" href="http://puremvc.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://puremvc.org/');" style="color: rgb(28, 142, 255); text-decoration: none; ">PureMVC</a>, with strong arguments from both sides. However, your answer may just lie in the “it depends” space.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; ">This post aims to help you make that decision. It includes analysis of <a title="Cairngorm" href="http://opensource.adobe.com/wiki/display/cairngorm/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://opensource.adobe.com/wiki/display/cairngorm/');" style="color: rgb(28, 142, 255); text-decoration: none; ">Cairngorm</a>, <a title="PureMVC" href="http://puremvc.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://puremvc.org/');" style="color: rgb(28, 142, 255); text-decoration: none; ">PureMVC</a>, and the new kid on the block, asfusion’s <a title="Mate" href="http://mate.asfusion.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://mate.asfusion.com/');" style="color: rgb(28, 142, 255); text-decoration: none; ">Mate</a>.</p><h3 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 16px; margin-top: 16px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; ">Cairngorm</h3><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><a title="Cairngorm" href="http://opensource.adobe.com/wiki/display/cairngorm/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://opensource.adobe.com/wiki/display/cairngorm/');" style="color: rgb(28, 142, 255); text-decoration: none; ">Cairngorm</a> (pronounced \kern-gorm\) is a lightweight micro-architecture for Rich Internet Applications for Flex or AIR applications. It is not only a framework, but also an approach to organizing and packaging code, components, and a method to achieve separation of concerns (i.e. model-view-controller).</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; ">Compared to other frameworks, Cairngorm requires the most components, but it is the most straightforward.</p><p style="text-align: center; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><img class="aligncenter" src="http://lh3.ggpht.com/_-U2fyKnwHnc/SXoGoQ2HtzI/AAAAAAAAAcQ/8L8TeYgRQbM/s800/cairngorm.jpg" alt="Cairngorm Framework" width="552" height="636" /><br /><span style="text-align: center; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><strong>Figure 1</strong> Cairngorm Framework</span></p><p style="text-align: center; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><span style="text-align: center; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><br /></span></p><table border="1"><tbody><tr><th><em><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); ">Pros</span></em></th><th><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><em>Cons</em></span></th></tr><tr><td style="vertical-align: top; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Advocated by Adobe Consulting and is part of the Adobe Engagement Platform.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Broadest adoption for a Flex MVC framework, making it the de facto standard for Flex developers</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Well-documented with great tutorials.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Designed expressly for Flex and thus, takes advantage of Flex features.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Simple, straightforward MVC framework</li></ul></td><td style="vertical-align: top; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Tightly couples the MVC layers.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Components can either be too large or too many, resulting in the application becoming too unwieldy from the development and maintenance perspective.</li></ul></td></tr></tbody></table><h4 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 14px; margin-top: 14px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; "><em><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); ">Tips and Tricks</span></em></h4><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Use packaging, sub-classing, or helper classes to prevent unwieldy model locators and controllers.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Use <a href="http://weblogs.macromedia.com/auhlmann/archives/2006/09/using_binding_s.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://weblogs.macromedia.com/auhlmann/archives/2006/09/using_binding_s.html');" style="color: rgb(28, 142, 255); text-decoration: none; ">Adobe Consulting’s Observe Utility</a> to prevent tight coupling between the view and the model locator.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Minimize direct references to the model locator from the view, by passing data references between parent and child components.</li></ul><h4 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 14px; margin-top: 14px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; "><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><em><strong>Recommended When:</strong></em></span></h4><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">The team and/or the organization are new to application development, ActionScript and/or Flex. It is good for new Flex developers to learn Cairngorm before other frameworks first. Management will also be more comfortable with an Adobe-backed framework.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">You need a quick prototype.</li></ul><h3 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 16px; margin-top: 16px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; ">PureMVC</h3><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; ">PureMVC is also a lightweight framework for creating applications based on the classic MVC concept. PureMVC is not specific to Adobe Flex and is being ported to other languages. Many Flex developers consider the framework to be the best Flex framework out there, but accept that it does not take advantage of Flex features.</p><p style="text-align: center; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><img src="http://lh3.ggpht.com/_-U2fyKnwHnc/SWz6DsRcCTI/AAAAAAAAAbU/Inl_0xGBTA0/s800/summa_blog_flex_puremvc.jpg" alt="PureMVC Framework" /><br /><span style="text-align: center; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><strong>Figure 2</strong> PureMVC Framework</span></p><p style="text-align: center; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><span style="text-align: center; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><br /></span></p><table border="1"><tbody><tr><th>Pros</th><th>Cons</th></tr><tr><td style="vertical-align: top; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Provides flexibility to easily support complex workflows, e.g. command chaining.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Promotes code reuse.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Cleaner architecture and implementation, i.e. layers are more loosely coupled.</li></ul></td><td style="vertical-align: top; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Well-documented, but not many tutorials.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Not designed expressly for Flex, and thus, has been criticized for not taking advantage of basic Flex features, such as data binding.</li></ul></td></tr></tbody></table><h4 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 14px; margin-top: 14px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; "><em><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); ">Tips and Tricks</span></em></h4><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Since the framework is language-agnostic, it cannot rely on data binding innately. But this doesn’t mean binding can’t be implemented in PureMVC Flex applications. Use the mediator to bind the data from the proxy to the view component.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Use a proxy for a service locator.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Reuse mediators for multiple view components.</li></ul><h4 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 14px; margin-top: 14px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; "><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><em><strong>Recommended When:</strong></em></span></h4><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">The application has complex logic and/or repeated logic.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">If you need an MVC framework that cuts across the different languages of your application, e.g. Java and Flex. However, some of the PureMVC language ports are still in alpha.</li></ul><h3 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 16px; margin-top: 16px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; ">Mate</h3><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><a title="Mate" href="http://mate.asfusion.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://mate.asfusion.com/');" style="color: rgb(28, 142, 255); text-decoration: none; ">Mate</a> (pronounced \mah-teh\) is the newest Flex application framework. It is also designed expressly for Flex. Its main differentiator from Cairngorm is that it uses dependency injection to hook the event handlers to controller entities and view properties to the data model (via injectors). Thus, it requires the least number of components of all of the frameworks.</p><p style="text-align: center; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><img src="http://lh3.ggpht.com/_-U2fyKnwHnc/SWz5-7DzOFI/AAAAAAAAAbM/KaLDVPEiBTA/s800/summa_blog_flex_mate.jpg" alt="Mate Framework" /><br /><span style="text-align: center; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><strong>Figure 3</strong> Mate Framework</span></p><p style="text-align: center; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><span style="text-align: center; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><br /></span></p><table border="1"><tbody><tr><th>Pros</th><th>Cons</th></tr><tr><td style="vertical-align: top; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Provides flexibility to easily support complex workflows, e.g. method invoker chaining.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">View can be simple and uncluttered, i.e. injectors can enable the view to not even reference Mate components, except for within the application MXML.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Promotes code reuse, e.g. invoked or referenced custom entities do not need to extend any base classes or interfaces.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Well-documented, including tutorials, examples and best practices.</li></ul></td><td style="vertical-align: top; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Nullifies the power of AS3 compile-time type checking with the EventMap MXML.</li></ul></td></tr></tbody></table><h4 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 14px; margin-top: 14px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; "><em><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); ">Tips and Tricks</span></em></h4><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Flex events thrown must have its bubbling setting set to true.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Use multiple event maps to break down event type concerns.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Take special care in structuring and designing the controller entities.</li></ul><h4 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 14px; margin-top: 14px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; "><span style="text-decoration: underline; font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); "><em><strong>Recommended When:</strong></em></span></h4><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">You need a really quick prototype.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">The application has complex logic and/or repeated logic.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">Your team has designers or component developers, not responsible for integrating the UI with the business services.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; ">You have an existing Flex application that needs a framework refresh. You can quickly reuse the AS classes that have already been created and string them up using the event maps.</li></ul><h3 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(244, 123, 42); font-size: 16px; margin-top: 16px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; ">Others</h3><ul style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); display: block; float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; "><a href="http://code.google.com/p/flex-slide/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://code.google.com/p/flex-slide/');" style="color: rgb(28, 142, 255); text-decoration: none; "><strong>Slide</strong></a> is Peter Joel’s work in progress. It has been released, but there is still a lot of work being done on it, and thus, little documentation is available. Its concept of view states by URIs and acknowledgement of data and navigation to drive view states is interesting though.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; "><strong><a href="http://osflash.org/projects/arp" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://osflash.org/projects/arp');" style="color: rgb(28, 142, 255); text-decoration: none; ">ARP (Ariaware RIA Platform)</a></strong> is Aral Balkan’s effort, borne from Flash 5. Its latest version finally supports Flex. It’s very similar to the Cairngorm framework with the inclusion of base classes for commands, controllers and forms. It also makes a distinction between system and view events. However, it doesn’t present a strong compelling differentiation from the Cairngorm framework, but seems to be a viable solution as well.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; "><a href="http://www.servebox.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.servebox.org/');" style="color: rgb(28, 142, 255); text-decoration: none; "><strong>Foundry</strong></a> is another application framework, built for ActionScript and based on the MVC pattern, by Servebox. It is also very similar to Cairngorm, but heavily advocates the use of view helpers. Like ARP, the framework doesn’t provide a strong differentiation from Cairngorm, but seems to also be a simple, viable framework to use.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; "><a href="http://www.guasax.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.guasax.com/');" style="color: rgb(28, 142, 255); text-decoration: none; "><strong>Guasax</strong></a> is a Flex application framework, but is not based on the MVC pattern. Like Struts, it uses configuration files to set up actions invoking business objects and setting up interceptors for those actions. At first blush, the framework seemed too complex, and examples online are not commented in English.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; "><a href="http://code.google.com/p/flest/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://code.google.com/p/flest/');" style="color: rgb(28, 142, 255); text-decoration: none; "><strong>Flest</strong></a> is a Flex application framework that uses model, view, and controller components, but does not claim to be an MVC framework. The suggested use of the provided components is to tightly couple them within the application (e.g. commands are closures to the controller). Thus, it didn’t appear to be an ideal framework in easing maintenance of the application.</li><li style="font-family: 'Trebuchet MS', Trebuchet, Helvetica, Verdana, Arial, sans-serif; color: rgb(102, 102, 102); float: none; list-style-type: disc; overflow-x: visible; overflow-y: visible; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; "><a href="http://joeberkovitz.com/blog/reviewtube/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://joeberkovitz.com/blog/reviewtube/');" style="color: rgb(28, 142, 255); text-decoration: none; "><strong>MVCS</strong></a> is an architectural blueprint for Flex applications, based on the MVC pattern. Joe Berkovitz’s <a href="http://www.adobe.com/devnet/flex/articles/blueprint.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.adobe.com/devnet/flex/articles/blueprint.html');" style="color: rgb(28, 142, 255); text-decoration: none; ">article </a>on Adobe Developer Connection is definitely worth the read. The concepts in the article are helpful when designing your application. But MVCS is not packaged as a reusable framework.</li></ul></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-28539484558955378072009-03-01T00:18:00.001-06:002009-03-01T00:18:35.390-06:00Top 10 Adobe Flex Misconceptions<span class="Apple-style-span" style="font-family: Lucida; font-size: 13px; line-height: 16px; ">At QCon, Adobe's <a href="http://www.jamesward.org/wordpress/" style="text-decoration: underline; color: rgb(11, 89, 178); ">James Ward</a> shared with InfoQ.com the top Adobe Flex misconceptions that he encounters in his travels evangelizing the Flex application framework.<ol><li><strong>Users Need to Install Something New to Run Flex Applications.</strong> <br /><br />Ward, exclusive to InfoQ.com, discusses the Flash adoption rates and Flex programming model:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Flash Player 9 is required for Flex 2 & Flex 3. The Flash Player 9 runtime is currently installed on 94% of the world's computers:<a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">http://www.adobe.com/products/player_census/flashplayer/version_penetration.html</a> <br /><br />Flex 2 and Flex 3 applications execute in the Flash Player 9. Flex applications are built on top of the native Flash Player APIs like vector graphics, bitmap manipulation, and networking (which are based on the browser networking stack). The Flex framework adds reusable components like date pickers, data grids, charts, etc. Compiling a Flex application results in a SWF file which is the binary byte code format for the Flash Player. Contained in the SWF file is the byte code for the Flex framework code and a project's custom code. The Flex compiler optimizes the byte code so that only classes which are used go into the SWF file. <br /><br />For desktop applications, Adobe is aiming to make their new desktop runtime, dubbed Adobe AIR, as ubiquitous as the web runtime. The 1.0 release of Adobe AIR will be available in the beginning of 2008. Currently, AIR is in beta release from labs.adobe.com. Many companies are already building production applications on AIR. One example, can be seen with eBay's application <a href="http://desktop.ebay.com/" style="text-decoration: underline; color: rgb(11, 89, 178); ">eBay Desktop.</a></blockquote></li><li><strong>Flash Player is 100% Proprietary.</strong> <br /><br />Ward continued on this item for InfoQ.com:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">The core of Flash Player is the Tamarin Virtual Machine, which is an open source project under Mozilla. While the SWF file format is not fully open, it is documented by the community on osflash.org. There are numerous open source products that read and write SWF files. The Flash Player's product direction has traditionally been heavily influenced by the community and their needs. The core language for Flash Player is an implementation of ECMAScript 262, which is the specification for JavaScript. Flex also uses CSS for styling of components / applications. Adobe AIR uses web standards as the basis for desktop applications as well as Open Source technologies like Tamarin, Webkit, and SQLite.<br /></blockquote></li><li><strong>Flash is for Designers, Video, and Annoyances.</strong> <br /><br />In Ward’s July, 2007 blog, <a href="http://www.jamesward.org/wordpress/2007/02/21/how-i-overcame-my-fear-of-flash/" style="text-decoration: underline; color: rgb(11, 89, 178); ">“How I Overcame My Fear of Flash,”</a> he discussed this point:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Indisputably, the power of Flash has been abused. Pop-ups, pop-overs, skip intros and annoying ads run rampant across our screens. I've heard it said that one should never judge a religion by its abuse. The same adage applies to technology. Flash shouldn't be avoided just because people use it for annoying things. After all, e-mail isn't avoided just because spammers happen to abuse it.</blockquote>Ward elaborated on the topic for InfoQ.com:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Traditionally Flash content was built with the timeline based tool for designers. Flex is the developer toolset for building Flash based content / applications. Designers and developers can work together by sharing assets between the two tools. Flex adds a comprehensive component base: <br /><br /><a href="http://www.adobe.com/go/flex_explorer_app" style="text-decoration: underline; color: rgb(11, 89, 178); ">http://www.adobe.com/go/flex_explorer_app</a> <br /><a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15&loc=en_us" style="text-decoration: underline; color: rgb(11, 89, 178); ">http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15&loc=en_us</a></blockquote></li><li><strong>Flex is Not for Enterprise / Business Applications.</strong> <br /><br />Over the last few weeks, Ward published a <a href="http://www.jamesward.org/wordpress/category/oracle/" style="text-decoration: underline; color: rgb(11, 89, 178); ">seven part blog series on a number of new Oracle applications implemented in Adobe Flex.</a> The applications, which were announced at the recent Oracle OpenWorld, ranged from sales tools, to database management, and business intelligence.<br /><br />In addition to Oracle’s usage of Flex, <a href="http://www.infoq.com/news/2007/10/who-is-using-flex" style="text-decoration: underline; color: rgb(11, 89, 178); ">InfoQ.com published a piece recapping a number of groups using Flex for enterprise applications.</a> Ward also points out to InfoQ.com, that there are numerous examples of enterprise applications being developed with Adobe Flex, including work at: Workday, SAP, Salesforce, and Business Objects. <br /><br /></li><li><strong>Flex is Expensive.</strong> <br /><br />Ward detailed a number of things Adobe has done to address the cost concerns:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Flex is a free, and soon to be open sourced, developer toolkit for building Rich Internet Applications for the web and the desktop. This free SDK includes everything a developer needs to build RIAs that work the same on any browser or operating system. Part of the free Flex SDK is an extensive set of components which are extensible, skinable, and accessible. You can see many of these components in the Flex Component Explorer: http://www.adobe.com/devnet/flex/samples/code_explorer/ <br /><br />Flex Builder is an optional plugin for Eclipse which makes developing applications with the free Flex SDK more efficient. It includes features like integrated debugging, design view, and code completion. <br /><br />The Flex Builder pricing has changed in quite a few ways recently. Flex Builder is now free for Students and Faculty. The price for the vanilla Flex Builder, without the charting components, has been reduced to $249 to better balance the tiered pricing for Flex Builder.<br /><br />There are a number of options for building backend infrastructure for Flex Applications. To take advantage of the high performance AMF data transfer protocol, there are official Adobe products like LiveCycle Data Services, as well as numerous open source projects like Granite Data Services. Using AMF removes the unnecessary steps of converting data to text (SOAP, RESTful, etc), transferring it, and then converting it back to data. AMF also allows type information to be preserved across the wire.</blockquote>To see a comparison of AMF to other text based serialization technologies, see James Ward's Census RIA Benchmark application: <a href="http://www.jamesward.org/census" style="text-decoration: underline; color: rgb(11, 89, 178); ">http://www.jamesward.org/census.</a></li><br /><li><strong>Flex Applications Require a Special Server.</strong> <br /><br />Once again, Ward speaking with InfoQ.com:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Flex applications can run on top of any web server, application server, and database server. Flex applications are much more like client-server applications. Since the logic is running on the client inside the Flash Player, you need some way of communicating with the server. There are many different options for how you connect Flex to your infrastructure. Without any special libraries, you can expose your back-end data and services as RESTful, XML, or SOAP and easily consume that data in your Flex application. If you choose to use the AMF binary serialization protocol, you may need to add some additional libraries into your web application. AMF is just another serialization technology, like XML or JSON, so it can be one of the various methods you use to communicate to your back-end SOA.</blockquote></li><li><strong>Flex is Hard to Learn.</strong> <br /><br />Leftie Friele, from the InfoQ.com community, posted a comment on the <a href="http://www.infoq.com/news/2007/10/who-is-using-flex" style="text-decoration: underline; color: rgb(11, 89, 178); ">InfoQ.com piece “Who is Using Flex?”,</a> detailing his company’s experience in learning Flex:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Our startup company, Ezmo, have used Flex since the start and we're extremely happy with the framework. <br /><br />Without any prior knowledge of Flex/Flash, we built our application in less than two weeks. The integration between Java and Flex is super simple, and getting started with Flex is just a walk in the park. <br /><br />The tool support is very good too with Flex Builder. You get the familiar surroundings of Eclipse and you are off and running without many problems. The one thing that is missing is better tools for continuous integration and better plugins into Maven for building Flex applications.</blockquote>For those new to Flex, <a href="http://www.jamesward.org/wordpress/2006/11/14/screencast-watch-a-flex-app-built-in-11-minutes/" style="text-decoration: underline; color: rgb(11, 89, 178); ">Ward has a Screencast showing a Flex application being built</a> to help get you started. There are also numerous other articles about using Flex and Java in the <a href="http://www.adobe.com/devnet/flex/flex_java.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">Adobe Developer Connection.</a> <br /><br /></li><li><strong>With Flex, I Will Need to Rebuild My Entire Application.</strong> <br /><br />In January, Bruce Eckel published an article titled, <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=193593" style="text-decoration: underline; color: rgb(11, 89, 178); ">“Hybridizing Java.”</a> He argues that the Java community should continue using the good parts of Java, but should use other technologies where Java is weak. His primary focus in the article is using Adobe Flex for user interfaces, instead of the traditional Java options (Swing, JSF, etc…). <br /><br />Ward elaborates on this concept:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Since Flex applications are just the UI piece of an application the back-end usually stays the same. If your back-end was built following the SOA pattern then it is usually very easy to expose those services out to a new Flex UI. This preserves your existing business logic whether it is in EJBs, Spring services, POJOs, etc.</blockquote></li><li><strong>Flex Breaks Normal Browser Functionality, Like the Back Button.</strong> <br /><br />Ward’s <a href="http://www.jamesward.org/wordpress/2007/02/21/how-i-overcame-my-fear-of-flash/" style="text-decoration: underline; color: rgb(11, 89, 178); ">blog discusses the back button:</a><blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">In Flex, back button support is built in and easily customizable so this was never an issue. Flex also provides an easy way to do hashmark urls (or named anchors), so the url changes as application state changes. Another Web 1.0 integration problem solved.</blockquote>Ward adds more details for InfoQ.com:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Flex 3 provides a simple way for applications to store state parameters in a named anchor and correctly restore state based on those parameters when the URL is requested. More information about this feature can be found in the <a href="http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions#Deep_Linking" style="text-decoration: underline; color: rgb(11, 89, 178); ">Flex 3 Feature Introductions Deep Linking documentation.</a> <br /><br />Accessibility has always been very important for Flex applications. Since the Flash Player works with Jaws and other accessibility technologies, the capability for adding accessibility to Flash based applications is there. The Flex framework builds accessibility into the core framework. There are many different pieces of accessibility depending on what impairments and disabilities your application needs to support. You can find out more about the accessibility features of Flex in the <a href="http://livedocs.adobe.com/labs/flex/3/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=accessible_046_01.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">Developer's Guide.</a></blockquote></li><li><strong>I Can Do Everything Flex Does With Ajax.</strong> <br /><br />Ward explains:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">RIA with Flex and Ajax is not either/or. Sites like <a href="http://finance.google.com/finance?q=goog&hl=en" style="text-decoration: underline; color: rgb(11, 89, 178); ">Google Finance</a> show how you can use Flex and Ajax together. Ajax is very good for content-centric applications, while Flex is very good for interactive, media, and data-centric applications. If your application is somewhere in between the two sides of that spectrum, then you can use the Flex Ajax Bridge to combine the two technologies. In Flex 3, the Flex Ajax Bridge is integrated directly into the SDK. If you are using Flex 2, you will need to download the Flex Ajax Bridge separately.</blockquote>Also, from the InfoQ.com community, Michael Marth commented on why his group chose Flex:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">We use Flex 2 for our soon-to-launch online dating site viibee.com <br /><br />The reason: Flex enabled us to create a user experience far beyond anything that we could have done with a comparable effort in Javascript/Ajax.</blockquote></li></ol><br /></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-55914854363394834422009-02-28T23:58:00.001-06:002009-03-01T00:01:06.826-06:00Screencast: Watch a Flex app built in 11 minutes<span class="Apple-style-span" style="color: rgb(85, 85, 85); font-family: Verdana; font-size: 12px; line-height: 17px; "><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-bottom: 10px; "><a href="http://www.jamesward.com">James Ward</a> recorded a screencast of him building a simple Flex app with Flex Builder.<br /><br />Check it out:</p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-bottom: 10px; "><a href="http://www.adobe.com/products/flex/media/flexapp/" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(41, 112, 166); text-decoration: none; ">http://www.adobe.com/products/flex/media/flexapp/</a></p></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-12734248205281596712009-02-28T19:51:00.004-06:002009-02-28T21:52:10.002-06:00FlexUnit - Test Driven Development (TDD) for Flex<span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><span class="Apple-style-span" style="color: rgb(17, 17, 17); line-height: 31px; "><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-weight: bold;">Unit testing and Test Driven Development (TDD) for Flex and ActionScript 3.0<br /></span></span></span></span><div><span class="Apple-style-span" style="color: rgb(17, 17, 17); line-height: 31px; font-size:26px;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 15px; font-size:15px;"><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><br />Unit testing isn't a particularly common practice among Flash developers. Perhaps that's because so many of us are self-taught and not aware of what goes on in other languages, or perhaps it's because, until recently, many Flash-based projects were relatively small-scale.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In this article, I am going to deal with the how and what, but not necessarily the why for Test Driven Development for ActionScript 3.0 and Flex 2. If you want to know 'why', a simple Google search will return a plethora of resources.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">I'll do my best to collate and share what I have discovered over this period and show you how to unit-test using FlexUnit, hopefully saving you from some of the frustration and head-scratching I experienced.</span></p><p style="margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; "><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong>Requirements:</strong></span></p><br /><span class="Apple-style-span" style=" line-height: 15px; font-size:15px;"><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">FlexUnit from Adobe Labs</span></h4></span><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><p></p></span><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><a href="http://labs.macromedia.com/wiki/index.php/ActionScript_3:resources:apis:libraries#FlexUnit" target="_blank" style="text-decoration: none; line-height: 1.6em; color: rgb(68, 85, 102); ">flexunit .zip</a> (ZIP, 1.8 MB)</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Prerequisite knowledge</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Object-oriented programming (OOP), and some ActionScript 2.0 (enough to understand ActionScript 3.0.)</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">WHAT IS TEST DRIVEN DEVELOPMENT (TDD) AND UNIT TESTING?<br /></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Test Driven Development is one of the rules of <a href="http://www.extremeprogramming.org/" target="_blank" style="text-decoration: none; line-height: 1.6em; color: rgb(68, 85, 102); ">eXtreme Programming</a> (XP).</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Originally, XP programmers wrote tests for any part of their code that could break. However, this soon evolved in to the practice of writing the tests <em style="line-height: 1.6em; ">before</em> writing the actual code. This may sound strange, but there is reason behind this madness; by knowing what <em style="line-height: 1.6em; ">can</em> go wrong, you have a better idea of what your code needs to be able to handle.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">TDD has evolved in to a process by which code is <em style="line-height: 1.6em; ">generated</em>, as opposed to a testing process. It does still effectively perform tests, but that is more of a by-product.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The first thing you need is a Unit Testing framework. You can write your own, but that is not necessary. Most people use one of the existing frameworks such as FlexUnit or ASUnit.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In TDD, functionality is added in very small chunks: You come up with a test, you write the test, you write the code to satisfy the test, possibly refactor it to make it more efficient, and then start with the next test. Each test may only take a minute or so to write; it may take 10; one test should not take hours though.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">This quote, from <a href="http://blog.daveastels.com/articles/2005/07/05/a-new-look-at-test-driven-development" target="_blank" style="text-decoration: none; line-height: 1.6em; color: rgb(68, 85, 102); ">Dave Astels</a> gave me my first clear definition of TDD:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><em style="line-height: 1.6em; ">"It's about figuring out what you are trying to do before you run off half-cocked to try to do it. You write a specification that nails down a small aspect of behaviour in a concise, unambiguous, and executable form. It's that simple. Does that mean you write tests? No. It means you write <strong style="line-height: 1.6em; ">specifications</strong> of what your code will have to do. It means you specify the behaviour of your code ahead of time. But not far ahead of time. In fact, just before you write the code is best because that's when you have as much information at hand as you will up to that point. Like well done TDD, you work in tiny increments... specifying one small aspect of behaviour at a time, then implementing it." – Dave Astels</em></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There is in fact a kind of "testing dance" you perform, and it's known as the Test-Code-Simplify cycle:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The Test-Code-Simplify cycle (Quoted verbatim from "Extreme Programming Applied", p159):</span></p><ol style="word-spacing: -2ex; letter-spacing: -2ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; list-style-type: decimal; overflow-x: visible; overflow-y: visible; margin-left: 3ex; line-height: 1.6em; font-size:1em;"><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Write a single test</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Compile it. It shouldn't compile, because you haven't written the implementation code it calls</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Implement just enough code to get the test to compile</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the test and see it fail</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Implement just enough code to get the test to pass</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the test and see it pass</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Refactor for clarity and "once and only once"</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Repeat</span></li></ol><div><br /> <p><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong>UNDERSTANDING TERMINOLOGY<br /> <br /><br /> </strong></span></p><br /> </div><div><br /></div></span></span><br /> <div><span class="Apple-style-span" style=" font-weight: bold; line-height: 22px; text-transform: uppercase; font-size:14px;"><span class="Apple-style-span" style=" font-weight: normal; line-height: 15px; text-transform: none; font-size:15px;"><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">I'm going to use FlexUnit for this tutorial. The "Flex" part may be a little misleading. You <em style="line-height: 1.6em; ">do</em>need Flex in order to use it, but the framework can be used to test pure ActionScript 3.0 files as well.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Before looking at how to use FlexUnit, let's get familiar with some terminology. Bear with me—it's a bit of a chicken and egg situation, and will make more sense as you construct tests later on.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">assertions</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">An assertion is a statement of expected outcome. In other words, it is the expected result of your test. You may assert that the sky should be blue, or that you want x to be equal to y. In TDD if your assertion turns out to be something other than what you expected, you write code to correct that in your class.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">test fixture</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There may be some setup that is constant across all of your tests. For example, each test may depend on the creation of a certain object, property or process. A test fixture is useful if you have two or more tests for a common set of objects, as it avoids duplicating the code necessary to initialize and clean up the common objects. Methods called <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">setUp()</code> and <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">tearDown()</code> are provided for this common code, and any properties used can be declared at the top of the class.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">test case</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">A test case is the smallest unit of testing. It checks for a specific response to a particular set of inputs. Your test class must extend the TestCase class and have a constructor that calls the super class's constructor. In some frameworks, all test methods should begin with the word "test." So if you are testing that the beer is cold, your method will be called something like<code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testBeerIsCold()</code>.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">test suite</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">As more and more unit tests accumulate for a given project, you will want a way to group them. Running them one at a time would be cumbersome. A TestSuite can contain other TestSuites,<em style="line-height: 1.6em; ">or</em> individual tests, and is a way of declaring which test must be run in the same session, regardless of whether or not they are in the same file. This way of aggregating tests is very handy as you'll soon see.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">test runner</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">A test runner is a component that often has a graphical interface and displays the outcome of our tests. In FlexUnit you tell your TestRunner which TestSuite you want to use, and then call its <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">startTest()</code> method.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">test harness</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The class that extends TestCase <em style="line-height: 1.6em; ">may</em> contain a test suite, will contain test cases and may possibly contain test fixtures. From what I can gather this class is referred to as a <em style="line-height: 1.6em; ">test harness</em>, although usage of this term seems to vary in the documents I've looked at. Some documentation considers that the harness is the process that instantiates the runner and passes in the suites that you want to run, while <a href="http://en.wikipedia.org/wiki/Test_harness" target="_blank" style="text-decoration: none; line-height: 1.6em; color: rgb(68, 85, 102); ">Wikipedia</a> defines a test harness as the an Automated Test Framework (ATF).</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Congratulations if you managed to get through all that. It wasn't exactly exciting reading, but they are useful terms to refer back to as you look at the examples below.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Let's get on with installing FlexUnit and creating our tests...</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">INSTALLING FLEXUNIT<br /></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Installing FlexUnit is pretty straight forward. You get the Flex Unit source files, set up a Flex project, and in the process, you specify that the project should use the flexunit.swc file:</span></p><ol style="word-spacing: -2ex; letter-spacing: -2ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; list-style-type: decimal; overflow-x: visible; overflow-y: visible; margin-left: 3ex; line-height: 1.6em; font-size:1em;"><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Get the flexunit .zip archive (from the Requirements area) and extract it to your hard drive. I created a new folder on my C drive called FlexDev and extracted it there, so the path on my machine is C:\FlexDev. Once extracted, FlexDev will contain a folder called flexunit, which in turn contains further sub folders (bin, docs and src folders).</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Create the Flex Project. Open up FlexBuilder 2 and create a new Flex project using: File > New > Flex Project.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Choose a Basic Service (in other words, <em style="line-height: 1.6em; ">not</em> Data Services) and press Next.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Give your project a name of 'TDD Example', deselect the Use default location option, and browse to the same location as before (on my machine this is the C:\FlexDev folder). This is the location where you are going to set up your project. Click Next. (If you pressed Finish by mistake, skip to the end of this list).</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Select the Library Path tab, click the Add SWC… button and browse to the SWC file, which is in the bin folder of flexunit (using my set-up, the path is C:\FlexDev\flexunit\bin\flexunit.swc).</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Press Finish button and you're done.</span></li></ol><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Note:</strong> If you need to add the SWC file to an existing project, right-click your project folder, select properties from the pop-up list and continue from step 5 above.</span></p><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">AM I DONE?<br /></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">You're almost there. First I am going to briefly describe the three files that you are about to create:</span></p><ul style="word-spacing: -2ex; letter-spacing: -2ex; list-style-type: disc; margin-left: 1ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; line-height: 1.6em; "><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The first file is the .mxml, (which is set as the default application for our Flex project). This file contains an instance of the TestRunner component (the visual component that displays the test results). The file specifies to the component which test suites you want to run, and then starts the test. I simply called this "main.mxml."</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">I'll refer to the second file as the test class. It is the one that contains the "test runner." Some developers refer to this as the test harness and some would simply call it a test runner. In this file, decide what you need to assert, and then write your test cases in it. I've named this class<strong style="line-height: 1.6em; ">AccountTest.as</strong> as the example in this tutorial relates to money.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Finally there is the actual class, Account.as. Build this file up bit by bit as you create more and more tests.</span></li></ul><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong>CREATING THE THREE FILES<br /><br /></strong></span></div><br /><div><br /></div></span></span><div><span class="Apple-style-span" style=" font-weight: bold; line-height: 22px; text-transform: uppercase; font-size:14px;"><span class="Apple-style-span" style=" font-weight: normal; line-height: 15px; text-transform: none; font-size:15px;"><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><br /><br /> Creating main.mxml:</span></h4><br /><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Here is the MXML that belongs in the main.mxml file. Open up the file and copy and paste this in:</span></p><div class="preWrapper" style="line-height: 1.6em; "><br /> <div class="preWrapper"><br /> <pre><br /><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><?xml version="1.0" encoding="utf-8"?><br /><mx:Application<br /> xmlns:mx="http://www.adobe.com/2006/mxml"<br /> xmlns:flexunit="flexunit.flexui.*"<br /> creationComplete="onCreationComplete()"><br /> <br /> <mx:Script><br /> <![CDATA[<br /> <br /> private function onCreationComplete():void<br /> {<br /> testRunner.test = AccountTest.suite();<br /> testRunner.startTest();<br /> }<br /> ]]><br /> </mx:Script> <br /> <flexunit:TestRunnerBase id="testRunner" width="100%" height="100%" /><br /></mx:Application><br /></span></pre><br /> </div><br /></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There are a few things to notice:</span></p><ol style="word-spacing: -2ex; letter-spacing: -2ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; list-style-type: decimal; overflow-x: visible; overflow-y: visible; margin-left: 3ex; line-height: 1.6em; font-size:1em;"><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">We've defined a new xml namespace in the Application tag</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">We have a creationComplete even calling our onCreationComplete method</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">we created an instance of TestRunnerBase</span></li></ol><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">We defined a new xml namespace in the Application tag:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">xmlns:flexunit="flexunit.flexui.*" </span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">If you have created your own components in Flex before, this will be familiar to you. If not then I will briefly explain.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">This creates a namespace called "flexunit," which refers to components located in the flexunit.flexui package. We have access to this package of course, because you associated the flexunit.swc file with the project library earlier.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">To instantiate an instance of the component in MXML, you can use code similar to the following:</span></p></span></span><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><flexunit:testrunnerbase id="testRunner"></flexunit:testrunnerbase><div class="preWrapper"><pre><br /><flexunit:TestRunnerBase id="testRunner" /><br /></pre></div><br /></span><div class="preWrapper"></div> </pre></div><span class="Apple-style-span" style=" font-weight: bold; line-height: 22px; text-transform: uppercase; font-size:14px;"><span class="Apple-style-span" style=" font-weight: normal; line-height: 15px; text-transform: none; font-size:15px;"><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">If you had declared your namespace as "bananas", you would instantiate your component using code similar to:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><bananas:testrunnerbase id="testRunner"> <bananas:testrunnerbase id="testRunner"></bananas:testrunnerbase></bananas:testrunnerbase></span><div class="preWrapper"><pre><br /><bananas:TestRunnerBase id="testRunner" /><br /></pre></div> </pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">But you've used common sense and gone for a more descriptive name.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The TestRunnerBase component is TestRunner (see the "<em style="line-height: 1.6em; ">Understanding Terminology</em>" section, above, for a refresher). I assigned it an id of <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testRunner</code>.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In the Application tag you also have the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">creationComplete</code> event handler, which calls<code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">onCreationComplete()</code>. This method sets the test suite(s) you are going to use, and then calls the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">startTest()</code> method of the TestRunner to put everything in to action.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Finally, underneath the script block you instantiate our TestRunner as previously described, with a width and height of 100%.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Okay, that's it. You'll be glad to hear that you don't really need to touch this file again in this tutorial.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Creating AccountTest.as:</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Create a new ActionScript file in the main project folder (at the same level as main.xml) called AccountTest.as, and paste the following code into it:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">package<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> import flexunit.framework.TestCase;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> import flexunit.framework.TestSuite;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> <o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public class AccountTest extends TestCase<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> {<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public function AccountTest(methodName : String){<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> super(methodName);<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> <o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public static function suite():TestSuite{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> var accountTS:TestSuite = new TestSuite();<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> //tests are added to the suite here<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> return accountTS;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> <o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> } }</span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There are a few things to notice:</span></p><ol style="word-spacing: -2ex; letter-spacing: -2ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; list-style-type: decimal; overflow-x: visible; overflow-y: visible; margin-left: 3ex; line-height: 1.6em; font-size:1em;"><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The class extends TestCase.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There is one static function called suite (which returns a TestSuite).</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The constructor calls its super class, passing it some method name.</span></li></ol><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Creating Account.as</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Finally, you must create the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">Account</code> class. Create a new ActionScript file in the main project folder (at the same level as main.xml and AccountTest.as) called Account.as and paste the following code into it:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">package<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public class Account<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> {<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public function Account(){<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> <o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Not much to say about this. It is the bare bones of the actual class.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">WRITING THE FIRST TEST<br /></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">I'm going to plagiarize (with permission) the example used by <a href="http://www.simonwacker.com/" target="_blank" style="text-decoration: none; line-height: 1.6em; color: rgb(68, 85, 102); ">Simon Whacker</a> to demonstrate as2lib's unit testing, because it was particularly clear and easy to understand.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">We are going to create an application for a bank, and our first requirement is to allow the creation of a new account.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The first question to ask yourself is: When creating a new account, what should happen? Well, not much. Despite my best wishes, whenever I open a new account, it always starts off empty. How do I know that for sure? Well. I know because I can check my balance. So, when I open a new account and check my balance I should have £0.00 in there. Okay, we have our first test.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Remember, in this tutorial, we write our test <em style="line-height: 1.6em; ">before</em> we write the code in our class, and this is how it works:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In AccountTest.as, underneath our static "suite" method, paste in this code:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function testNew():void{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> var account:Account = new Account();<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> assertEquals("Expecting zero account balance", 0, account.getBalance());<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Note:</strong> In some frameworks all tests must start with the prefix "test." With FlexUnit, this rule doesn't seem to be enforced, but for consistency I recommend doing so anyway. One reason to require any test method to start with "test" is that you can then shortcut the suite creation process. Simply introspect a class and any function that starts with "test" is considered a test.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In this case, you are testing the creation of a new account and so the method is called <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testNew</code>.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">As you can see, you create a new instance of the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">Account</code> class, and then use an assertion method called <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">assertEquals.</code></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There are various types of assertion, but <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">assertEquals</code> basically checks that the two values passed in are ... [drum roll] ... equal. The eagle eyed among you may have noticed I am actually passing in three values:</span></p><ol style="word-spacing: -2ex; letter-spacing: -2ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; list-style-type: decimal; overflow-x: visible; overflow-y: visible; margin-left: 3ex; line-height: 1.6em; font-size:1em;"><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The first value is optional. It is a String and it should clarify the outcome you are looking to satisfy. In this case: "Expecting zero account balance."</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The next value is 0.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The last value is a call to an, as yet non-existent, method of our <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">Account</code> class called<code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">getBalance(). </code>I will write this in a moment.</span></li></ol><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Overall, this assert specifies that you want the value returned from <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">getBalance()</code> to equal zero.</span></p><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Note:</strong> <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">TestCase</code> extends Assert, so there is no need to import the Assert class in order to use these assertion methods.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">All you have to do now is add your test to the test suite.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Amend the static <strong style="line-height: 1.6em; ">suite</strong> function in the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">AccountTest</code> class to look like this:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public static function suite():TestSuite{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> var accountTS:TestSuite = new TestSuite();<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> accountTS.addTest(new AccountTest("testNew"));<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> return accountTS;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">You can see from the above code that I use the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">addTest</code> method to add the test to the TestSuite. The object passed in is actually an instance of <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">AccountTest</code> (in other words, the class you are in). The name of the test to run, gets passed in as a String...</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">If you remember, the constructor for AccountTest looks like the following code:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function AccountTest(methodName : String){<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> super(methodName);<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">It accepts the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">methodName</code> of the test, and passes it on to its super class.</span></p><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Note:</strong> This is the way I first learned to test, but you don't have to do it like this. The framework will automatically find all "test" methods in a TestCase if you pass the class reference to the constructor of a TestSuite.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Test It!</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Okay, the setup is done. It's time to test.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">If you think back to the <strong style="line-height: 1.6em; ">Test-Code-Simplify cycle</strong> of eXtreme Programming that we looked at earlier. The first couple of stages were:</span></p><ul style="word-spacing: -2ex; letter-spacing: -2ex; list-style-type: disc; margin-left: 1ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; line-height: 1.6em; "><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Write a single test.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Compile it. It shouldn't compile, because you haven't written the implementation code it calls</span></li></ul><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">You've written a test, so try and compile the project.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><img src="http://www.adobe.com/devnet/flex/articles/unit_testing/fig01.jpg" alt="The Errors window" width="439" height="166" border="0" class="image-border" style="border-style: initial; border-color: initial; vertical-align: middle; line-height: 1.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(187, 187, 187); border-right-color: rgb(187, 187, 187); border-bottom-color: rgb(187, 187, 187); border-left-color: rgb(187, 187, 187); " /></span></p><p class="caption" style="padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); margin-top: 0.5em; line-height: 1.6em; font-size:0.917em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Figure 1. </strong>The Errors window</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The Flex Builder Problems pane should also be reporting the following error:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><em style="line-height: 1.6em; ">"Call to a possibly undefined method getBalance through a reference with static type Account."</em></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Great! That's what we want. You haven't written <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">getBalance()</code> yet And so you should quite rightly have a compiler error.</span></p><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Note:</strong> If you actually choose to ignore the error and run the application anyway, you will see the TestRunner, and the test will actually pass! I didn't expect this to happen so be aware of it. It is fine to ignore Flex Builder warnings (in fact, the kind of tests you'll do will probably cause a few warnings) but don't ignore compile-time errors.</span></p><p class="note" style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">From further research, I found out that the test passes based on the last time you saved. So if you saved an empty test method, it would work; or, if you saved the empty testcase it would run and report no failures. When there are compiler errors, a new SWF file doesn't replace the old SWF, so you are in fact running the old SWF file.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Now take a look at the next two steps in the Test-Code-Simplify cycle:</span></p><ul style="word-spacing: -2ex; letter-spacing: -2ex; list-style-type: disc; margin-left: 1ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; line-height: 1.6em; "><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Implement just enough code to get the test to compile.</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the test and see it fail.</span></li></ul><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Amend the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">Account</code> class to look like this (additions are highlighted in yellow):</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">package<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">{<o:p></o:p></span><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> <o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public class Account<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> {<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> private var _balance:Number; <o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public function Account(){<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><o:p> </o:p></span><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> public function getBalance():Number{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> return _balance;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> }<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">You now added your <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">getBalance()</code> method, which returns <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">_balance</code>, and you have also declared this variable called <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">_balance</code> (intended to hold our account balance amount of course), but <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">_balance</code> hasn't been initialized with a value yet. Compile, and you should see something like the following:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><img src="http://www.adobe.com/devnet/flex/articles/unit_testing/fig02.jpg" alt="The TestRunner GUI" width="515" height="223" border="0" class="image-border" style="border-style: initial; border-color: initial; vertical-align: middle; line-height: 1.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(187, 187, 187); border-right-color: rgb(187, 187, 187); border-bottom-color: rgb(187, 187, 187); border-left-color: rgb(187, 187, 187); " /></span></p><p class="caption" style="padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); margin-top: 0.5em; line-height: 1.6em; font-size:0.917em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Figure 2.</strong> The TestRunner GUI</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">This error is a good thing! Here we can see the test that failed (testNew) and why it failed. The big red bar would be green if the test had passed.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Now you know your TestRunner is working properly. You know the test should have failed, you know your test did fail, and you know why it failed.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The TestRunner tells us that it expected a value of zero but received a value of <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">NaN</code> (<strong style="line-height: 1.6em; ">N</strong>ot <strong style="line-height: 1.6em; ">aN</strong>umber) which is what ActionScript 3.0 returns (variables typed as <em style="line-height: 1.6em; ">Number</em> and not assigned a value are returned as <em style="line-height: 1.6em; ">NaN</em> in ActionScript 3.0).</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Continuing on, the next two steps in the Test-Code-Simplify cycle are:</span></p><ul style="word-spacing: -2ex; letter-spacing: -2ex; list-style-type: disc; margin-left: 1ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; line-height: 1.6em; "><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Implement just enough code to get the test to pass</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the test and see it pass</span></li></ul><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">All you need to do now is give <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">_balance</code> an initial value of zero. Change your Account class's constructor to look like the following:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function Account(){<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> private var _balance:Number = 0;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Now run the test:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><img src="http://www.adobe.com/devnet/flex/articles/unit_testing/fig03.jpg" alt="The test succeeds" width="515" height="223" border="0" class="image-border" style="border-style: initial; border-color: initial; vertical-align: middle; line-height: 1.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(187, 187, 187); border-right-color: rgb(187, 187, 187); border-bottom-color: rgb(187, 187, 187); border-left-color: rgb(187, 187, 187); " /></span></p><p class="caption" style="padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); margin-top: 0.5em; line-height: 1.6em; font-size:0.917em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Figure 3.</strong> The test succeeds in the All Tests tab</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Bingo. The bar is green. Here we are viewing the "All Tests" tab in the left pane, which shows that the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testNew</code> test has passed. You know it passed for the right reasons too, because you saw it fail when conditions were wrong.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The final two points in the Test-Code-Simplify cycle are:</span></p><ul style="word-spacing: -2ex; letter-spacing: -2ex; list-style-type: disc; margin-left: 1ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; line-height: 1.6em; "><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Refactor for clarity and "once and only once"</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Repeat</span></li></ul><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">There's little need to refactor here, and so on with the next test.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong>ONWARDS AND UPWARDS<br /></strong></span></p><br /><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">You've completed your first test—the hard part is over with. Take a break if you're exhausted because in order to see the real value of TDD we are going to implement a couple of extra tests. Most of the following code will be copy and paste with little need for additional explanation, so it shouldn't take long to get to the end now<br /></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong>GIVE ME SOME CREDIT<br /></strong></span></p><br /><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In many ways this next part of the tutorial is the most important. I hope to demonstrate how TDD can help you spot mistakes and prevent you from making changes which could break existing code and leave you unaware. Catching these problems when they occur, can save hours of debugging and headache further down the line.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Let's say your bank customers can open an account and now they need a way to credit their accounts. I'm sure you can think of plenty of things you need to test for here. Just as an example:</span></p><ul style="word-spacing: -2ex; letter-spacing: -2ex; list-style-type: disc; margin-left: 1ex; padding-left: 2.5ex; margin-top: 1em; margin-bottom: 1.35em; line-height: 1.6em; "><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">crediting an account with a null amount (avoid this!)</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">crediting an account with a real value (must work!)</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">crediting an account with a negative amount (that's a debit not a credit)</span></li><li style="word-spacing: normal; letter-spacing: normal; padding-bottom: 0.5em; line-height: 1.6em; font-size:1em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">an account credit which includes fractions of a penny (how to handle?)</span></li></ul><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">We're not going to implement all of these, but we'll use a couple of them to highlight some points.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Credit with null value</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">This seems pretty straight forward so first let's write the test:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function testCreditWithNullValue():void{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> var account:Account = new Account();<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> account.credit(null);<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> assertEquals("Expecting zero account balance", 0, account.getBalance());<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Again, you have called a method that doesn't exist yet <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">credit()</code>, but in doing so you have effectively <em style="line-height: 1.6em; ">specified</em> that it is required, and must be capable of accepting a value. This shows how TDD helps you write your specifications.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Now add your test to our test suite:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">accountTS.addTest(new AccountTest("testCreditWithNullValue")); </span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Check that your application doesn't compile; sure enough, Flex Builder gives you a compile error because you haven't written the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">credit()</code> method yet.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Next, write just enough code in the Account class to let it compile.</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><div style="border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt; padding:12.0pt 9.0pt .25in 9.0pt;background:#F0F6FC"><pre style="background: #F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0in;mso-padding-alt: 12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function credit(amount:Number):void{<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"> _balance += amount;<o:p></o:p></span></pre><pre style="background:#F0F6FC;border:none;mso-border-alt:solid #CCCCCC .75pt; padding:0in;mso-padding-alt:12.0pt 9.0pt .25in 9.0pt"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">}<o:p></o:p></span></pre></div></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the test and see it fail:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Only, this one doesn't fail.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Flex Builder warns is that AccountTest ('null' is being used where 'Number' is expected), but there is no error. In fact ActionScript 3.0 appears to handle the attempt at passing in a null and returns a balance of zero.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In ActionScript 2.0, adding null to zero would equal NaN (Not a Number), so let's quickly check that our assumption about this is correct by making the test fail on purpose.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Change the code as follows:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">account.credit(null + 10); </span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">When we run the test it does indeed fail, because it is expecting zero, but receives 10. It looks like the code is doing what you wanted, so remove the "<strong style="line-height: 1.6em; ">+ 10</strong>" and write the next test.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Credit with real value</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Now make sure you can credit the account with a real value.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Use the amount £12.34, although the currency is obviously irrelevant here.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Once again, create a test and add it to the test suite. I show the test as follows:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); white-space: normal; font-family:Georgia;"><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function testCreditWithRealValue():void{ var account:Account = new Account(); account.credit(12.34); assertEquals("Expecting account balance with pounds and pence.", 12.34, account.getBalance()); }</span></pre></span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Again, you create a new instance of the Account class, call the credit method (which now does exist) and pass in a value of 12.34. Therefore, you expect a balance of 12.34 returned.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Finally, this test passes for the first time. With something as simple as this (considering our other tests are also in place) I don't think you need to double check it by making it fail. On with the final test.</span></p><h4 style=" color: rgb(17, 17, 17); margin-top: 0px; margin-bottom: 0px; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Credit to three decimal places (fractions of a penny)</span></h4><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In the next scenario, the bank has specified that it will allow account credits which include fractions of a penny, but it will always round these amounts down and keep the extra (they are a bank after all); so if you put in thirty seven and a half pence, the account would be credited with 37 pence. Here, you simply check a number to three decimal places.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Write the test (see below) and add it to the test suite (not shown):</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); white-space: normal; font-family:Georgia;"><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function testCreditWithRealValueTo3DecimalPlaces():void{ var account:Account = new Account(); account.credit(1.234); assertEquals("Expecting account balance of 1.23", 1.23, account.getBalance()); }</span></pre></span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the application and see it fail. Good. There is enough code in place for the application to compile already, but of course you are expecting a rounded-down figure, and the current credit method is not set up for that, so you get the following TestRunner error:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><em style="line-height: 1.6em; ">Error: Expecting account balance of 1.23 - expected:<1.23> but was:<1.234></em></span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">That's exactly what is expected. Now you write enough code to make it pass, which means changing the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">credit()</code> method to round off the amount. Change it to look like the following (changes in highlight):</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); white-space: normal; font-family:Georgia;"><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">public function credit(amount:Number):void{ <strong style="font-weight: normal; background-color: rgb(249, 249, 183); line-height: 1.6em; ">var rounded = Math.floor(amount * 100)/100;</strong> _balance += <strong style="font-weight: normal; background-color: rgb(249, 249, 183); line-height: 1.6em; ">rounded;</strong> }</span></pre></span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">If you run the test, it passes. Notice that Flex Builder warns you that you forgot to give the<em style="line-height: 1.6em; ">rounded</em> variable a Type definition. To do that, change the code to:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">var rounded<strong style="font-weight: normal; background-color: rgb(249, 249, 183); line-height: 1.6em; ">:int</strong> = Math.floor(amount * 100)/100; </span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Run the application and...</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Hang on a minute. We seem to have broken a couple of tests.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Let's look at the first one:</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><img src="http://www.adobe.com/devnet/flex/articles/unit_testing/fig04.jpg" alt="Running the testCreditWithRealValue test " width="515" height="225" border="0" class="image-border" style="border-style: initial; border-color: initial; vertical-align: middle; line-height: 1.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(187, 187, 187); border-right-color: rgb(187, 187, 187); border-bottom-color: rgb(187, 187, 187); border-left-color: rgb(187, 187, 187); " /></span></p><p class="caption" style="padding-bottom: 1px; margin-bottom: 1.2em; color: rgb(136, 136, 136); margin-top: 0.5em; line-height: 1.6em; font-size:0.917em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;"><strong style="line-height: 1.6em; ">Figure 4.</strong> Running the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testCreditWithRealValue</code> test</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">The <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testCreditWithRealValue</code> was passing before, so what did we do to break it? Well as you can see, the test was expecting a real value of 12.34 but it only received 12.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">In a moment of distraction, we typed the variable incorrectly as <em style="line-height: 1.6em; ">int</em>, and of course integers are<em style="line-height: 1.6em; ">whole</em> numbers. In this case my contrived example was pretty obvious, but it shows how changing or implementing new functionality can break earlier code, and how TDD alerts you to that fact instantly.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">All you need to do to fix this particular error is to type our variable as <em style="line-height: 1.6em; ">Number</em>:</span></p><div class="preWrapper" style="line-height: 1.6em; "><pre style="display: block; padding-top: 1em; padding-right: 1.5ex; padding-bottom: 1.5em; padding-left: 1.5ex; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; white-space: pre; background-color: rgb(240, 246, 252); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; font-weight: inherit; line-height: 1.6em; font-family:'Courier New', Courier, monospace;font-size:1em !important;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">rounded<strong style="font-weight: normal; background-color: rgb(249, 249, 183); line-height: 1.6em; ">:Number</strong> = Math.floor(amount * 100)/100; </span></pre></div><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Now run the application and all tests pass.</span></p><p style=" margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; font-size:1.083em;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 18px; font-family:'Trebuchet MS';font-size:13px;">Let's look at the <code style="font-family: 'Courier New', Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-weight: inherit; line-height: 1.6em; font-size: 1em !important; ">testCreditWithRealValue</code> test again for a moment... luckily you chose to use decimals in the "real value" test. Obviously an integer is a valid "real value" too, and if you had just used an integer, you wouldn't have spotted this error so easily. It is important to spend a moment naming our tests accurately, and more importantly, ensuring that you can't break a test down further in to smaller tests. One of the XP maxims is "Test until fear turns to boredom". TDD is great, but it's not an instant solution to all your problems. I wanted to show both how useful it can be, and how thin the distinction can be between useful feedback and no feedback at all.</span></p><p style="font-size: 1.083em; margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; line-height: 1.6em; "><br /></p></span></span></div></div></div><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-46459116867796904562009-02-28T19:50:00.000-06:002009-02-28T19:51:14.534-06:00Top 10 Mistakes when building Flex Applications<span class="Apple-style-span" style="font-family: Lucida; font-size: 13px; line-height: 16px; ">In this post, <a href="http://www.jamesward.org/wordpress/" style="text-decoration: underline; color: rgb(11, 89, 178); ">Adobe’s James Ward</a> teams up with InfoQ.com to bring you another Flex Top 10 (<a href="http://www.infoq.com/news/2007/12/top-10-flex-misconceptions;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); ">our most recent Flex Top 10</a>). Flex is an open source application development framework for building rich Internet applications that run in the web with Flash Player, or on the desktop with Adobe AIR. Overall, Flex is a powerful framework that is easy to use, but today let's focus on some of the common mistakes that are made when building Flex applications. <br /><br />For those new to Flex, check out InfoQ’s recent <a href="http://www.infoq.com/news/2008/01/adobe-flex-basics;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); "><em>Adobe Flex Basics</em></a> to get a quick introduction to the framework. Here is the list:<ol><strong></strong><li><strong>Using an RIA framework to build Web 1.0 applications (aka. New technology same old stuff).</strong></li><br />One of the largest challenges when moving from Web 1.0 applications to the RIA's development paradigm is learning to think differently. Flex gives developers an advanced component library that allows for doing things that simply weren’t possible only a few years ago. Often, the power of Flex is missed, and the framework is used to implement more traditional Web 1.0 applications. <br /><br />Building Web 2.0 applications is more than partial page refresh and rounded corners. For example, Flex developers should be using vectors to provide users a visual understanding of data, and advanced controls for a rich application flow. Stephan Janssen <a href="http://www.infoq.com/news/2008/03/stephan-janssen-parleys-ria;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); ">discusses this struggle recently with InfoQ.com:</a><blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">As a Java developer, learning Object Oriented ActionScript and the UI markup language is really a walk in the park. The challenge however for (Java) developers is that we're not designers, and with RIA technologies these two skills are very much needed.</blockquote><strong></strong><li><strong>Breaking standard browser experiences.</strong></li><br />While Flex does provide an excellent platform for improving the user experience, it still important to maintain familiarity of things like the back button, book marking, and auto complete. <br /><br />Flex 3 includes new Deep Linking features for back button support and book marketing. You can learn more at <a href="http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions:_Deep_Linking" style="text-decoration: underline; color: rgb(11, 89, 178); ">labs.adobe.com.</a> There are number of components out there for implementing auto-complete. From the Adobe Exchange, you can use the <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&loc=en_us&extid=1047291" style="text-decoration: underline; color: rgb(11, 89, 178); ">AutoComplete Input</a> component. <br /><br /><strong></strong><li><strong>Slowing the application down with the use of too many containers.</strong></li><br />Flash Player uses a hieratical display object graph, similar to the HTML Document Object Model (DOM). The deeper containers are nested the longer the rendering takes. Adobe’s Flex Developer Center has an article that covers best practices related to Flex performance, including the use of containers in detail:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">The biggest Flex performance danger is yielding to the temptation to use containers randomly. Deeply nesting too many containers hinders the performance of your application. This is the number one performance danger that Flex developers succumb to—and luckily it is 100 percent avoidable.</blockquote><br /><strong></strong><li><strong>Slowing the application down by using XML for data transfer over optimized protocols.</strong></li><br />Flex offers developers a number of options for data transfer between the Flex client application and the server, including AMF3, XML, SOAP, and straight HTTP requests. Ward demonstrates the use of these technologies and performance benchmarks in his <a href="http://www.jamesward.org/census/" style="text-decoration: underline; color: rgb(11, 89, 178); ">Census application.</a> <br /><br />BlazeDS should be considered for Greenfield projects using Java on the backend. <a href="http://www.infoq.com/news/2007/12/blazeds;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); ">BlazeDS is Adobe’s recently open sourced Data Services product</a> that uses the AMF3 protocol. AMF is a binary transfer protocol that is easy to integrate with Java, and offer significant performance benefits over XML. There are open source implementations of AMF for every major backend technology. <br /><br />If BlazeDS is not an option, <a href="http://www.infoq.com/news/2007/09/hessian-flex;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); ">Hessian</a> could be an option. Hessian offers ActionScript/Flex support for their binary web services protocol. <br /><br /><strong></strong><li><strong>Trying to hire Flex developers.</strong></li><br />Experienced Flex developers are very hard to find right now. Flex is at the point in the adoption curve which Java was at in the late nineties. The demand for Flex developers is exceeding the supply. This makes finding experienced Flex developers difficult. This, however, creates a huge opportunity for Java developers to expand their skill sets and work with a fun emerging technology. Many companies looking for Flex developers have great success training Java or other web application developers for only a few weeks on Flex. Flex’s language and APIs are easily learnable by developers who are familiar with Web and GUI programming. <br /><br /><strong></strong><li><strong>Over use of animations</strong></li><br />Using Flash as the runtime enables developers to easily add animations and effects. However, developers should make sure that the animations have meaning and provide context. Otherwise, they will annoy users. The timing of animations is also important. Interaction designers can help make recommendations on when animations should and should not be used. Interaction designers can also recommend the best type of animations, the duration, and the best easing function. <br /><br />There is good a <a href="http://laair.org/node/203" style="text-decoration: underline; color: rgb(11, 89, 178); ">post on the use of animations at laair.org:</a><blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">Most animations are simply TOO LONG. They are long, and slow, and boring, and excessive. Tone it down. If there is one thing I have found, its that I hate waiting for stupid animations to finish so I can do something else. <br /><br />Don’t get me wrong I am not bashing animations. I am simply bashing animations that are simply too long or too extravagant for their purpose. Every animation can be broken down to having a purpose. Figure out the purpose of your animation and apply accordingly.</blockquote><strong></strong><li><strong>Not setting up an enterprise ecosystem.</strong></li><br />As with other software projects, it is important to setup an enterprise ecosystem for your Flex applications. <br /><br />Test Driven Development (TDD) is a staple of most any enterprise project in this day-and-age. For Flex, the <a href="http://code.google.com/p/as3flexunitlib/" style="text-decoration: underline; color: rgb(11, 89, 178); ">FlexUnit framework</a> is available for coding unit tests. On Adobe’s Developer Connection, <a href="http://www.adobe.com/devnet/flex/articles/unit_testing.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">Neil Webb discusses TDD for Flex developers and using FlexUnit.</a> In addition,<a href="http://code.google.com/p/flexcover/" style="text-decoration: underline; color: rgb(11, 89, 178); ">Flexcover</a> is available for code coverage reporting. <br /><br /><a href="http://martinfowler.com/articles/continuousIntegration.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">Continuous Integration (CI)</a> is a proven practice for building cohesive applications when multiple developers are contributing. Similar to Java applications, both Ant and Maven plug-ins are available for CI builds of your Flex applications. <br /><br /><strong></strong><li><strong>Not using the entire framework.</strong></li><br />There are a number of optional features available in Adobe Flex that you should consider using in your applications. For example, <a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">Runtime Shared Libraries (RSL)</a> is available for reducing the size of your applications:<blockquote style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(239, 239, 239); border-right-color: rgb(239, 239, 239); border-bottom-color: rgb(239, 239, 239); border-left-color: rgb(239, 239, 239); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-right: 0px; margin-left: 20px; color: rgb(51, 51, 51); background-image: url(http://www.infoq.com/styles/i/bg-blockquote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(250, 250, 250); background-position: 5px 5px; ">You can shrink the size of your application's resulting SWF file by externalizing shared assets into standalone files that you can separately download and cache on the client. Multiple Flex applications can load these shared assets at runtime, but each client need only to download them once. These shared files are called Runtime Shared Libraries.</blockquote>Another under used feature of the framework is the built in accessibility features. You can read more about the accessibility features of Flex in <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=accessible_2.html" style="text-decoration: underline; color: rgb(11, 89, 178); ">Adobe’s livedocs</a>. In addition to built in accessibility, the framework provides <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=l10n_2.html#158253" style="text-decoration: underline; color: rgb(11, 89, 178); ">built in features for localization.</a> For the latest Flex 3 framework features, checkout <a href="http://learn.adobe.com/wiki/display/Flex/Getting+Started" style="text-decoration: underline; color: rgb(11, 89, 178); ">Adobe’s Getting Started</a> introduction page. <br /><br /><strong></strong><li><strong>Slowing the DataGrid down with complex renderers.</strong></li><br />The out-of-the-box itemRenderer for the DataGrid is very optimized. Mistake #3 discussed the performance impacts of deeply nested containers. One of the places in Flex where containers can easily get deeply nested is in the DataGrid’s item renderers. The number of item renderers which are rendered by the DataGrid is the number of visible rows times the number of visible columns. Custom DataGrid and List item renderers should be very optimized. When complex layout logic is needed in an item renderer, it is best to use UIComponent (or other more low-level classes) and position the contents for that cell manually. <br /><br /><strong></strong><li><strong>Not Preparing for Offline Applications.</strong></li><br />The traditional model for RIAs is in the browser. However technologies like <a href="http://www.infoq.com/air;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); ">Adobe AIR</a> and<a href="http://www.infoq.com/news/2007/06/googlegears;jsessionid=298C0C91764C90BCF69E9A2A2436CA14" style="text-decoration: underline; color: rgb(11, 89, 178); ">Google Gears</a> is allowing those applications to run offline. By not preparing for a potential offline architecture when users demand it, changing your applications to support offline features may be very difficult. Typically, in web applications business logic lives on the server. In offline RIAs, business logic must transition to the client. This makes it nessecary to architect ahead of time where certain business logic will need to live in order for applications to work both offline and online.</ol></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-1587041388352752672009-02-22T22:09:00.000-06:002009-02-22T22:11:03.520-06:00Change Your Perception<span class="Apple-style-span" style="border-collapse: collapse; font-family: 'times new roman'; "><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">OFFER YOUR PLANS AND ACTIVITIES TODAY ACCORDING TO GOD"S WILL...</span></span></p><br /><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">There was a millionaire who was bothered by severe eye pain. He consulted so many physicians and was getting his treatment done.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">He did not stop consulting galaxy of medical experts; he consumed heavy loads of drugs and underwent hundreds of injections.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">But the ache persisted with great vigor than before. At last a monk who has supposed to be an expert in treating such patients </span></span><span lang="ar-kw"><span style="font-family:Bookman Old Style;">was called for by the millionaire.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">The monk understood his problem and said that for sometime he should concentrate only on green colors and not to fall his eyes </span></span><span lang="ar-kw"><span style="font-family:Bookman Old Style;">on any other colors.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">The millionaire got together a group of painters and purchased barrels of green color and directed that every object his eye was likely </span></span><span lang="ar-kw"><span style="font-family:Bookman Old Style;">to fall to be painted in green color just as the monk had directed. </span></span><span lang="ar-kw"><span style="font-family:Bookman Old Style;">When the monk came to visit him after few days, the millionaire"s servants ran with buckets of green paints and poured on him since </span></span><span lang="ar-kw"><span style="font-family:Bookman Old Style;">he was in red dress, lest their master not see any other color and his eye ache would come back.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">Hearing this monk laughed said "If only you had purchased a pair of green spectacles, worth just a few rupees, you could have saved </span></span><span lang="ar-kw"><span style="font-family:Bookman Old Style;">these walls and trees and pots and all other articles and also could have saved a large share of your fortune.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">You cannot paint the world green." Let us change our vision and the world will appear accordingly.</span></span></p><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">It is foolish to shape the world, let us shape ourselves first.</span></span></p><br /><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;"><span class="Apple-style-span" style="font-weight: bold;">Change Your Perception..!!</span></span></span></p><br /><p dir="ltr"><span lang="ar-kw"><span style="font-family:Bookman Old Style;">KEEP CONFIDENCE, TRUST IN GOD AND NEVER LOSE HOPE...</span></span></p><p dir="ltr"><span class="Apple-style-span" style="font-family: 'Bookman Old Style';"><br /></span></p></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-13246405324774175402009-02-16T21:03:00.001-06:002009-02-16T21:05:18.125-06:0035 keys to running a business, or living a life...<span class="Apple-style-span" style="font-family: Verdana; font-size: 12px; line-height: 19px; "><ol style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-left: 2em; list-style-type: decimal; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">It's okay not to know. It's okay to be vulnerable. No one has all the answers. We value and learn from the questions and the asking.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We are learning to appreciate the mystery and sacredness of our lives and the mystery and sacredness of life.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Life is short. There is no escape from old age, sickness, and death. Death is a great teacher. Recognizing the shortness of our lives provides motivation to live fully in each day and in each moment.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We understand the importance of taking regular quiet time for ourselves. Through reflection and by slowing down we develop an appreciation for life and we increase our capacity for understanding.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We are learning to trust our inner wisdom. Our bodies and minds are amazing, unexplainable, and unfathomable.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">It's okay to be uneasy, to be uncomfortable, to grieve, to feel pain. Recognizing when something is off, feeling the depth of loss, experiencing pain, is the first step toward change and growth.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Practice active listening — listening deeply to yourself and to others. Listen to others without formulating your own ideas. Listen to yourself before speaking.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We all seek balance in our lives — balancing work and family, balancing our inner and outer lives, balancing what we want to do and what we must do.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We are learning that we can be fully ourselves in all situations — at work, as parents, as children, as friends, as lovers.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Being ourselves at work is vital to our health and happiness. Our time is too valuable to sell, at any price.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Each moment is precious. In every moment we have an opportunity to discover, to grow, to speak the truth.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Each moment is ordinary. In every moment we can realize we are fine, just as we are. Nothing else is needed.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We appreciate what is paradoxical. What may at first seem contradictory or beyond our understanding may be true. After all, who is it that is breathing? Who is it that dreams? How is it that these hands effortlessly glide along this keyboard?</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Age is a state of mind. We have the opportunity to grow to be more like ourselves every day.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Developing intimate relationships is a vital part of our lives and our development. Intimacy requires openness, honesty, and vulnerability.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Real, honest open communication is highly valued — and takes real skill and effort.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">When we slow down and learn to trust ourselves, joy arises naturally.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">When we slow down and learn to trust ourselves, creativity arises naturally.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Self-knowledge and understanding require persistence and perseverance. Developing awareness and balance is an ongoing, unending process.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Self-knowledge and understanding require discipline. Whatever path we take requires structure, guidelines, and feedback.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Self-knowledge and understanding require courage.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Diversity is essential. Our differences enrich our lives. There is no "other," just as our right hand is not a stranger to our left hand.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">A simple rule to follow is do good, avoid harm. Of course, this is not simple or easy.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">There are many paths and many practices toward developing awareness and personal growth.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Our everyday lives and activities provide fertile ground for developing growth and understanding.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We can learn to appreciate the gifts we've received from our parents and to forgive them. We understand on a deep level all we have received from the generations that have come before us.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We feel a deep responsibility for our children and for the generations that will come after us.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We can all act as change agents. We can choose to take action in improving and healing our environment and our society. There is no shortage of issues to address, of healing to take place.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We are all change agents on a personal level — we either create healing amongst those we live and work with or we create stress.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We can choose to act as change agents in relation to our communities.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We can choose to act as change agents in relation to our society or on a global level.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Everything we hold as dear will one day change and disappear. Every business that now exists will one day cease. Every person now alive will one day die.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">At a deep level, we realize that we are neither in control nor not in control. Our task is to paddle the boat, with awareness and integrity. The flow of the river is outside our doing.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We all have the power to find peace and happiness in the midst of change and impermanence.</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">We have the power to heal ourselves, our communities, and our planet.</li></ol><div><br /></div><div><span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: verdana; font-size: 10px; font-style: italic; line-height: 18px; ">(Credit: M. Lesser)</span><br /></div></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-52069404006061753592009-02-16T20:27:00.002-06:002009-02-16T20:31:46.137-06:00Staying Focused: 5 Useful Practices<span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: verdana; font-size: 12px; "><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="color: rgb(102, 102, 102);">Wisdom is the art of knowing what to overlook.<br /><span class="Apple-style-span" style="font-weight: normal;">— William James</span></span></span><br /></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">Here are five practices that can be useful tools in reducing distraction or frenetic activity and cultivating focus and concentration. They are surprisingly easy to implement and, almost before you know it, can become positive addictions.<br /></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">1) Appreciate Impermanence</span></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">I saw a cartoon in a recent New Yorker magazine in which two people were finishing their dinners at a Chinese restaurant and had just opened their fortune cookies. One fortune read, “You are going to die.”<br />If you let this fact sink in — that life is short, and we all die — it can actually act as a powerful motivating force to help maintain focus and priorities. Everything changes and is impermanent, so are we fully present and making the most of this fleeting moment? Are we fully aware of what we are doing? Appreciating impermanence clarifies priorities, and it helps us identify any frenetic, shallow and ineffective activities we’re being distracted by. We see clearly the things that exhaust us and distract us from experiencing the blessing and opportunity of each particular day.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">In Zen practice it is often said that the span of our lives is like a dew drop on a leaf — beautiful, precious, and extremely short-lived. Life is remarkably unpredictable. Whatever you want to accomplish, whatever is important to you, do it, and do it now — with as much grace, intensity, and sense of ease as you can muster. None of us knows what life will bring. In any moment everything we take for granted can change. We can use an awareness of change on a deep and wise level to focus our priorities and increase our appreciation of the sheer beauty of existence.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">2: Clarify Aspirations and Create Next Steps</span></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">Make two lists. Title the first one “Aspirations, Plans, and Projects.” Title the column next to this “Next Steps,” and list concrete action steps toward implementation of each aspiration, plan, or project. What is the very first action required toward completing each item, and the step after that and the one after that? In the popular book Getting Things Done, productivity improvement expert David Allen describes the relief that people experience just by listing “next steps” in relation to incomplete projects. The act of identifying clear actions can have a freeing effect and make you feel that you’re making progress (sometimes when mired in setbacks and resistance, project management minutiae, or office politics, this is not so easy to believe). It can be daunting having many projects hanging over your head, so this helps clarify the actions needed to move each project toward completion.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">3: Retrain Pavlov’s Dog</span></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">We react to email and phone calls the way Pavlov’s dog reacted to a bell: we come running at once, tongues wagging. Instead, when approaching the daily onrush of emails, phone calls, and other attention “grabbers,” try these habit diffusers and attention refocusers.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">Emails</span><br />Learn to check your email only two or three times per day — say, at the middle and end of your day, or at the beginning, middle, and end. Granted, sometimes this isn’t realistic. Sometimes we have truly time-sensitive matters to resolve, and we absolutely must read and reply immediately. But these situations are probably fewer than we think, and this type of behavior can be the exception rather than the rule. Actually, despite the prevailing belief that we live in a world where everyone expects quick, near-instantaneous responses, this isn’t true. Most people don’t need responses right away; they just get used to it.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">Phone Calls</span><br />As with email, learn to respond to phone calls or messages only two or thee times per day. Like changing any habit, learning this new behavior takes patience and some repatterning; give yourself a week at least. What you do also depends on your communication needs, but commit to different behavior. Let your message service do its job, so you can do yours. Retrain yourself not to always respond to the ring of the telephone or the vibration of the cell phone. This way, you control your interactions; they don’t control you.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">Think Time</span><br />Schedule think time and reflection time at the beginning and end of each day. This could include a full meditation, or perhaps just silent, focused thoughtfulness over a cup of coffee or tea, while taking a robust walk, or while still lying in bed first thing in the morning. In any case, commit to giving yourself this daily gift of a few moments to sit quietly and gather your thoughts. These can be some of the most pleasurable, precious, and practical moments of the day. They can help to reframe your focus and energy in unexpected ways.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">4: Savor Borrowed Time</span></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">Borrowed time is when we take a brief moment to do nothing; we just breathe and smell the sweetness of the air, think briefly about the task we just completed or are about to start; or listen to the birds flying, one’s heartbeat, or the conversations around us (without participating in them). These refreshing bits of time can be just a minute or two long, and they can happen many times throughout the day if we let them. They are, quite simply, daydreaming, but we shouldn’t view them as guilty indulgences. One helpful result of engaging in the more disciplined practice of meditation or mindfulness is that it makes us more relaxed about “do nothing” time. The quietude is familiar; all of these practices become the pause that refreshes.</p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-weight: bold;">5: Create Your Own Toolkit for Reducing Stress</span></p><p style="font-size: 1em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; ">Experiment with beginning each day, or most days, with meditation practice. Explore routines and rituals to center and relax during the day. Just breathing deeply and from the diaphragm three or four times, several times a day, can be a great start. Commit to stopping: notice the warm power of the sun or the sound of the freezing rain; smile; drink a glass of water; close your eyes for a minute or two; stretch your arms and legs, giving your neck and shoulders or hands a mini-massage; or get up from your desk to chat with a colleague down the hall. It can be any activity that refreshes and makes you pause from the whirlwind of activity you may have (unconsciously) gotten yourself into. If you work at a computer for much of the day, consider setting a timer to remind yourself to stop and stretch at regular intervals.</p><p style="line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; "><span class="Apple-style-span" style="font-style: italic;"><span class="Apple-style-span" style="color: rgb(102, 102, 102);"><span class="Apple-style-span" style="font-size: x-small;">(Credit: M. Lesser)</span></span></span></p></span><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-71899554382415718802008-09-28T12:10:00.006-05:002008-09-28T12:30:57.677-05:00A secret to making money onlineThis is a MUST-SEE for anybody that is running a start-up and/or is thinking about starting one. In this presentation, <a href="http://en.wikipedia.org/wiki/David_Heinemeier_Hansson">David H. Hansson</a> (creator of Ruby on Rails), talks about the lifestyle business with the importance of spending "less" but quality time in developing a good product and generally "enjoying life" doing it!<br /><br />He talks about the over-jealous intent of start-ups to flip the business... the companies are narrowly focused on pumping it up and selling-out in the hope of living a good life after that. Instead the focus has to be on creating a great product that address the pain point businesses have, and doing that better than others. <br /><br /><object width="420" height="276"><param name="movie" value="http://www.omnisio.com/bin/Embed.swf?embedID=dvkTBcd0Sr3yehadbiFy2w"><param name="bgcolor" value="#FFFFFF"><param name="quality" value="high"><param name="allowscriptaccess" value="always"><param name="allowfullscreen" value="true"><embed type="application/x-shockwave-flash" src="http://www.omnisio.com/bin/Embed.swf?embedID=dvkTBcd0Sr3yehadbiFy2w" bgcolor="#FFFFFF" quality="high" allowfullscreen="true" allowscriptaccess="always" width="420" height="276"></embed><noembed>&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;div&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;a href='http://www.omnisio.com'&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;Share and annotate your videos&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; with Omnisio!&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/div&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;</noembed></object><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0tag:blogger.com,1999:blog-8823054.post-90042723121548815542008-04-18T12:58:00.005-05:002008-04-18T13:20:50.920-05:00NYC Freedom Tower plans found in trash (What the *&^#?)<a href="http://upload.wikimedia.org/wikipedia/en/0/0e/Freedom_Tower.jpg"><img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand" alt="" src="http://upload.wikimedia.org/wikipedia/en/0/0e/Freedom_Tower.jpg" border="0" /></a><br /><em>Check out this report from </em><a href="http://www.ap.org/"><em>Associated Press</em></a><em>:</em><br /><br /><strong>A homeless man has come forward with two sets of confidential ground zero blueprints that he says were dumped in a Lower Manhattan trash can. The man brought the <a href="http://en.wikipedia.org/wiki/Freedom_Tower">Freedom Tower</a> plans to the New York Post, which says the 150-page schematic is marked: "Secure Document — Confidential." </strong><br /><br /><em>I can't believe this!!! You must be freakin' kiddin' me. Ever heard of a shredder you freakin' moron... </em><br /><br />The documents are dated Oct. 5, 2007. They contain plans for each floor, the thickness of the concrete-core wall, and the location of air ducts, elevators, electrical systems and support columns. The agency that owns the World Trade Center site, the Port Authority of New York and New Jersey, calls it a serious security lapse.<br /><br /><em>Now what are they going to do? Re-do the whole thing from scratch? How many tax dollars have been wasted by this stupidity??? How many other secure and confidential blueprints are there in the trash cans around the country???? What if they get in the wrong hands??? Then what??!!! </em><div class="blogger-post-footer">Thanks - Chandan Chopra</div>Chandanhttp://www.blogger.com/profile/17885270034728354108noreply@blogger.com0