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

<channel>
	<title>flamelab.de&#187;  | flamelab.de</title>
	<atom:link href="http://www.flamelab.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flamelab.de</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 16 May 2010 13:46:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Analytics Advanced Tracking</title>
		<link>http://www.flamelab.de/article/google-analytics-advanced-tracking/</link>
		<comments>http://www.flamelab.de/article/google-analytics-advanced-tracking/#comments</comments>
		<pubDate>Sun, 16 May 2010 13:46:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Business]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[online marketing]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/?p=382</guid>
		<description><![CDATA[
Google Analytics is quite the most popular analytics software available. It offers a lot more than just an overview about the number of visitors and pageviews. Getting an expert on the topic requires some time for reading and playing around with all the functionalities the tool has to offer. Event Tracking, Site Search, Ecommerce Tracking [...]]]></description>
			<content:encoded><![CDATA[<p>
Google Analytics is quite the most popular analytics software available. It offers a lot more than just an overview about the number of visitors and pageviews. Getting an expert on the topic requires some time for reading and playing around with all the functionalities the tool has to offer. Event Tracking, Site Search, Ecommerce Tracking and Custom Variables are features that make Google Analytics more customizable and help to fit the report to a sites special needs.<span id="more-382"></span>
</p>
<h3>General Resources</h3>
<p>
The Google Analytics Developer Docs provide <a href="http://code.google.com/intl/de-DE/apis/analytics/docs/">comprehensive information about Google Analytics</a> for both, beginners and experts while <a href="http://analytics.blogspot.com/">news, useful hints, tips and tricks</a> about the tool are provided on the coresponding blog. The Analytics Channel on YouTube offers a bunch of clips, including the well known <a href="http://www.youtube.com/user/googleanalytics">Web Analytics TV casts with Avinash Kaushik and Nick Mihailovski</a> &#8211; a must see for web analytics experts (and those to become).
</p>
<h3>Event Tracking</h3>
<p>
Event Tracking is a method available that can be used to record user interaction with website elements, such as a Flash-driven menu system, outbound or download links. This is accomplished by attaching the  <em>_trackEvent()</em> method call to the particular UI element that needs to be tracked (e.g. within the <em>onclick</em> function of an anchor element). When used this way, all user activity on such elements is calculated and displayed as Events in the Analytics reporting interface. Additionally, pageview calculations are unaffected by user activity tracked using the Event Tracking method. The design model for Event Tracking is highly flexible, and it an be extended well beyond the common model of user-triggered events. Events can be classified by category, action, event and value which requires a clean analysis strategy and planing about how the tracking should be integrated and how the metrics should be calculated later on.
</p>
<h3>Site Search</h3>
<p>
With Site Search, you can see how people search your site once they are already on it. There is no additional tracking code necessary. The feature can be activated within the Google Analytics interface by just setting the search query parameter (a simple request parameter reflecting the users search term within the search context). The report not only shows the site users initial searches, but how they attempted to refine searches when they didn&#8217;t find what they were looking for. You can see which pages they searched from and where they ended up and how site search correlates with conversion an other activities.
</p>
<h3>Ecommerce Tracking</h3>
<p>
If you run a ecommerce site, the Ecommerce Tracking feature will allow you to track and analyse ecommerce activity. Basically, it is based on the same principal as standard pageview tracking. JavaScript code sends some data to a Google Analytics server by requesting an invisible gif file. The big difference is that ecommerce data is sent rather than pageview data. The data transmitted is stored in a transaction object, containing all the related information about a single transaction, such as the order ID, shipping charges, and billing address. This transaction object itself contains several orderline items and the details about a particular item, such as SKU, price, category, and quantity.  As with the Site Search feature, Ecommerce Tracking must be enabled in the profile&#8217;s settings.
</p>
<p>
This feature can not only be used for tracking real commerce activities,  but also for tracking conversions (as Google Analytics still lacks a pure conversion tracking). For example, the report features &#8220;Days to Purchase&#8221;, &#8220;Visits to Purchase&#8221; or &#8220;Product Performance&#8221; can simply be mapped to activities like ordering a newsletter, subscribe to a feed or getting in contact. Knowing how many visits to a site it takes to convert a visitor in doing some action is useful and tracking those informations is very simple. Just use fixed values for your items and transactions so all activities get summed up. E.g. track an &#8220;product&#8221; item that is called &#8220;Newsletter&#8221; with a fixed price, category and quantity whenever a user submits a registration form.
</p>
<h3>Custom Variables</h3>
<p>
Custom variables are name-value pair tags that can be added to a sites tracking code in order to refine tracking. With custom variables, additional segments, others then the ones already provided by Google Analytics, can be applied for tracking and help to add more information to Google Anylatics. They can be used for content categorization, segmenting members from non-members, tracking campaigns a visitor sees prior to converting and many more. Custom Variables can be used in three different scopes:
</p>
<ul>
<li>The <strong>visitor-level</strong> is active for the live of the visitor cookie and helps to distinguish categories of visitors across multiple sessions. E.g. you can track demographic information, customer type data (customer, subscriber etc.) or source information (where did the visitor come from).</li>
<li>The <strong>session-level</strong> scope is active for a visitors session and allows to distinguish different visitor experiences across sessions. E.g. a custom variable can be scoped to the session level for user login status or for recording that the visitor viewed a special section of the site. </li>
<li>The <strong>page-level</strong> scope is active for single pageviews, events or transaction calls. It is used to define a collection of page-level activities by users. E.g. on a blog website, this level can be used to track the category an article is assigned to (to get the most popular categories). This scope might collide with Event Tracking, so a good planing on how to use both features is required.</li>
</ul>
<p>
Custom Variables are tracked by using the <em>_setCustomVar()</em> method. It requires a slot-id, a name, a value and a scope definition (visitor, session, page).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/google-analytics-advanced-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Aspects How Search Engines Evaluate Links</title>
		<link>http://www.flamelab.de/article/10-aspects-how-search-engines-evaluate-links/</link>
		<comments>http://www.flamelab.de/article/10-aspects-how-search-engines-evaluate-links/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 17:23:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Business]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/?p=325</guid>
		<description><![CDATA[
The classic and often discussed PageRank isn&#8217;t the only factor that is used by search engines to evaluate links. There are many aspects involved in determine the value and some influence a link&#8217;s value more than others. Within the SEO community, there are 10 factors that are commonly regarded as important when talking about how [...]]]></description>
			<content:encoded><![CDATA[<p>
The classic and often discussed PageRank isn&#8217;t the only factor that is used by search engines to evaluate links. There are many aspects involved in determine the value and some influence a link&#8217;s value more than others. Within the SEO community, there are 10 factors that are commonly regarded as important when talking about how search engines judge links.<span id="more-325"></span>
</p>
<h3>Relevance</h3>
<p>
Links from pages that cover the same topic as the target page, or are closely related, are worth more than links from unrelated pages. The relevance is always determined in the context of the search query. See the article on <a href="/article/relevance-and-importance-of-search-results/">Relevance and Importance of Search Results</a> about how this aspect is judged by Google and others.
</p>
<h3>Authority</h3>
<p>
Taken relevance a step further is the aspect of authority. Each topic a user can search on has some authority sites that are specific to that topic (the <em>most</em> relevant sites). Authorities are sites that are linked to by most of the sites relevant to a particular content. Also involved is the concept of hubs, sites that link to most of the important sites which are relevant to that topic. So links from sites that search engines consider authoritative are evaluated very high.
</p>
<h3>Trust</h3>
<p>
Trust takes into account how likely the linking page is infiltrated by spammers. This trust measurement is determined on how many clicks away the site is from so called seed sites, sites that are manually picked and rated as trustworthy. The more clicks a site is away, the less trust it earns, the lower is its <a href="http://www.vldb.org/conf/2004/RS15P3.PDF">TrustRank</a>. Generally, this factor is difficult to measure.
</p>
<h3>Anchor text</h3>
<p>
The anchor text the linking page uses is a powerful factor for search engines to determine the relevance of the target page. Anchor text helps the engines to understand what the link is about. So a keyword rich text adds much to the links value.
</p>
<h3>Independence</h3>
<p>
Links from independent, third-party sites are evaluated much higher than internal links from your own site. They are seen as independent editorial votes for your content. Search engines also consider so called link cluster building: sites, that heavily cross-link to each other are seen as one site and the links are treated as internal links (and therefore evaluated less).
</p>
<h3>Cumulation</h3>
<p>
Search engines do not count multiple links from a domain (or link cluster) cumulatively. So linking to a target site on every page does not have any additional effect. Ten links from ten different sites are evaluated higher than ten links from one site.
</p>
<h3>Diversity</h3>
<p>
Getting links from different page types, like blogs, social media sites, bookmarking sites, adds to the target page&#8217;s diversification. Engines are constantly upgrading the algorithms used for link evaluation. So if all links come from blog-like sites and the engines decide to reduce the value of blog links, your rankings will be influenced strongly. Another aspect of diversity is that gaining links from different types looks more balanced to the search engines and therefore more natural.
</p>
<h3>Temporal patterns</h3>
<p>
Temporal factors include when the target site gets new links, how long the links existed and how quickly they were added. Links that exist for quite a long time might become less valuable, depending on the trust and authority of the linking site. Interesting for search engines is the period within which new links appear and whether the site jumps from one link per week up to 10 per day. This might be a signal for the search engines to take a closer look and to decide wether the link building is correct.
</p>
<h3>Context</h3>
<p>
Search engines also examine the context where the link is placed. Do other, nearby placed links point to content related pages? Is the link placed in the body of the content or in a link section at the bottom of the page (prominence)? Is the content related to the targets page content? Does the nearby text seem to be related to the anchor text (proximity)? Does the overall site context fit or is the link only placed in a small fitting section?
</p>
<h3>Domain</h3>
<p>
Relevance and authority is not determined on per site basis. A section under <em>example.com/seo</em> might be evaluated authoritative on the topic of seo, but <em>example.com/flex</em> might not be for the flex topic. Every site and the pages it has are judged on topic-by-topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/10-aspects-how-search-engines-evaluate-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relevance and Importance of Search Results</title>
		<link>http://www.flamelab.de/article/relevance-and-importance-of-search-results/</link>
		<comments>http://www.flamelab.de/article/relevance-and-importance-of-search-results/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:20:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Business]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/?p=270</guid>
		<description><![CDATA[Whenever the user hits the search button on Google, Bing or Yahoo, the search engine returns a bunch websites that fit the user&#8217;s search term. In order to determine these results, the search engine needs to scan through its datastore of billions of websites and do two things: find those results that are relevant for [...]]]></description>
			<content:encoded><![CDATA[<p>Whenever the user hits the search button on Google, Bing or Yahoo, the search engine returns a bunch websites that fit the user&#8217;s search term. In order to determine these results, the search engine needs to scan through its datastore of billions of websites and do two things: find those results that are relevant for the user and his term and rank those pages by their perceived importance.<span id="more-270"></span></p>
<blockquote><p>Relevance describes the factor to which the documents and their content match the user&#8217;s search term and intention. Importance on the other hand is a way to determine how the relevant pages rank.</p>
</blockquote>
<p>To determine relevance and importance, search engines rely on sophisticated algorithms for information retrieval (IR): document analysis (including semantic connectivity) and link analysis.</p>
<h3>Document analysis and semantic connectivity</h3>
<p>In document analysis, the search engine searches for the relevant terms in important structural elements of the document like the title, the metadata, heading tags and of course the text body. As simple, textual analysis is not enough, the engines also look at semantic connectivity. This refers to phrases or words that are typically associated with each other like <em>browser</em> and <em>internet</em>. Out of this the engines build up their own dictionary and thesaurus to determine related terms and topics. Based on this databases they use algorithms based on fuzzy logic to connect terms and <em>understand</em> pages and sites more clearly. This is done by measuring how often and in what contexts some terms are used together.</p>
<p>For example, by analysing the data the engine captured by crawling billions of pages, it would recognize, that the term <em>photography trip</em> often include <em>landscape</em>, <em>architecture</em> and <em>travel</em>.</p>
<h3>Link analysis</h3>
<p>By using link analysis, search engines measure which pages or sites link to each other and if these sites are trustworthy, based on the authority of sites linking to them. Link analysis does not only count the number of links &#8211; links form highly authoritative sites count more than links of lesser authority.</p>
<p>Another aspect of link weighting is the so called <em>link neighborhood</em>. Basically your site is placed in a neighborhood about the topic of your content. The number and quality of links to your site form sites in your neighborhood says something about how important your site is to that topic. So links from nonrelevant sites do not weigh as much as those from relevant ones.</p>
<p>The anchor text which is used linking to your page also plays a relevant role as it has a strong impact on determine relevant keywords. So a keyword rich link text has more value than the often seen &#8220;click here&#8221; (but keep in mind: search engines also take a look at the target&#8217;s content and if it fits the anchor text).</p>
<p><strong>To sum up</strong>: Search engines can use semantic analysis to identify relevant web pages that focus on a certain topic matching the user&#8217;s search query. Link analysis on the other hand helps to determine which pages have the most links from other sites focusing on the same topic. These sites are most likely to be more authoritative on the topic than others with less links and are therefore ranked higher.</p>
<p>Of course there are a lot <a href="http://www.seomoz.org/article/search-ranking-factors">more ranking factors</a> that influence the ranking of pages for a search query &#8211; but content and link analysis form the general idea behind most of them to determine the relevance and importance of search results.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/relevance-and-importance-of-search-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Defining the System Context</title>
		<link>http://www.flamelab.de/article/defining-the-system-context/</link>
		<comments>http://www.flamelab.de/article/defining-the-system-context/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 20:22:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Business]]></category>
		<category><![CDATA[application design]]></category>
		<category><![CDATA[requirements engineering]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/defining-the-system-context.php</guid>
		<description><![CDATA[Requirements for a system don&#8217;t appear from nowhere but must be identified systematically. The successful definition of the systems border and the resulting identification of relevant context aspects build the foundation for a professional evaluation of the requirements for the new system. If the context is not defined properly within the process of requirements engineering, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/article/requirements-engineering-basics">Requirements</a> for a system don&#8217;t appear from nowhere but must be identified systematically. The successful definition of the systems border and the resulting identification of relevant context aspects build the foundation for a professional evaluation of the requirements for the new system. If the context is not defined properly within the process of requirements engineering, the system relies on incomplete and inaccurate assumptions which might lead to a faulty behaviour.<span id="more-20"></span></p>
<p>The Goal of the context analysis is to separate the system from its environment and highlight those parts which are relevant and affect the requirements. Therefore, assumptions about how the future system will be integrated in its reality must be made. In order to fully and accurately identify the requirements, it&#8217;s necessary to find all relations between the system and its future environment.</p>
<h3>System and context border</h3>
<p>For defining the system context, it&#8217;s necessary to border it form the system and the irrelevant part of reality. Through system and context borders, the system context is defined. It covers all aspects which are relevant for the requirements and can not be designed during the development of the system. Therefore, two processes are defined:</p>
<ul>
<li> <strong>Defining the system border</strong>: This process determines which aspects will be covered by the new system (the systems scope) and which aspects are part of the environment. All elements within the scope can be influenced and designed during development. Within the border, there might be a hardware and software based entity. Interfaces to external systems form the border and offer points for interaction.</li>
<li> <strong>Defining the context border</strong>: This process determines the border of the context to the irrelevant reality by analysing which parts of the environment have a relationship with the new system. Entities within the context are typical sources for requirements. This might be stakeholders, external systems, existing processes, events and actions or legal definitions</li>
</ul>
<h3>Twilight area</h3>
<p>Both bounderies mostly become precise not until the end of the requirements engineering process. Afore, some requirements are known only partial or not at all. This fuzziness results in a twilight zone that exists in different times throughout the engineering process. For example, at an early stage of the project, it might be unknown if a defined functionality must be implemented by the system or if it will be offered by an external system.</p>
<p>For the system border, this area might flow, considering aspects that are assigned to the context first and then move into the system itself. For the context border, this area flows if it&#8217;s not clear if certain environmental aspects influence the system or if they can be considered as irrelevant.</p>
<h3>Documenting the context</h3>
<p>Typically, the system context is documented by using use-case, data flow or class models. All three illustrate the different actors in the environment and their interaction with the system. For a complete documentation, different forms are used, highlighting changing perspecitves on the system and its environment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/defining-the-system-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Page Search Engine Optimization</title>
		<link>http://www.flamelab.de/article/on-page-search-engine-optimization/</link>
		<comments>http://www.flamelab.de/article/on-page-search-engine-optimization/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 20:55:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Business]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/on-page-search-engine-optimization.php</guid>
		<description><![CDATA[Search engine optimization (SEO) has become an important business for improving a websites performance and interaction with both, search engines and users. SEO is mostly about making some small improvements and modifications to certain parts of a website. Although these steps might seem like incremental tasks each, when they are combined, they can have noticeable [...]]]></description>
			<content:encoded><![CDATA[<p>Search engine optimization (SEO) has become an <a href="http://en.wikipedia.org/wiki/Search_engine_optimization" target="_blank">important business</a> for improving a websites performance and interaction with both, search engines and users. SEO is mostly about making some small improvements and modifications to certain parts of a website. Although these steps might seem like incremental tasks each, when they are combined, they can have noticeable advancement on both, the site&#8217;s user experience and the performance in organic search results.<span id="more-21"></span></p>
<h3>Content and keywords</h3>
<p>Offering top quality and useful content will influence a website more than any other optimization technique. Fresh and unique content will keep your visitors comming back an bring new ones to your site. It&#8217;s important to take a second and think about relevant keywords a user might search for and which could be associated with your content. These keywords should be used in the text &#8211; but spammming must be avoided.</p>
<p>Content must be organized and split up to several blocks, using headlines and paragraphs. This helps users find the content they are searching for faster. Well written and structured text that is easy to follow is more likely to be linked from other resources like blog posts or social media services &#8211; helping to build the site&#8217;s reputation.</p>
<h3>Optimizing page elements</h3>
<p>Webpages can also be optimized by turing one&#8217;s attention to single page elements. To name the most important:</p>
<ul>
<li><strong>Headeline tags</strong>: Besides structuring a text with headlines has a high impact on its <a href="http://www.webcredible.co.uk/user-friendly-resources/web-usability/web-page-readability.shtml">readability</a>, it helps search engines to better &#8220;understand&#8221; the content and improve the keyword association. Headlines should be strucured hierachical to underline the importance of sections. and aid the user aand bots while navigating through the content.</li>
<li><strong>Images</strong>: Search engines can not see the content of images, so it is important to tell them about. What bots can read are the image url and the <tt>alt</tt>-attributes text, which should describe the image brief and descriptitve. Cryptical names do not carry any useful information.</li>
<li><strong>Page titles</strong>: The <tt>title</tt>-tag of a website should contain an accurate title, telling visitors about the page topic. They are also usually shown in the first line of the search result. and therefore must communicate and describe the content briefly. To enable users and search engines to distingush different pages, the title must also be unique within the site.</li>
<li><strong>Meta tag</strong>: A <tt>description</tt>-meta tage gives search engines a deeper summary what the content is about. Whereas the <tt>title</tt> offers only space for a few words, the meta tag may be a sentence or even a short paragraph. Like the page title, the description must be accurate and unique.</li>
<li><strong>Nofollow links</strong>: Be aware of using the <tt><a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=96569">rel="nofollow"</a></tt> attribute with links. This attribute tells search engines that your page&#8217;s reputation and popularity should not be passed to the page behind the link. It&#8217;s used to prevent the impact of spam comments on search results and <a href="http://en.wikipedia.org/wiki/PageRank">page ranking</a>.</li>
<li><strong>Anchor text</strong>: Anchor text should speak for them self, giving users a hint what they can expect on the selected page. It isused as a key indicator for identifying the topics of the pages they it is linking to.</li>
</ul>
<h3>URL structure and site navigation</h3>
<p>Descriptive filenames and simple directory structures for webpages improve crawling the documents by search engines. If the URL contains relevant words, it provides users and search bots with more information about the content. This also has some positive impact for visitors as they get a hint where they are on the website. Each page should also have one unique URL linking to it. <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=66359">Duplicate content</a> affects the ranking of a page negatively.</p>
<p>As the navigation is important to make users find the desired content quickly, it gives a search engine a hint about what role a page plays in the whole sites context. A naturally flowing hierarchy makes it easier for visitors to navigate from general to more specific content. Using text links for those navigation paths makes it easier for bots crawling and understanding the site.</p>
<p>HTML sitemaps for users and <a href="http://www.sitemaps.org/">XML Sitemaps</a> for search engines are an easy way informing visotors about possible content and ensures that bots and users discover the pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/on-page-search-engine-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log Package for Flex and Air Applications</title>
		<link>http://www.flamelab.de/article/log-package-for-flex-and-air-applications/</link>
		<comments>http://www.flamelab.de/article/log-package-for-flex-and-air-applications/#comments</comments>
		<pubDate>Tue, 26 May 2009 17:52:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/actionscript_log_package_for_flex_and_air_applications.php</guid>
		<description><![CDATA[The ASLib de.flamelab.log package provides classes and functionalities for general purpose logging. It can be regarded as an alternative to the Flex build in mx.loggging package as it offers a different approach, similar to the Zend_Log component in PHP. It can be used in any ActionScript based project and is therefore not limited to Flex [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="/projects/aslib/documentation/" target="_blank">ASLib </a><tt>de.flamelab.log</tt> package provides classes and functionalities for general purpose logging. It can be regarded as an alternative to the Flex build in <tt><a href="http://livedocs.adobe.com/flex/3/langref/mx/logging/package-detail.html" target="_blank">mx.loggging</a></tt> package as it offers a different approach, similar to the Zend_Log component in PHP. It can be used in any ActionScript based project and is therefore not limited to Flex applications.<span id="more-111"></span></p>
<h3>Overview</h3>
<p>The package supports multiple log backends and formatting and filtering messages sent to the log. These functionality is devided into to the following objects:</p>
<ul>
<li>A <strong>Log</strong> (<tt>de.flamelab.log.Log</tt>) represents the basic object. An application can have as many Log objects as you like. Log objects can be sotred in the LogRegistry</li>
<li>A <strong>Writer</strong> (<tt>de.flamelab.log.AbstractLogWriter</tt>) implements a concrete logging mechanism and is therfore responsible for saving the message to a storage. New Writers can be added by inheriting and implementing the abstract base class.</li>
<li>A <strong>Filter</strong> (<tt>de.flamelab.log.ILogFilter</tt>) blocks data from being logged. A filter is applied to a Writer object and can be chained with other filters.</li>
<li>A <strong>Formatter</strong>(<tt>de.flamelab.log.ILogFormatter</tt>) is used to format the log messages before they are written by a Writer. Each Writer has excatly one Formatter.</li>
<li>A <strong>LogRegistry</strong> (<tt>de.flamelab.log.LogRegistry</tt>) can be used to gain convenient access to different Log instances among different classes.</li>
<li> A <strong>LogEvent</strong> (<tt>de.flamelab.log.LogEvent</tt>) is used for encapsulating the necessary log information an is dispatched to all assigned Writers of a Log object.</li>
</ul>
<h3>Logging messages</h3>
<p>To start logging, a Writer intance must be passed to a Log instance and the <tt>log()</tt> Method can be called on the Log. Additionally, the Log instance can be stored in the LogRegistry for further usage. Writer instances can be fetched through a static method of a LogFactory. A Log instance must at least have one Writer assigned with the <tt>addWriter()</tt> method to it to work properly. If multiple Writers are assigned, each Writer recieves the log data.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">logger = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Log</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
LogRegistry.<span style="color: #006600;">setLog</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'testlogger'</span>, logger<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> write:AbstractLogWriter = LogFactory.<span style="color: #006600;">getWriter</span><span style="color: #66cc66;">&#40;</span>LogFactory.<span style="color: #006600;">FIREBUG</span><span style="color: #66cc66;">&#41;</span>;<br />
LogRegistry.<span style="color: #006600;">getLog</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'testlogger'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addWriter</span><span style="color: #66cc66;">&#40;</span>writer<span style="color: #66cc66;">&#41;</span>;<br />
logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;emergency log message&quot;</span>, <span style="color: #0066CC;">Log</span>.<span style="color: #006600;">EMERG</span><span style="color: #66cc66;">&#41;</span>;</div></div>
<p>The <tt>log</tt> method accepts two arguments, the log message and a priority. The Log class defines the following priorites, based on the BSD syslog protocol, described in <a href="http://tools.ietf.org/html/rfc3164" target="_blank">RFC-3164</a>:</p>
<ul>
<li>EMERG &#8211; Emergency: system is unusable</li>
<li>ALERT  &#8211; Alert: action must be taken immediately</li>
<li>CRIT &#8211; Critical: critical conditions</li>
<li>ERR &#8211; Error: error conditions</li>
<li>WARN &#8211; Warning: warning conditions</li>
<li>NOTICE &#8211;  Notice: normal but significant condition</li>
<li>INFO &#8211; Informational: informational messages</li>
<li>DEBUG &#8211; Debug: debug messages</li>
</ul>
<p>By calling the <tt>log()</tt> method, a LogEvent instance is created an populated with all necessary data describing the log action. It is passed to all Writer objects and its creation is completely transparent.</p>
<h3>Writers</h3>
<p>A Writer is an object which responsibility is to record the log data to a defined storage. All Writer inherit and implement the abstract <tt>AbstractLogWriter</tt> class. Each Writer can be instantiated directly or it can be fetched through the <tt>LogFactory</tt>. The package already has the following Writer objects implemented:</p>
<ul>
<li><strong>LogWriterFirebug</strong>: Writes the data to the <a href="http://getfirebug.com/" target="_blank">Firebug Console</a>.</li>
<li><strong>LogWriterAirFile</strong>: Uses the <tt><a href="http://help.adobe.com/en_US/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7db3.html" target="_blank">FileStream</a></tt> object to write log messages to a defined logfile on the clients&#8217; filesystem.</li>
<li><strong>LogWriterAirSqlite</strong>: Uses <a href="http://www.peterelst.com/blog/2008/04/07/introduction-to-sqlite-in-adobe-air/" target="_blank">Airs&#8217; SQLite</a> ability and stores messages in a automatically created, local database table.</li>
</ul>
<p>All Writers are meant for logging certain application activities or errors during application runtime, not only while developing or debugging.</p>
<h3>Formatters</h3>
<p>A Formatter takes an LogEvent and formates its data in a predefined manner for storage. Some Writers are not line-oriented and cannot use a Formatter. The <tt>LogWriterAirSqlite</tt> for example takes the data from the event and inserts its values into the database directly.</p>
<p>Each Formatter must implement the <tt>ILogFormatter</tt> interface. The package includes a basic <tt>LogFormatterSimple</tt> that uses a user-defined pattern for arranging the data provided by the LogEvent in a message. It is also used for default formatting when no Formatter is specified. A Formatter is set on an individual Writer by using the <tt>setFormatter()</tt> method.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">logger = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Log</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> writer:AbstractLogWriter = LogFactory.<span style="color: #006600;">getWriter</span><span style="color: #66cc66;">&#40;</span><br />
LogFactory.<span style="color: #006600;">AIRFILE</span>,<br />
<span style="color: #66cc66;">&#123;</span>uri:<span style="color: #ff0000;">&quot;logs/log.txt&quot;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> format:LogFormatterSimple = <span style="color: #000000; font-weight: bold;">new</span> LogFormatterSimple<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;%timestamp%:%message%&quot;</span><span style="color: #66cc66;">&#41;</span>;<br />
writer.<span style="color: #006600;">setFormatter</span><span style="color: #66cc66;">&#40;</span>format<span style="color: #66cc66;">&#41;</span>;<br />
logger.<span style="color: #006600;">addWriter</span><span style="color: #66cc66;">&#40;</span>writer<span style="color: #66cc66;">&#41;</span>;<br />
logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;error log message&quot;</span>, <span style="color: #0066CC;">Log</span>.<span style="color: #006600;">ERR</span><span style="color: #66cc66;">&#41;</span>;</div></div>
<h3>Filters</h3>
<p>A Filter objects decides if a message should be stored or blocked  from being written to the log. The <tt>addFilter()</tt> method is used to add a Filter to a Writer. They can be chained, as multiple Filters can be applied.<br />
Each Filter mus implement the <tt>ILofFilter</tt> interface. The package comes with two predefined classes:</p>
<ul>
<li><strong>LogFilterPriority</strong>: Only messages with a priority smaller or equal the given value are logged.</li>
<li><strong>LogFilterRegex</strong>: Uses a regular expression to decide whether a message should be blocked.</li>
</ul>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">logger = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Log</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> writer:AbstractLogWriter = LogFactory.<span style="color: #006600;">getWriter</span><span style="color: #66cc66;">&#40;</span><br />
LogFactory.<span style="color: #006600;">AIRFILE</span>,<br />
<span style="color: #66cc66;">&#123;</span>uri:<span style="color: #ff0000;">&quot;logs/log.txt&quot;</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> prioFilter:LogFilterPriority = <span style="color: #000000; font-weight: bold;">new</span> LogFilterPriority<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Log</span>.<span style="color: #006600;">WARN</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> regex:RegExp = <span style="color: #66cc66;">/</span>.<span style="color: #66cc66;">*</span>?<span style="color: #66cc66;">&#40;</span>critical<span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">*</span>?<span style="color: #66cc66;">/</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> regexFilter:LogFilterRegex = <span style="color: #000000; font-weight: bold;">new</span> LogFilterRegex<span style="color: #66cc66;">&#40;</span>regex<span style="color: #66cc66;">&#41;</span>;<br />
writerDB.<span style="color: #006600;">addFilter</span><span style="color: #66cc66;">&#40;</span>prioFilter<span style="color: #66cc66;">&#41;</span>;<br />
writerDB.<span style="color: #006600;">addFilter</span><span style="color: #66cc66;">&#40;</span>regexFilter<span style="color: #66cc66;">&#41;</span>;<br />
logger.<span style="color: #006600;">addWriter</span><span style="color: #66cc66;">&#40;</span>writer<span style="color: #66cc66;">&#41;</span>;<br />
logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;error log message&quot;</span>, <span style="color: #0066CC;">Log</span>.<span style="color: #006600;">ERR</span><span style="color: #66cc66;">&#41;</span>;</div></div>
<p>The package is part of the <a href="/projects/aslib/documentation/">ASLib</a>. Get the <a href="http://www.flamelab.de/downloads/aslib.zip">ASLib</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/log-package-for-flex-and-air-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Requirements Engineering Basics</title>
		<link>http://www.flamelab.de/article/requirements-engineering-basics/</link>
		<comments>http://www.flamelab.de/article/requirements-engineering-basics/#comments</comments>
		<pubDate>Thu, 07 May 2009 09:34:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Business]]></category>
		<category><![CDATA[application design]]></category>
		<category><![CDATA[requirements engineering]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/requirements-engineering-basics.php</guid>
		<description><![CDATA[The importance of Requirements Engineering (RM) for the succesfull, customer satisfying development of software systems can not be ignored by now. It must be considered as an key discipline of system development and is material for the success of a project.
Definition and tasks
To make a go of a development projekt, it is important to know [...]]]></description>
			<content:encoded><![CDATA[<p>The importance of <a href="http://en.wikipedia.org/wiki/Requirements" target="_blank">Requirements Engineering (RM)</a> for the succesfull, customer satisfying development of software systems can not be ignored by now. It must be considered as an key discipline of system development and is material for the success of a project.<span id="more-22"></span></p>
<h3>Definition and tasks</h3>
<p>To make a go of a development projekt, it is important to know what the concrete requirements are &#8211; and they must be documented in an adequate manner. But what is a requirement exactly?<br />
It is a condition, which is required by an user (person or system) to solve a certain task or problem or to reach a goal.</p>
<p>On of the central aspects are the <strong>stakeholders</strong>. They are those persons who influence the requirements directly or inderictly and serve as a source for information. Ignoring a stakeholder often leads to wrong or incomplete definitions.</p>
<p>The first step in the process of requirements engineering is to <strong>identify</strong> the concerns of all stakeholders and possible other sources. There are several techniques to get the necessary informations through interviews, creativity sessions, out of analysing existing processes or by monitoring users and systems.</p>
<p>After gathering all requirements, they must be <strong>documented</strong> in a structured and adequate manner. A documentation or specification can contain natural language based prose or a more formal notation like <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">UML</a> diagrams.</p>
<p>Documented requirements must be <strong>validated</strong> and verified to play safe they fit all quality criteria. After all points are accepted by all stakeholders, the specification can be considered as complete and passed on to the system architects and developers.</p>
<p>The process of <strong>managing</strong> the requirements spins over the complete specification and development process. It enfolds all necessary measures for structuring and preparing the requirements.</p>
<h3>The Requirements Engineer</h3>
<p>The Requirements Engineer is at the center of events. He is in close contact to all stakeholders and has the possibility and responsibility to learn the ropes of the systems realm. One of his most important tasks is to recognize the needs of all involved parties and prepare and document them for the project. His job can be seen as a kind of interpreter for transforming the stakeholders requirements to a level that fits the architects and developers language.</p>
<p>To master this task, the engineer needs a lot more than just technical and methodical skills: <strong>Analytical thinking</strong> for getting into unknown topics fast. <strong>Empathy</strong> to recognize what the stakeholders <em>really</em> want. <strong>Communication skills</strong>, as gathering requirements and managing them is all about listening and asking the right questins at the right time. <strong>Solving conflicts</strong> within stakeholders and other involved parites. <strong>Beeing an advocat</strong> for the requirements and represent them to architects and the management board.</p>
<h3>Classification of requirements</h3>
<p>Basically, there are three different types of requirements:</p>
<ol>
<li><strong>Functional requirements</strong> define the functionality the system must provide to its users or external systems. Typically, they are subdivided into functional, beahvioral and structural requirments.</li>
<li><strong>Quality requirements</strong> determine quality based criteria. They influence the shape of the system and usually have some impact on the functional points and reference performance, availability, scalability, portability, reliability and usability issues. They are often described as non-functional requirements.</li>
<li><strong>Framework requirements</strong> can not be influenced by the projects participants. They apply to neighborhood systems or the process as a whole. Compared to functional and quality requirements, they will not be implemented but constrain the development and architectural decisions.</li>
</ol>
<p>There are also more classifications based on attributes, priorisation or the level of detail.</p>
<h3>Embedded engineering and management</h3>
<p>Over the entire term of a development process, the requirements specification is the basis for different tasks:</p>
<ul>
<li><strong>Planning</strong>: Milestones and work packages can be defined based on the specification.</li>
<li><strong>Architectural design</strong>: The detailed requirements (and the constraints) are used for designing the systems architecture.</li>
<li><strong>Implementation</strong>: Based on the design, the software is implemented</li>
<li><strong>Testing</strong>: Testcases are developed, following the requirements.</li>
<li><strong>Change management</strong>: If change requests appear, their impact on the system can be estimated while analysing the requirements.</li>
<li><strong>System usage, maintenance</strong>: Probelms that occur after releasing the system can be analysed according to the specification to determine whether it is an user, requriement or implementation error.</li>
<li><strong>Legal issues</strong>: The requirements specification ca be used as the main object of agreement between the client and the contractor.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/requirements-engineering-basics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASDoc with Ant in Eclipse</title>
		<link>http://www.flamelab.de/article/asdoc-with-ant-in-eclipse/</link>
		<comments>http://www.flamelab.de/article/asdoc-with-ant-in-eclipse/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 21:47:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Playground]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/asdoc-with-ant-in-eclipse.php</guid>
		<description><![CDATA[The Flex SDK offers a commandline interface for automatically generating documentation. With ASDoc you can easily create a HTML based documentation for your ActionScript projects and libraries if the code follows the doc style documentation standard. By adding an Ant script to the ActionScript, Flex or Air project in Eclipse, this task can be simplyfied [...]]]></description>
			<content:encoded><![CDATA[<p>The Flex SDK offers a commandline interface for automatically generating documentation. With <a href="http://livedocs.adobe.com/flex/3/html/asdoc_1.html" target="_blank">ASDoc</a> you can easily create a HTML based documentation for your ActionScript projects and libraries if the code follows the <a href="http://livedocs.adobe.com/flex/3/html/asdoc_3.html#189145" target="_blank">doc style documentation standard</a>. By adding an Ant script to the ActionScript, Flex or Air project in Eclipse, this task can be simplyfied and automated.<span id="more-83"></span></p>
<p>The following Ant script shows an example configuration for a task running on Windows. There are a few things that have to be considered:</p>
<ul>
<li>ASDoc does not recognize the AIR libraries (the airframework.swc and airglobal.swc files) automatically. To make the tool find the classes they have to be added with the <tt>-library-path</tt> option.</li>
<li>To run the task on Windows, the executable path must link to the <tt>asdoc.exe</tt> executable in the SDK directory.</li>
<li>The documentation can be customized with the <tt>-package</tt>, <tt>-footer</tt>, <tt>-main-title</tt> and <tt>-window-title</tt> option</li>
</ul>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ASDoc&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;asdoc&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- configuration settings --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;FLEX&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;pathtosdk&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TEMPLATES&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${FLEX}\asdoctemplates&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;PROJECT_DIR&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;pathtoproject&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;LIB&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${PROJECT_DIR}libs&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;DOC_SOURCE&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${PROJECT_DIR}\srcfordocumentation&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;OUTPUT&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${PROJECT_DIR}\docs&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- create as documentation and save in specified directory --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;asdoc&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- clear target directory --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">includeemptydirs</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${OUTPUT}&quot;</span> <span style="color: #000066;">includes</span>=<span style="color: #ff0000;">&quot;***&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/delete<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- execute asdoc --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exec</span> <span style="color: #000066;">executable</span>=<span style="color: #ff0000;">'${FLEX}\binasdoc.exe'</span> <span style="color: #000066;">os</span>=<span style="color: #ff0000;">'Windows XP'</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- add template path --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-templates-path ${TEMPLATES}'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- add libraries for flex and air --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-library-path ${FLEX}\frameworks\libs'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-library-path ${FLEX}\frameworks\libs\air'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-library-path ${LIB}'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- add source path --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-source-path ${PROJECT_DIR}\src'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-doc-sources ${DOC_SOURCE}'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- add descriptions --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-package your.package.here &quot;Some description&quot;'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-footer &quot;Some footer text&quot;'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-main-title &quot;Main title&quot;'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-window-title &quot;Window title&quot;'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- add output directory --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">line</span>=<span style="color: #ff0000;">'-output ${OUTPUT}'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exec<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p>More information on <a href="http://individual.utoronto.ca/kia/" target="_blank">Ant tasks and Eclipse</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/asdoc-with-ant-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>N.E.R.D &#8211; Seeing Sounds</title>
		<link>http://www.flamelab.de/article/n-e-r-d-seeing-sounds/</link>
		<comments>http://www.flamelab.de/article/n-e-r-d-seeing-sounds/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 16:02:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Books & Music]]></category>
		<category><![CDATA[hip hop]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/nerd-seeing-sounds.php</guid>
		<description><![CDATA[Pharell Williams latest solo album In My Mind wasn&#8217;t that bad, but not as ground-breaking as everything he did before, and so the feedback was a little bit disappointed. Back in the sudio with his companions from N.E.R.D., the crew produced the long awaited third album named Seeing Sounds. The  contradictory title was inspired [...]]]></description>
			<content:encoded><![CDATA[<p>Pharell Williams latest solo album <em>In My Mind</em> wasn&#8217;t that bad, but not as ground-breaking as everything he did before, and so the feedback was a little bit disappointed. Back in the sudio with his companions from <a href="http://www.n-e-r-d.com/" target="_blank">N.E.R.D.</a>, the crew produced the long awaited third album named <em>Seeing Sounds</em>. The  contradictory title was inspired by a TV show about synaesthesia, a neurological disorder that causes people to experience sounds as colours or objects in their minds. And that&#8217;s what N.E.R.D. is all about.<span id="more-50"></span></p>
<p>The album brings back the band&#8217;s typical sound: pure energy and emotion combined with musical innovation. Pharell, Chad and Shay define themselves new with every single track. Variety and colorful ideas guaranteed. Whereas their first album <em>In Search Of&#8230;</em> was an imaginative, exploration of identities and their individual stories, <em>Fly or Die</em> reflected the sounds that influenced the group, <em>Seeing Sounds</em> grinds everything together and creates a tunes that blow up all borders and conventions.</p>
<p>The first track <em>Time For Some Action</em> is a bass-heavy low-rider that leads over to the infectious booty-bass single <em>Everyone Nose</em> an the choppy drum &amp; bass like <em>Spaz</em>. <em>Sooner Or Later</em> has strong soul influences while <em>Kill Joy</em> is a pure riff-heavy rock song. And finally the fantastic <em>Love Bomb</em> which mixes rock and R&#8217;n'B styles with catchy Mariachi samples. Tracks of every flavour.</p>
<p>Sure, not everyone likes the same colors (wouldn&#8217;t it be a boring world out there?) and not everyone likes what N.E.R.D. creates but <em>Seeing Sounds</em> is really worth listening. Whether the album stands up to their previous ones or whether the new experiments are genious or mainstream, is another matter entirely. But bringing together all aspects of music (and business) and making people feel and see the fun behind building their sounds is something that lacks most artists out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/n-e-r-d-seeing-sounds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PicLens prototype with ActionScript and Papervision3D</title>
		<link>http://www.flamelab.de/article/piclens-prototype-with-actionscript-and-papervision3d/</link>
		<comments>http://www.flamelab.de/article/piclens-prototype-with-actionscript-and-papervision3d/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 10:37:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Playground]]></category>
		<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.flamelab.de/article/piclens_prototype_with_actionscript_and_papervision3d.php</guid>
		<description><![CDATA[The Firefox Piclens (now Cooliris) plugin offeres a stunnig visual presentation of online photos. The 3D wall let&#8217;s you intuititely navigate through large amounts of pictures, zoom in and watch them in more detail. It was the trigger for programming an prototype for an image wall with ActionScript and the Papervision3D library which offers very [...]]]></description>
			<content:encoded><![CDATA[<p>The Firefox Piclens (now Cooliris) plugin offeres a stunnig visual presentation of online photos. The 3D wall let&#8217;s you intuititely navigate through large amounts of pictures, zoom in and watch them in more detail. It was the trigger for programming an prototype for an image wall with ActionScript and the <a href="http://code.google.com/p/papervision3d/" target="_blank">Papervision3D</a> library which offers very powerful possibilties for creating interactive 3D Flash based interfaces.<span id="more-84"></span></p>
<h3>Papervision scene</h3>
<p>The <tt>Imagewall</tt> class is the base. It sets up the 3D papervision scene which contains all elements and it creates a camera object for controlling the view of the scene. It also creates the imagewall based on an array of imagenames.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">_wallSprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
_wallSprite.<span style="color: #006600;">x</span> = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">2</span>;<br />
_wallSprite.<span style="color: #006600;">y</span> = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">2</span>;<br />
addChild<span style="color: #66cc66;">&#40;</span>_wallSprite<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #0066CC;">_target</span> = <span style="color: #000000; font-weight: bold;">new</span> DisplayObject3D<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #0066CC;">_target</span>.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">0</span>;<br />
<span style="color: #0066CC;">_target</span>.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">300</span>;<br />
<br />
_scene = <span style="color: #000000; font-weight: bold;">new</span> MovieScene3D<span style="color: #66cc66;">&#40;</span>_wallSprite<span style="color: #66cc66;">&#41;</span>;<br />
<br />
_camera = <span style="color: #000000; font-weight: bold;">new</span> Camera3D<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
_camera.<span style="color: #006600;">z</span> = -<span style="color: #cc66cc;">200</span>;<br />
_camera.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">0</span>;<br />
_camera.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">300</span>;<br />
_camera.<span style="color: #006600;">zoom</span> = _zoom;<br />
_camera.<span style="color: #0066CC;">target</span> = <span style="color: #0066CC;">_target</span>;</div></div>
<p>To create the piclens typical flow of the wall, the camera is adjusted towards a dummy <tt>DisplayObject3D</tt>. To create the wall movement, only the dummy object and camera move with a certain offset to each other. The images keep their position.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _onEnterFrame<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">_target</span>.<span style="color: #006600;">x</span> += <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span> _movement - <span style="color: #0066CC;">_target</span>.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">2.2</span>;<br />
&nbsp; &nbsp; _camera.<span style="color: #006600;">x</span> += <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span> _movement - _camera.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">2.2</span>;<br />
&nbsp; &nbsp; _camera.<span style="color: #006600;">zoom</span> = _zoom;<br />
&nbsp; &nbsp; _scene.<span style="color: #006600;">renderCamera</span><span style="color: #66cc66;">&#40;</span>_camera<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></div></div>
<h3>Interaction controller</h3>
<p>The movement of the camera and the object are controlled by an <tt>InteractionController</tt> instance which dispatches it&#8217;s own events according to hitting the arrow keys on the keyboard (or by a possible mouse movement). Encapsulating the interaction control into a seperate class totally seperates the user control from the Papervision logic as the gallery must only listen to events and dosn&#8217;t mind how they are created.</p>
<h3>Image elements</h3>
<p>Each image on the wall is represented by an <tt>Image</tt> object. It consits of a border or background area and a dynamically loaded image. In order to be rendered correctly by Papervision, it must be represented by a <tt>Plane</tt> object which contains a <tt>Sprite</tt> for the background, while the loaded image data is drawn as a <tt>BitmapMaterial</tt>.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">_bitmap = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">260</span>, <span style="color: #cc66cc;">400</span>, <span style="color: #000000; font-weight: bold;">true</span>, 0x000000<span style="color: #66cc66;">&#41;</span>;<br />
_bitmap.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
_plane = <span style="color: #000000; font-weight: bold;">new</span> Plane<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BitmapMaterial<span style="color: #66cc66;">&#40;</span>_bitmap<span style="color: #66cc66;">&#41;</span>, <span style="color: #cc66cc;">260</span>, <span style="color: #cc66cc;">400</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;<br />
_plane.<span style="color: #006600;">material</span>.<span style="color: #006600;">smooth</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
_plane.<span style="color: #006600;">material</span>.<span style="color: #006600;">doubleSided</span> = <span style="color: #000000; font-weight: bold;">true</span>;</div></div>
<p>As the image data is not available until the loading process is completed and the <tt>Plane</tt> is created upfront (for reserving the space an showing a possible loader element) the script resets the material when the onComplete-event for loading is fired. For the bttom row of the wall, the images also show a slight reflection &#8211; which has to be created before re-assigning the material as the reflection is part of the maretial.</p>
<div class="codecolorer-container actionscript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="actionscript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">addChild<span style="color: #66cc66;">&#40;</span>_loader.<span style="color: #006600;">content</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_reflection <span style="color: #66cc66;">!</span>= <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> _reflection.<span style="color: #006600;">render</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
_bitmap.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;<br />
_plane.<span style="color: #006600;">material</span>.<span style="color: #006600;">bitmap</span> = _bitmap;</div></div>
<p>As the script is only a small prototype, there are some open things that are not implemented yet:</p>
<ul>
<li>image selection</li>
<li>smooth zoom in / out</li>
<li>dynamic image loading</li>
<li>mouse based control</li>
<li>image preloader element</li>
</ul>
<p><a href="/files/imagewall/index.html">Watch the imagewall</a> and download the sources: <a href="http://www.flamelab.de/downloads/imagewall.zip">Flex imagewall</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flamelab.de/article/piclens-prototype-with-actionscript-and-papervision3d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
