<?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>Simon Whatley &#187; XML</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/xml/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>An Introduction to the Semantic Web</title>
		<link>http://www.simonwhatley.co.uk/an-introduction-to-the-semantic-web</link>
		<comments>http://www.simonwhatley.co.uk/an-introduction-to-the-semantic-web#comments</comments>
		<pubDate>Fri, 18 Jun 2010 12:20:49 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[DCMI]]></category>
		<category><![CDATA[Dublin Core]]></category>
		<category><![CDATA[Dublin Core Metadata Initiative]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[Friend of a Friend]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[machine readable]]></category>
		<category><![CDATA[Natural Language Processing]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[OpenCalais]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[PURL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDF query language]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[RDFs]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[semantic]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[subject-predicate-object]]></category>
		<category><![CDATA[Thomson Reuters]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[Triplestore]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Uniform Resource Locator]]></category>
		<category><![CDATA[Uniform Resource Name]]></category>
		<category><![CDATA[URI]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web of data]]></category>
		<category><![CDATA[Web Ontology Language]]></category>
		<category><![CDATA[world wide web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=3559</guid>
		<description><![CDATA[The Semantic Web is a web of data. There is lots of data we all use every day, and most of it is not part of the web. I can see my bank statements on the web, and my photographs, and I can see my appointments in a calendar. But can I see my photos in a calendar to see what I was doing when I took them and on a map so I know where I took them? Can I see bank statement lines in a calendar? The answer, right now, is no.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Semantic_Web" title="Wikipedia: Semantic Web" target="_blank" rel="nofollow">Semantic Web</a> is a <a href="http://en.wikipedia.org/wiki/Linked_Data" title="Wikipedia: Linked Data" target="_blank" rel="nofollow">web of data</a>. There is lots of data we all use every day, and most of it is not part of the web. I can see my bank statements on the web, and my photographs, and I can see my appointments in a calendar. But can I see my photos in a calendar to see what I was doing when I took them and on a map so I know where I took them? Can I see bank statement lines in a calendar? The answer, right now, is no.</p>
<p>But why not? Because we don&#8217;t have a web of data. Because data is controlled by applications, and each application keeps its data to itself; applications don&#8217;t like to share.</p>
<p>The original Web mainly concentrated on the interchange of documents, however, the Semantic Web is about two things: It is about common formats for integration and combination of data drawn from diverse sources. It is also about language for recording how the data relates to real world objects. That allows a person, or a machine, to start off in one database, and then move through an unending set of databases which are connected not by wires but by being about the same thing.</p>
<p>Tim Berners-Lee describes the Semantic Web vision as:</p>
<blockquote><p>I have a dream for the Web [in which computers] become capable of analysing all the data on the Web, the content, links, and transactions between people and computers. A Semantic Web, which should make this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The intelligent agents people have touted for ages will finally materialise.</p></blockquote>
<p>What are the ideas and technologies that facilitate this vision? Below I give an overview and links to a number of them:</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Linked Data</h3>
<p>Linked Data is about using the Web to connect related data that wasn&#8217;t previously linked, or using the Web to lower the barriers to linking data currently linked using other methods. More specifically, Wikipedia defines Linked Data as &#8220;a term used to describe a recommended best practice for exposing, sharing, and connecting pieces of data, information, and knowledge on the Semantic Web using <abbr title="Uniform Resource Identifier">URIs</abbr> and <abbr title="Resource Description Framework">RDF</abbr>.&#8221;</p>
<ul>
<li><a href="http://linkeddata.org" title="Linked Data: Connect Distributed Data Across The Web" target="_blank" rel="nofollow">http://linkeddata.org</a></li>
<li><a href="http://en.wikipedia.org/wiki/Linked_Data" title="Wikipedia: Linked Data" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Linked_Data</a></li>
</ul>
<h3>Resource Description Framework</h3>
<p>The Resource Description Framework (<abbr title="Resource Description Framework">RDF</abbr>) is a general-purpose language for representing information in the Web.</p>
<p>The <strong>Resource Description Framework Schema (<abbr title="Resource Description Framework Schema">RDF-S</abbr>)</strong> is a semantic extension of <abbr title="Resource Description Framework">RDF</abbr> that provides mechanisms for describing groups of related resources and the relationships between these resources.</p>
<ul>
<li><a href="http://www.w3.org/TR/rdf-schema/" title="World Wide Web Consortium: RDF Schema" target="_blank" rel="nofollow">http://www.w3.org/TR/rdf-schema/</a></li>
<li><a href="http://en.wikipedia.org/wiki/RDF_Schema" title="Wikipedia: RDF Schema" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/RDF_Schema</a></li>
</ul>
<p>The <strong>Resource Description Framework in Attributes (<abbr title="Resource Description Framework in Attributes">RDFa)</strong> allows authors to add meaning to web page elements. Using a few simple <abbr title="eXtensible HyperText Markup Language">XHTML</abbr> attributes, authors can mark up human-readable data with machine-readable indicators for browsers and other programs to interpret. A web page can include markup for items as simple as the title of an article, or as complex as a user&#8217;s complete social network.</p>
<ul>
<li><a href="http://www.w3.org/TR/xhtml-rdfa-primer/" title="World Wide Web Consortium: XHTML RDFa Primer" target="_blank" rel="nofollow">http://www.w3.org/TR/xhtml-rdfa-primer/</a></li>
<li><a href="http://en.wikipedia.org/wiki/RDFa" title="Wikipedia: RDFa" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/RDFa</a></li>
</ul>
<h3>Friend of a Friend (<abbr title="Friend of a Friend">FOAF</abbr>)</h3>
<p>The <em>Friend of a Friend</em> project is creating a Web of machine-readable pages describing people, the links between them and the things they create and do. <abbr title="Friend of a Friend">FOAF</abbr> is about your place in the Web, and the Web&#8217;s place in our world. <abbr title="Friend of a Friend">FOAF</abbr> is a simple technology that makes it easier to share and use information about people and their activities (eg. photos, calendars, weblogs), to transfer information between Web sites, and to automatically extend, merge and re-use it online.</p>
<ul>
<li><a href="http://www.foaf-project.org" title="FOAF Project" target="_blank" rel="nofollow">http://www.foaf-project.org</a></li>
<li><a href="http://en.wikipedia.org/wiki/FOAF_(software)" title="Wikipedia: FOAF (Software)" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/FOAF_(software)</a></li>
<li><a href="http://en.wikipedia.org/wiki/Friend_of_a_friend" title="Wikipedia: Friend of a Friend" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Friend_of_a_friend</a></li>
<li><a href="http://xmlns.com/foaf/spec/" title="FOAF Vocabulary Specification" target="_blank" rel="nofollow">http://xmlns.com/foaf/spec/</a></li>
</ul>
<h3>Web Ontology Language (<abbr title="Web Ontology Language">OWL</abbr>)</h3>
<p>The <abbr title="Web Ontology Language">OWL</abbr> Web Ontology Language is designed for use by applications that need to process the content of information instead of just presenting information to humans. <abbr title="Web Ontology Language">OWL</abbr> facilitates greater machine interpretability of Web content than that supported by <abbr title="eXtensible Markup Language">XML</abbr>, <abbr title="Resource Description Framework">RDF</abbr>, and <abbr title="Resource Description Framework">RDF</abbr> Schema (<abbr title="Resource Description Framework Schema">RDF-S</abbr>) by providing additional vocabulary along with a formal semantics.</p>
<ul>
<li><a href="http://www.w3.org/TR/owl-features/" title="World Wide Web Consortium: OWL Web Ontology Language" target="_blank" rel="nofollow">http://www.w3.org/TR/owl-features/</a></li>
<li><a href="http://en.wikipedia.org/wiki/Web_Ontology_Language" title="Wikipedia: Web Ontology Language" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Web_Ontology_Language</a></li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Dublin Core Metadata Initiative (<abbr title="Dublin Core Metadata Initiative">DCMI</abbr>)</h3>
<p>The Dublin Core set of metadata elements provides a small and fundamental group of text elements through which most resources can be described and catalogued. Using only 15 base text fields, a Dublin Core metadata record can describe physical resources such as books, digital materials such as video, sound, image, or text files, and composite media like web pages. Metadata records based on Dublin Core are intended to be used for cross-domain information resource description and have become standard in the fields of library science and computer science. Implementations of Dublin Core typically make use of <abbr title="eXtensible Markup Language">XML</abbr> and are Resource Description Framework (<abbr title="Resource Description Framework">RDF</abbr>) based.</p>
<ul>
<li><a href="http://dublincore.org" title="Dublin Core Metadata Initiative" target="_blank" rel="nofollow">http://dublincore.org</a></li>
<li><a href="http://en.wikipedia.org/wiki/Dublin_core" title="Wikipedia: Dublin Core" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Dublin_core</a></li>
</ul>
<h3>Triplestore</h3>
<p>A triplestore is a purpose-built database for the storage and retrieval of Resource Description Framework (<abbr title="Resource Description Framework">RDF</abbr>) metadata.</p>
<p>Much like a relational database, information is stored in a triplestore and retrieved via a query language called <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr>. Unlike a relational database, a triplestore is optimised for the storage and retrieval of many short statements called triples, in the form of subject-predicate-object, like &#8220;Bob is 35&#8243; or &#8220;Bob knows Fred&#8221;.</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Triplestore" title="Wikipedia: Triplestore" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Triplestore</a></li>
</ul>
<h3>SPARQL Protocol and RDF Query Language (<abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr>)</h3>
<p><abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> is an <abbr title="Resource Description Framework">RDF</abbr> query language, which can be used to express queries across diverse data sources, whether the data is stored natively as <abbr title="Resource Description Framework">RDF</abbr> or viewed as <abbr title="Resource Description Framework">RDF</abbr> via middleware. <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> contains capabilities for querying required and optional graph patterns along with their conjunctions and disjunctions. <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> also supports extensible value testing and constraining queries by source <abbr title="Resource Description Framework">RDF</abbr> graph. The results of <abbr title="SPARQL Protocol and RDF Query Language">SPARQL</abbr> queries can be results sets or <abbr title="Resource Description Framework">RDF</abbr> graphs.</p>
<ul>
<li><a href="http://www.w3.org/TR/rdf-sparql-query/" title="World Wide Web Consortium: SPARQL Query" target="_blank" rel="nofollow">http://www.w3.org/TR/rdf-sparql-query/</a></li>
<li><a href="http://en.wikipedia.org/wiki/Sparql" title="Wikipedia: SPARQL" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Sparql</a></li>
</ul>
<h3>Simple Knowledge Organization System (<abbr title="Simple Knowledge Organization System">SKOS</abbr>) </h3>
<p><abbr title="Simple Knowledge Organization System">SKOS</abbr> is a family of formal languages designed for representation of thesauri, classification schemes, taxonomies, subject-heading systems, or any other type of structured controlled vocabulary. <abbr title="Simple Knowledge Organization System">SKOS</abbr> is built upon <abbr title="Resource Description Framework">RDF</abbr> and <abbr title="Resource Description Framework Schema">RDF-S</abbr>, and its main objective is to enable easy publication of controlled structured vocabularies for the Semantic Web.</p>
<ul>
<li><a href="http://www.w3.org/2004/02/skos/" title="World Wide Web Consortium: SKOS" target="_blank" rel="nofollow">http://www.w3.org/2004/02/skos/</a></li>
<li><a href="http://en.wikipedia.org/wiki/Simple_Knowledge_Organization_System" title="Wikipedia: Simple Knowledge Organisation System" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Simple_Knowledge_Organization_System</a></li>
</ul>
<h3>Persistent Uniform Resource Locator (<abbr title="Persistent Uniform Resource Locator">PURL</abbr>)</h3>
<p>A <abbr title="Persistent Uniform Resource Locator">PURL</abbr> is a type of Uniform Resource Locator (<abbr title="Uniform Resource Locator">URL</abbr>) that does not directly describe the location of the resource to be retrieved but instead describes an intermediate, more persistent location which, when retrieved, results in redirection (e.g. via a 302 <abbr title="HyperText Transfer Protocol">HTTP</abbr> status code) to the current location of the final resource.</p>
<p><abbr title="Persistent Uniform Resource Locator">PURLs</abbr> are an interim measure, while Uniform Resource Names (<abbr title="Uniform Resource Names">URNs</abbr>) are being mainstreamed, to solve the problem of transitory <abbr title="Uniform Resource Identifier">URIs</abbr> in location-based <abbr title="Uniform Resource Identifier">URI</abbr> schemes like <abbr title="HyperText Transfer Protocol">HTTP</abbr>.</p>
<ul>
<li><a href="http://purl.org/docs/index.html" title="Persistent Uniform Resource Locators" target="_blank" rel="nofollow">http://purl.org/docs/index.html</a></li>
<li><a href="http://en.wikipedia.org/wiki/Persistent_Uniform_Resource_Locator" title="Wikipedia: Persistent Uniform Resource Locator" target="_blank" rel="nofollow">http://en.wikipedia.org/wiki/Persistent_Uniform_Resource_Locator</a></li>
</ul>
<h3>Thomson Reuters OpenCalais</h3>
<p>OpenCalais is a rapidly growing toolkit of capabilities that allow you to readily incorporate state-of-the-art semantic functionality within your blog, content management system, website or application.</p>
<p>The OpenCalais Web Service automatically creates rich semantic metadata for the content you submit. Using Natural Language Processing (<abbr title="Natural Language Processing">NLP</abbr>), machine learning and other methods, Calais analyses your document and finds the entities within it. Calais goes beyond classic entity identification returning the facts and events hidden within your text as well.</p>
<ul>
<li><a href="http://www.opencalais.com" title="Thomson Reuters OpenCalais" target="_blank" rel="nofollow">http://www.opencalais.com</a></li>
</ul>
<p>If you have any more suggestions that should be included above, I&#8217;ll be happy to hear them.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/an-introduction-to-the-semantic-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Configure Apache to GZip Your Components</title>
		<link>http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components</link>
		<comments>http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:26:38 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache HTTP Server]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DEFLATE]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[ZIP]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2332</guid>
		<description><![CDATA[Compressing your Web components will help speed up your Website. The majority of your visitors will benefit as most all Web browsers support GZip compression. You’ll want to compress all text, which includes HTML, CSS, JavaScript, XML, JSON, etc.]]></description>
			<content:encoded><![CDATA[<p>Compressing your Web components will help speed up your Website.  The majority of your visitors will benefit as most all Web browsers support <abbr title="GNU zip">GZip</abbr> compression.  You’ll want to compress all text, which includes <abbr title="HyperText Markup Language">HTML</abbr>, <abbr title="Cascading Style Sheets">CSS</abbr>, JavaScript, <abbr title="eXtensible Markup Language">XML</abbr>, <abbr title="JavaScript Object Notation">JSON</abbr>, etc.</p>
<p>Apache 2.x uses <code>mod_deflate</code>. Much like <a href="/how-to-set-an-expires-header-in-apache" title="setting expires headers">setting expires headers</a>, this will save you bandwidth and server load, because it allows output from your server to be compressed before being sent to the client over the network.</p>
<p>The deflate module is not compiled by default and must be enabled in the Apache <em>httpd.conf</em> file. Make sure the following is present and uncommented (remove preceding the #):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">LoadModule deflate_module modules/mod_deflate.so</pre></div></div>

<p>To set <abbr title="GNU zip">GZip</abbr> compression, simply add the following to the <virtualHost> section of your Apache <em>vhost</em> configuration:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</pre></div></div>

<p>Alternatively you can add it to your <em>htaccess</em> file in an <code>&lt;ifModule mod_deflate.c&gt;&lt;/ifModule&gt;</code> block.</p>
<p>All you really need is the first line. The <code>BrowserMatch </code>lines are there to handle issues with older browsers such as Internet Explorer 5.</p>
<p>You can read all about <abbr title="GNU zip">GZip</abbr> by reading Yahoo!’s <a href="http://developer.yahoo.com/performance/rules.html#gzip" title="Yahoo! Best Practices for Speeding Up Your Web Site Guide" target="_blank" rel="nofollow">Best Practices for Speeding Up Your Web Site</a> guide.</p>
<p>Alternatively, read the <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html" title="Apache mod_deflate documentation" target="_blank" rel="nofollow">Apache mod_deflate documentation</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache Ant Best Practices</title>
		<link>http://www.simonwhatley.co.uk/apache-ant-best-practices</link>
		<comments>http://www.simonwhatley.co.uk/apache-ant-best-practices#comments</comments>
		<pubDate>Mon, 10 Aug 2009 09:12:40 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Apache Ant]]></category>
		<category><![CDATA[automated build]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[build scripts]]></category>
		<category><![CDATA[immediate processing]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[local development server]]></category>
		<category><![CDATA[similar build tool]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[The Definitive Guide]]></category>
		<category><![CDATA[user acceptance testing server]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1831</guid>
		<description><![CDATA[Before Ant, building and deploying web applications required a series of scripts or manual processes, which often led to mistakes. Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects. However, that doesn’t mean it is restricted to Java projects. I use Ant increasingly for all my web development projects as it is an integral part of Eclipse, my IDE of choice. It makes building applications and releasing them across different servers far more efficient and less problematic.]]></description>
			<content:encoded><![CDATA[<p>Before Ant, building and deploying web applications required a series of scripts or manual processes, which often led to mistakes.</p>
<p>Apache <a href="http://ant.apache.org" title="Apache Ant" target="_blank" rel="nofollow">Ant</a> is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects. However, that doesn&#8217;t mean it is restricted to Java projects. I use Ant increasingly for all my web development projects as it is an integral part of <a href="http://eclipse.org" title="Eclipse" target="_blank" rel="nofollow">Eclipse</a>, my <abbr title="Integrated Development Environment">IDE</abbr> of choice. It makes building applications and releasing them across different servers far more efficient and less problematic.</p>
<p>When I start a new project, after creating the folder structure, I create the Ant build file. Ant defines the build process and must be used by every developer working on the project. All of the tips in this article assume that the Ant build file is extremely important, must be written with care, and maintained in version control and re-factored periodically, when the project dependencies change.</p>
<p>Ant uses <abbr title="eXtensible Markup Language">XML</abbr> to describe the build process and its dependencies. By default the <abbr title="eXtensible Markup Language">XML</abbr> file is named <code>build.xml</code>. This makes it really simple for you setup and edit different build processes. However, since Ant is relatively simple to set up, you need to follow a common set of best practices. Some of these best practices were inspired by mistakes made on previous projects, or ideas passed on to me by other developers.</p>
<h3>Automate absolutely everything</h3>
<p>Ant is a powerful tool. If you choose to use it, get it to do absolutely everything. Ant can integrate with your source control databases such as Subversion (<abbr title="Subversion">SVN</abbr>), run <abbr title="Structured Query Language">SQL</abbr> scripts, change file permissions, send files across <abbr title="File Transfer Protocol">FTP</abbr>, zip and un-zip files, and many more tasks besides these.</p>
<h3>If you use Ant, only use Ant</h3>
<p>Use Ant as a common baseline. Regardless of what <abbr title="Integrated Development Environment">IDE</abbr> you use to develop your applications, set up an Ant build file that <strong>all</strong> team members use. The <code>build.xml</code> file is the one true build script. Make a rule that everyone should perform a successful Ant build before code is checked into version control. This will ensure that code will always build from the same build file.</p>
<h3>Follow consistent conventions</h3>
<p>Ant expects your build file to be called <code>build.xml</code> and the build&#8217;s properties file <code>build.properties</code>. These files should also be in the root directory of your project. Other than an insane desire to change convention and confuse other team members, don&#8217;t change this convention. Another less-well-known convention is to prefix all internal commands with a hyphen (-). It has the advantage that it is not possible to invoke targets that follow this naming convention, from the command line.</p>
<p>Spend time formatting the build file. Since <abbr title="eXtensible Markup Language">XML</abbr> is quite verbose, use tabs and line breaks to make the file readable to the human eye. Ant itself doesn&#8217;t care if the file looks pretty, but you can bet that you and your team will.</p>
<p>Pick meaningful, human-readable names for targets and properties. For example <em>dir.reports</em> is better than simple <em>rpt</em>. The specific naming convention is not important, beyond being meaningful to your organisation. For example, I use the following:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">deploy.local
deploy.dev
deploy.test
deploy.live
-build
-clean
-concatenate
-minify
-prepare</pre></div></div>

<p>The <em>-concatenate</em> and <em>-minify</em> commands are specific to web projects, the later using the Yahoo compressor library to minify <abbr ttile="Cascading Stylesheets">CSS</abbr> and JavaScript files.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Provide a clean target</h3>
<p>Every build file should include a target that removes all generated files and directories, bringing everything back to its original pristine state. All files remaining after the clean should be those found in version control.</p>
<p>An example clean command could be as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><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;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Deletes all generated files and directories&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.build}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.dist}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>Use build files for all stages of the development process (development, staging and production)</h3>
<p>Ant standardises your build and release cycle. Therefore use it for all stages of the development process. Use it for releasing code to your local development server, your staging or user acceptance testing server and your production server. The different deployments can obviously differ slightly based upon the needs, i.e. your production build need not include the creation of dummy data, but may include a call to source control.</p>
<h3>Make build files self-contained</h3>
<p>A build file that relies on external dependencies is one that will be difficult to configure or has the potential to cause problems. If your build depends on additional tools, put them in your source control repository. I generally include a <em>lib</em> for all dependencies in my project root. This folder includes such files as the <a href="http://developer.yahoo.com/yui/compressor/" title="Yahoo Compressor" target="_blank" rel="nofollow">Yahoo Compressor</a> or <a href="http://www.jslint.com" title="JSLint" target="_blank" rel="nofollow">JSLint</a>.</p>
<h3>Prefer a single build file</h3>
<p>It is possible to split the build up into several small build files, each of which is responsible for a small proportion of the overall build. This isn&#8217;t always the best idea! Breaking the build often makes it harder to comprehend the whole process. It is better not to over-engineer the project and keep to a single, well formatted build file.</p>
<p>If your project is split into different build files, there should always be a master build file, found in the root directory of the project, even if it only delegates actual work to subordinate builds.</p>
<h3>Put the build.xml file in the project&#8217;s root directory</h3>
<p>The Ant build file can reside anywhere in the project tree, but conceptually it makes sense to put the file in the project root. This keeps things clean, simple and somewhat obvious to new members to the project. Having a build file in the top-level directory also makes it conceptually easy to see how relative paths point to different directories in the project tree.</p>
<p>When the <code>build.xml</code> file is in the top-level directory, you can compile code from the command line without the need to change the working directory.</p>
<h3>Modularise your project</h3>
<p>Arrange your project into coherent self-contain modules.</p>
<p>The following shows how I typically arrange my project files.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">[root directory]
	/docs
	/lib
	/src
build.properties
build.xml
task.properties</pre></div></div>

<p> The <em>docs</em> folder contains project documentation, the <em>lib</em> folder contains libraries specific to the project and required by Ant (generally this is a link to repository containing a number of utility JAR files, such as those for <abbr title="Subversion">SVN</abbr> and <abbr title="File Transfer Protocol">FTP</abbr>). Finally, the <em>src</em> folder contains the actual project files.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Use version control</h3>
<p>It is important to use version control for your entire project. The build file is an important artefact that needs to be versioned along with the source code of the project. When you tag a build for release, the build file should also be included. If you then need to roll back to a previous release, you will be able to build the code based upon the build file used for that particular release (after all, build files develop along with changes to the source code).</p>
<p>Third-party <abbr title="Java Archive">JAR</abbr> and executable files should also be maintained in your local version control. This makes it possible to recreate previous releases, after all third-party libraries are likely to develop and change as frequently as your own code. If you want or need to take advantage of these changes, it is necessary to version control the older versions.</p>
<p>Avoid including build output in version control. Provided that you use version control correctly, you will be able to recreate these files at a later date.</p>
<h3>Include comments in the build file (self-documenting)</h3>
<p>Make the build file self-documenting. Adding target descriptions is one way to achieve this. For example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><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;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Deletes all generated files and directories&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>Internal targets should not include description attributes. Internal targets may include targets that perform immediate processing, such as file concatenation or minifying.</p>
<p>Another way to include help in the build file is the <code>echo</code> tag. You can put any amount of comment between these tags and the information is printed to screen. For example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><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;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Deletes all generated files and directories&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Cleaning project...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Deleting build directory...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.build}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Deleting dist directory...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.dist}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>Summary</h3>
<p>By using Ant and creating and maintaining build scripts for a project, the reliance on ad-hoc manual procedures for compiling and creating websites is removed. Using a defined process with Ant, or similar build tool, removes errors across the entire project, whilst allowing teams to develop code more efficiently.</p>
<h3>References</h3>
<p>Holzner, Steve (2005). Ant: The Definitive Guide, 2nd Edition, O&#8217;Reilly, ISBN 978-0-596-00609-9.</p>
<p>Apache Ant &#8211; <a href="http://ant.apache.org" title="Apache Ant" target="_blank" rel="nofollow">http://ant.apache.org</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/apache-ant-best-practices/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let&#039;s not Dilly-Dally: ColdFusion has its Merits</title>
		<link>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits</link>
		<comments>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits#comments</comments>
		<pubDate>Fri, 09 Jan 2009 10:58:36 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[enterprise-level search]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[fundamentals]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[web technology]]></category>
		<category><![CDATA[web world]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1734</guid>
		<description><![CDATA[ColdFusion is 13 years old. That make makes it the daddy of the web world! It does not make it any less hip or useful than the relatively new kids on the block. Let's not dilly-dally, bicker or insult one another about which is best, which one is dying and which one is not worth the computer it is compiled on. What is important is to understand the merits of each language and decide which one best suits the application, not only in technical terms, but also in terms of time-to-market, cost of development, availability of a skilled workforce etc.]]></description>
			<content:encoded><![CDATA[<p>ColdFusion is 13 years old. That make makes it the daddy of the web world! It does not make it any less hip or useful than the relatively new kids on the block.</p>
<p>Take this scenario. A company I once worked for had what can be described as a business directory built upon a licensed, yet bastardised, version of a popular ColdFusion-based <abbr title="Content Management System">CMS</abbr>. It didn&#8217;t work that well! The decision was made to redevelop the application in Java. It took two years to reach the same level of functionality! What happened next? Ruby-on-Rails is what! The rest is history and beyond the topic of this post.</p>
<p>So, in effect, the application almost went full-circle in its development paradigm &#8212; both ColdFusion and Ruby-on-Rails can be considered <q>Rapid Application Development</q> environments, Java, certainly not. Why did the decision makers not stick with ColdFusion and put time aside to actually build it properly in the first place? To put it simply, they lost faith in ColdFusion; it was largely mis-understood.</p>
<p>The weakness of every programming language does not lie with the language itself per se &#8212; albeit it can have an important influencing factor &#8212; but rather with the ability, or indeed inability, of the developer to leverage the language in the most efficient and optimal way.</p>
<p>ColdFusion, like every other programming language has had and I&#8217;m sure still does have its fair share of poor developers; those people simply working with it as a means-to-an-end, rather than those passionate about the language, those people programming without understanding the fundamentals of programming or the implications of their poorly written code. This is apparent from .NET to Java, ColdFusion to Ruby, JavaScript to ActionScript.</p>
<p>Let&#8217;s not dilly-dally, bicker or insult one another about which is best, which one is dying and which one is not worth the computer it is compiled on. What is important is to understand the merits of each language and decide which one best suits the application, not only in technical terms, but also in terms of time-to-market, cost of development, availability of a skilled workforce etc.</p>
<p>ColdFusion, whether rightly or wrongly in some people&#8217;s opinion, can sit proudly amongst its peers and provide a truly compelling alternative.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Here&#8217;s how (in no particular order):</p>
<ol>
<li>Low Total Cost of Ownership &#8211; frequently, ColdFusion is described as expensive, it simply isn&#8217;t especially if you consider the natively supported functions. But to put it bluntly, if your company cannot afford the cost of ColdFusion standard, or indeed ColdFusion hosting, you have bigger things to worry about regarding the profitability of the company; you won&#8217;t be able to afford much of anything! The problem becomes not the product. ColdFusion applications are quicker to develop and developers are vastly cheaper to employ than their peers in Java or Ruby, just look at <a href="http://www.itjobswatch.co.uk/" title="ITJobsWatch" target="_blank" rel="nofollow">ITJobsWatch</a> for examples.</li>
<li>Rapid Application Development &#8211; ColdFusion vastly simplifies tasks. What would take other languages numerous lines of code to produce is efficiently encapsulated either in a tag or function or as a setting in the administrator. This is a simplistic yet indicative example: where else can you connected to a database simply with one line of code or indeed simply by name? ColdFusion changed the idea of specifying development time in terms of months and years to weeks and months or small features a matter of hours and days. Simplicity is not the mother or all evil. To be pragmatic, simplification reduces costs.</li>
<li>Rich Internet Applications &#8211; ColdFusion may or may not have pioneered the <abbr title="Rich Internet Application">RIA</abbr> paradigm, but it has played a significant supporting role to Flash and now Flex. ColdFusion natively supports Flash remoting, providing the all important data access tier.</li>
<li>Platform Maturity &#8211; ColdFusion 8 is built upon the latest version of Java (1.6). Along with internal improvements to the ColdFusion application, this has afforded ColdFusion unprecedented speed improvements and stability.</li>
<li>Language Maturity &#8211; with each major release of ColdFusion comes many language enhancements added to the core. This means that previous addons, for example image manipulation, which came at a premium are now standard. Adobe and other companies that produce <abbr title="ColdFusion Markup Language">CFML</abbr> engines are now participating in  a <abbr title="ColdFusion Markup Language">CFML</abbr> advisory committee, which aims to set standards for the core language. This is not only a sign of maturity but a letter of intent by the industry that will mean your application will work on any engine, assuming no proprietary functionality is used.</li>
<li>The Ultimate Middleware &#8211; ColdFusion sits comfortably between any backend and front end system. Be it interfacing with a host of databases, Java, .NET, <abbr title="Component Object Model">COM</abbr>, Corba or connecting to classic <abbr title="HyperText Manrkup Language">HTML</abbr> or rich Flash, Flex and <abbr title="Asynchronous JavaScript and XML">AJAX</abbr> frontends with little or no configuration.</li>
<li>Feature Rich &#8211; what other web technology <strong>natively</strong> supports <abbr title="">PDF</abbr> generation, charting, enterprise-level search, <abbr title="Asynchronous JavaScript and XML">AJAX</abbr>, image manipulation, Atom and <abbr title="Really Simple Syndication">RSS</abbr> creation, Zip and <abbr title="Java Archive">JAR</abbr> file manipulation, a server monitor, Flex integration, encryption libraries, all important database connectors, webservice creation, <abbr title="">XML</abbr> manipulation, inbuilt reporting application (similar to Crystal Reports), email, <abbr title="File Transfer Protocol">FTP</abbr> to name but a few? I hazard a guess at none, unless you&#8217;re happy to pay a premium.</li>
<li>Platform Independent &#8211; since ColdFusion 6, when Macromedia redeveloped the entire application in Java, ColdFusion has been platform independent. You can install it on practically any machine.</li>
<li>OpenSource Alternatives &#8211; BlueDragon and Railo are both significant alternatives to Adobe ColdFusion and both have opensource alternatives, the latter of the two having recently joined the JBoss community. Adobe are also considering providing a free edition to academic institutions.</li>
<li>The Future &#8211; many commentators have mentioned Hibernate as a significant addition to the next release of ColdFusion, version 9. But having seen the prerelease notes, that is not all that will be added. Alas I&#8217;m under <abbr title="Non-Disclosure Agreement">NDA</abbr>, but rest assured, there is going to be a significant intake of breath when developers get hold of the next release. ColdFusion 8 was firmly geared towards middle management with fuzzy additions, ColdFusion 9 is set to re-address the balance with compelling language and functionality enhancements.</li>
</ol>
<p>ColdFusion evangelism needs to step up a gear! Adobe certainly doesn&#8217;t afford much marketing budget to the product, prefering <q>The Community</q> do the hard work. It is not always easy convincing the decision makers that ColdFusion is a good product of choice, without Adobe&#8217;s unnerving support, but we have to work hard, break down those barriers, encroach on events outside the comfortable sphere of the ColdFusion world and demonstrate ColdFusion&#8217;s match-winning ability.</p>
<p>ColdFusion isn’t dying, it’s simply niche. Every niche has its place.</p>
<p><strong>UPDATE:</strong> If you would like to view the ensuing debate regarding ColdFusion prompted by <a href="http://aralbalkan.com/1864" title="Aral Balkan - Why learning ColdFusion today is a waste of time." target="_blank" rel="nofollow">Aral Balkan</a>, feel free to do so. This post should serve as a positive reminder of ColdFusion&#8217;s virtues, alongside the need for a balanced and polite debate.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Using Ant with Eclipse</title>
		<link>http://www.simonwhatley.co.uk/using-ant-with-eclipse</link>
		<comments>http://www.simonwhatley.co.uk/using-ant-with-eclipse#comments</comments>
		<pubDate>Tue, 06 Jan 2009 11:16:44 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache Ant]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[build.xml]]></category>
		<category><![CDATA[CFEclipse]]></category>
		<category><![CDATA[Click Import]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[dev server]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[Martin Laine]]></category>
		<category><![CDATA[platform-independent tool]]></category>
		<category><![CDATA[software automation]]></category>
		<category><![CDATA[test-driven development]]></category>
		<category><![CDATA[unit testing frameworks]]></category>
		<category><![CDATA[web developers]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[web server folder]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1552</guid>
		<description><![CDATA[If you're currently not using Eclipse as your development tool of choice, you certainly should be! Eclipse is an open source community whose projects are focused on building an open development platform comprised of extensible frameworks, tools and runtimes for building, deploying and managing software across the lifecycle.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re currently not using Eclipse as your development tool of choice, you certainly should be! Eclipse is an open source community whose projects are focused on building an open development platform comprised of extensible frameworks, tools and runtimes for building, deploying and managing software across the lifecycle.</p>
<p>Eclipse started out as a Java <abbr title="Integrated Development Environment">IDE</abbr> and has continually grown from there. Plugins now include, amongst a plethora of others, the venerable Aptana, CFEclipse, SQL Explorer, Subclipse and, more recently, the Adobe-developed Flex Builder and ColdFusion-equivalent codenamed <q>Bolt</q>.</p>
<p>Apache Ant is a software tool for automating software build processes. It is implemented using the Java language, requires the Java platform, and was originally developed to automate the build of Java projects. However, since Ant was created as a simple, platform-independent tool, it can really be used to automate the build of anything you choose.</p>
<p>Ant uses <abbr title="eXtensible Markup Language">XML</abbr> to describe the build process and its dependencies, using a file commonly called <code>build.xml</code>. Using this file, Ant makes it trivial to integrate unit testing frameworks with the build process and has made it easy for web developers to adopt test-driven development, and even Extreme Programming.</p>
<p>Fortunately for us, if you download and run Eclipse, you already have Ant installed and so do not have any complex configuration to concern yourself with; well, at least initially.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Setting Up Eclipse</h3>
<p>For the most part, Eclipse has all you need to get up and running with Ant pre-installed. However, most projects will include a release target which uses <abbr title="File Transfer Protocol">FTP</abbr> to upload the files to a live server. The <abbr title="File Transfer Protocol">FTP</abbr> ant task requires some extra libraries (.jar files):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">commons-net-*.jar
jakarta-oro-*.jar</pre></div></div>

<p>(The library <a href="http://www.simonwhatley.co.uk/examples/ant/">files can be downloaded from here</a>).</p>
<p>Copy the files into the ant lib folder of your Eclipse install. The folder is commonly located here:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">C:\Program Files\Eclipse\plugins\org.apache.ant_*\lib</pre></div></div>

<p>(The asterix * refers to the Ant version).</p>
<p>Next, go to Window > Preferences and select Ant > Runtime. In the Classpath tab, select Ant Home Entries, click Add External JARs&#8230; and select the 2 files you copied to the ant lib folder.</p>
<h3>A Typical Ant Project Setup</h3>
<p>A project with ant build scripts should have the following within the repository:</p>
<ul>
<li>build.xml (the actual ant build script)</li>
<li>build.properties.template (a template for individual build.properties files)</li>
<li>an optional top level lib folder (containing jar files for external ant tasks)</li>
</ul>
<p>Examples of the <code>build.xml</code> and <code>build.properties.template</code> <a href="http://www.simonwhatley.co.uk/examples/ant/">files can be downloaded from here</a>.</p>
<h3>Create Your Own build.properties File</h3>
<p>Make a copy of the <code>build.properties.template</code> file (name it build.properties) and set the values to fit your local setup (in most cases, the only property you may want to change is <code>deploy.dir.local</code> which is the path to the site on your local machine).</p>
<p>This file should never be committed to the repository (the repository should be set to ignore it anyway).</p>
<h3>Basic Build Tasks</h3>
<p>The build file should have a <code>deploy.local</code> task. This task builds the project and copies it to your local webserver (the path to the web server folder will be defined in the <code>build.properties</code> file).</p>
<p>Most projects should also have a <code>deploy.dev</code> task to copy the latest work to the dev server so that other people can view it.</p>
<h3>Setting Up an Automatic Build</h3>
<p>To make things easy, you can set deploy.local to run every time you save a file. This is called an <q>automatic build</q>.</p>
<p>The process for setting up automatic build is quite convoluted. I&#8217;m not sure why but this is the best way I&#8217;ve found to make it work.</p>
<p><strong>Step 1: Add the build file to your ant view</strong></p>
<p>Click the add button and select the build.xml file from the project. You can also drag the build.xml file onto the ant view (To add the ant view to your perpective, go to Window > Show View > Other…)</p>
<p><strong>Step 2: Run as Ant Build</strong></p>
<p>In your ant view, right click the newly added build file and select Run As > Ant Build… In the dialog window, select the &#8216;Hide internal targets not selected for execution&#8217; option in the Targets tab. You can rename the builder in the box at the top of the window if you wish (I usually remove the trailing &#8216;build.xml&#8217;. Click Apply and Close.</p>
<p><strong>Step 3: Setup automatic build</strong></p>
<p>Right click on the project, select Properties, then Builders. Click Import. Before closing the screen, highlight the imported build and select edit. Go to the Targets tab select clean for &#8216;After a clean&#8217; and deploy.local for &#8216;Auto build&#8217;. Apply the changes and close.</p>
<p><strong>Step 4: Enable Auto Build</strong></p>
<p>Go to Project > Build Automatically</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong> Acknowledgment:</strong> Thanks should go to <a href="http://www.1pixelout.net/" title="1PixelOut: Martin Laine's online musings" target="_blank" rel="nofollow">Martin Laine</a> for his help and guidance which resulted in this article.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/using-ant-with-eclipse/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Rich Internet Application Frameworks for Flex and AIR</title>
		<link>http://www.simonwhatley.co.uk/ria-flex-air-frameworks</link>
		<comments>http://www.simonwhatley.co.uk/ria-flex-air-frameworks#comments</comments>
		<pubDate>Thu, 04 Sep 2008 14:34:42 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Consulting]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[asset management]]></category>
		<category><![CDATA[backend services]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[classic Model-View-Controller]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Gaia]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Guasax]]></category>
		<category><![CDATA[Internet Application Frameworks]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[inversion-of-control]]></category>
		<category><![CDATA[IoC]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Model-Glue Flex]]></category>
		<category><![CDATA[model-view-controller]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[software engineers]]></category>
		<category><![CDATA[Swiz]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=986</guid>
		<description><![CDATA[Whether you are new to Adobe &#174; Flex &#174; or have been developing for a while, frameworks can help you get organised quickly. Below is a list of Flex and AIR frameworks that will allow you to get up and running and develop highly-collaborative applications. The introductions are by the frameworks themselves, but I'd like to here from you about your experiences using them.]]></description>
			<content:encoded><![CDATA[<p>Whether you are new to Adobe &reg; Flex &reg; or have been developing for a while, frameworks can help you get organised quickly.</p>
<p>Below is a list of Flex and <acronym title="Adobe Integrated Runtime">AIR</acronym> frameworks that will allow you to get up and running and develop highly-collaborative applications. The introductions are by the frameworks themselves, but I&#8217;d like to here from you about your experiences using them.</p>
<h3>Cairngorm</h3>
<p>Cairngorm is the lightweight micro-architecture for <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" title="Wikipedia: Rich Internet Application" target="_blank" rel="nofollow">Rich Internet Applications</a> built in Flex or <acronym title="Adobe Integrated Runtime">AIR</acronym>. A collaboration of recognized design patterns, Cairngorm exemplifies and encourages best-practices for <abbr title="Rich Internet Application">RIA</abbr> development advocated by <a href="http://www.adobe.com/consulting/" title="Adobe Consulting" target="_blank" rel="nofollow">Adobe Consulting</a>, encourages best-practice leverage of the underlying Flex framework, while making it easier for medium to large teams of software engineers deliver medium to large scale, mission-critical Rich Internet Applications.</p>
<p>More information can be found on the <a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm" title="Cairngorm RIA Framework" target="_blank" rel="nofollow">Cairngorm project&#8217;s website</a>.</p>
<h3>PureMVC</h3>
<p>PureMVC is a lightweight framework for creating applications based upon the classic <a href="http://en.wikipedia.org/wiki/Model-View-Controller" title="Wikipedia: Model, View and Controller design pattern" target="_blank" rel="nofollow">Model-View-Controller</a> concept.</p>
<p>Based upon proven design patterns, this free, open source framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Flash and <acronym title="Adobe Integrated Runtime">AIR</acronym>, has now been ported to nearly all major development platforms.</p>
<p>Two versions of the framework are supported with reference implementations; Standard and MultiCore, though only the Standard version has been ported to other languages so far.</p>
<p>More information can be found on the <a href="http://puremvc.org/" title="PureMVC Framework" target="_blank" rel="nofollow">PureMVC project&#8217;s website</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Mate</h3>
<p>Mate is a tag-based, event-driven Flex framework.</p>
<p>Flex applications are event-driven. Mate framework has been created to make it easy to handle the events your Flex application creates. Mate allows you to define who is handling those events, whether data needs to be retrieved from the server, or other events need to be triggered.</p>
<p>In addition, Mate provides a mechanism for dependency injection to make it easy for the different parts of your application to get the data and objects they need.</p>
<p>More information can be found on the <a href="http://mate.asfusion.com/" title="Mate Framework at ASFusion" target="_blank" rel="nofollow">Mate project&#8217;s website</a>.</p>
<h3>Swiz</h3>
<p>Swiz is a framework for Adobe Flex that aims to bring complete simplicity to <abbr title="Rich Internet Application">RIA</abbr> development. Swiz provides Inversion of Control, event handing, and simple life cycle for asynchronous remote methods. In contrast to other major frameworks for Flex, Swiz imposes no <abbr title="Java 2 Platform, Enterprise Edition">J2EE</abbr> patterns on your code, no repetitive folder layouts, and no boilerplate code on your development. Swiz represents best practices learned from the top <abbr title="Rich Internet Application">RIA</abbr> developers at some of the best consulting firms in the industry, enabling Swiz to be simple, lightweight, and extremely productive.</p>
<p>More information can be found on the <a href="http://code.google.com/p/swizframework/" title="Swiz Framework on Google Code" target="_blank" rel="nofollow">Swiz project&#8217;s website</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Guasax</h3>
<p>Guasax is an ease of use programming framework which provides the creation of an ordered and scalable application with Adobe Flex. The lifecycle of the Guasax framework is based in the <acronym title="Model-View-Controller">MVC</acronym> pattern to take on our program actions. The Guasax framework helps you to maintain your business logic tier highly decoupled from your presentation logic tier.</p>
<p>Guasax takes reflection and introspection techniques as well as the <a href="http://en.wikipedia.org/wiki/Inversion_of_control" title="Wikipedia: Inversion of Control" target="_blank" rel="nofollow">Inversion of Control</a> (<abbr title="Inversion of Control">IoC</abbr>) pattern to execute the operations which we have pointed at and to make a decision about itself. Guasax is not intrusive on your class model. You <em>don&#8217;t</em> have to extend your classes in a framework class to use it.</p>
<p>More information can be found on the <a href="http://www.guasax.com/" title="Guasax Project" target="_blank" rel="nofollow">Guasax project&#8217;s website</a> or on their <a href="http://code.google.com/p/guasax/" title="Guasax Project on Google Code" target="_blank" rel="nofollow">Google code project</a>.</p>
<h3>Model-Glue: Flex</h3>
<p>Model-Glue: Flex brings <a href="http://en.wikipedia.org/wiki/Implicit_invocation" title="Wikipedia: Implicit Invocation" target="_blank" rel="nofollow">implicit invocation</a>, Model-View-Controller design, and cleaner, less repetitive integration with backend services to Flex and <acronym title="Adobe Integrated Runtime">AIR</acronym> applications.</p>
<p>It shuns repetitive, boilerplate code in favor of helper classes and expressive <abbr title="Application Programming Interface">API</abbr>s.</p>
<p>More information can be found on the <a href="http://www.model-glue.com/flex.cfm" title="Model-Glue: Flex project's website" target="_blank" rel="nofollow">Model-Glue: Flex project&#8217;s website</a>.</p>
<h3>Gaia</h3>
<p>Gaia is an open-source front-end Flash Framework for <abbr title="ActionScript 3">AS3</abbr> and <abbr title="ActionScript 2">AS2</abbr> designed to dramatically reduce development time.</p>
<p>Gaia is targeted at anyone who develops Flash sites. It provides solutions to the challenges and repeated tasks faced with front-end Flash site development, such as navigation, transitions, preloading, asset management, site structure, deep linking and <abbr title="Search Engine Optimisation">SEO</abbr>. It provides speed and flexibility in your workflow and a simple API that gives you access to its powerful features.</p>
<p>More information can be found on the <a href="http://www.gaiaflashframework.com/" title="Gaia framework's website" target="_blank" rel="nofollow">Gaia Framework&#8217;s website</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>UPDATE: Some more frameworks that I overlooked.</strong></p>
<h3>Parsley</h3>
<p>Parsley is an application framework for Flex/Flash/AIR applications written in AS3. It contains the following modules:</p>
<p><abbr title="Inversion of Control">IoC</abbr> Container (Configuration and Dependency Injection) &#8211; Inspired by the Spring Framework it brings the concept of an<abbr title="Inversion of Control">IoC</abbr>(Inversion of Control) container to ActionScript. It is useful for configuration and wiring of applications. It helps building a well structured architecture and decoupling the individual building blocks of your application. Configuration is based on <abbr title="eXtensible Markup Language">XML</abbr> files.</p>
<p><abbr title="Model View Controller">MVC</abbr> Framework &#8211; The <abbr title="Model View Controller">MVC</abbr> (Model View Controller) framework helps decouple the view layer from other parts of the application. It borrows the concept of a FrontController from Cairngorm, but instead of advocating the use of BusinessDelegate and ServiceLocator patterns, the framework integrates the FrontController with the <abbr title="Inversion of Control">IoC</abbr> container.<br />
More information can be found on the <a href="http://www.spicefactory.org/parsley/" title="Parsley framework's website" target="_blank" rel="nofollow">Parsley Framework&#8217;s website</a>.</p>
<h3>Prana</h3>
<p>Prana is an Inversion of Control (<abbr title="Inversion of Control">IoC</abbr>) Container for ActionScript 3.0, and more specifically the Flex framework. It enables you to configure objects and components in a non-intrusive way by describing them in an external <abbr title="eXtensible Markup Language">XML</abbr> document and having them loaded at runtime.</p>
<p>At its core is a Spring-ish application context and <abbr title="Inversion of Control">IoC</abbr> container. The <abbr title="eXtensible Markup Language">XML</abbr> dialect for the application context is aimed to be Spring compliant.</p>
<p>The framework also contains utility classes for configuring and extending Cairngorm and PureMVC applications, a Reflection <abbr title="Application Programming Interface">API</abbr> and general utilities.</p>
<p>More information can be found on the <a href="http://www.pranaframework.org" title="Prana framework's website" target="_blank" rel="nofollow">Prana Framework&#8217;s website</a>.</p>
<h3>Arp</h3>
<p>Arp is a pattern-based framework for Flash and Flex. It supports both ActionScript 2 and ActionScript 3.</p>
<p>More information can be found on the <a href="http://osflash.org/projects/arp/" title="Arp Framework" target="_blank" rel="nofollow">Arp project&#8217;s page</a> on the Open Source Flash website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/ria-flex-air-frameworks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the MooTools Autocompleter Plugin with ColdFusion</title>
		<link>http://www.simonwhatley.co.uk/using-the-mootools-autocompleter-plugin-with-coldfusion</link>
		<comments>http://www.simonwhatley.co.uk/using-the-mootools-autocompleter-plugin-with-coldfusion#comments</comments>
		<pubDate>Thu, 21 Aug 2008 10:57:35 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Australia]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[autocompleter]]></category>
		<category><![CDATA[Bulgaria]]></category>
		<category><![CDATA[CNet]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Dylan Verheul]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Harald Kirschner]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JavaScript Object Notation]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[New Brunswick]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[search interface]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=883</guid>
		<description><![CDATA[In a previous post, I demonstrated how to implement Dylan Verheul’s jQuery Autocomplete plugin. Not content with demonstrating one library's plugin, it is now the turn of Mootools.]]></description>
			<content:encoded><![CDATA[<p>In a <a href="/using-jquery-auto-complete-with-coldfusion" title="Using jQuery Auto-Complete with ColdFusion">previous post</a>, I demonstrated how to implement Dylan Verheul&#8217;s <a href="http://www.dyve.net/jquery/?autocomplete" title="jQuery Autocomplete Plugin" target="_blank" rel="nofollow">jQuery Autocomplete plugin</a>. Not content with demonstrating one library&#8217;s plugin, it is now the turn of <a href="http://mootools.net/" title="MooTools JavaScript Framework" target="_blank" rel="nofollow">MooTools</a>.</p>
<blockquote><p>MooTools is a compact, modular, Object-Oriented JavaScript framework designed for the intermediate to advanced JavaScript developer. It allows you to write powerful, flexible, and cross-browser code with its elegant, well documented, and coherent API.</p></blockquote>
<p>In this post I will show you how to implement the <a href="http://digitarald.de/project/autocompleter/" title="Autocompleter Plugin" target="_blank" rel="nofollow">AutoCompleter plugin</a> by Harald Kirschner. Kirschner&#8217;s AutoCompleter plugin script for MooTools provides the functionality for text suggestion and completion. It features different data-sources (local, <acronym title="JavaScript Object Notation">JSON</acronym> or <abbr title="eXtensible Markup Language">XML</abbr>), a variety of user interactions, custom formatting, multiple selection, animations and much more.</p>
<h3>The Goal</h3>
<p>The goal of this post will be the same as the <a href="/using-jquery-auto-complete-with-coldfusion" title="Using jQuery Auto-Complete with ColdFusion">jQuery autocomplete post</a>: Allow the user to type a few characters into a standard form text input field and to automatically provide suggestions from which the user can select.</p>
<h3>Prerequisites</h3>
<ol>
<li>The <a href="http://mootools.net/download" title="Mootools Download" target="_blank" rel="nofollow">latest copy of MooTools</a></li>
<li>A basic understanding of JavaScript and <acronym title="JavaScript Object Notation">JSON</acronym></li>
<li>A server-side script that can respond to the <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> request, in our case ColdFusion</li>
</ol>
<h3>Demo</h3>
<p>The demo below will show how to interact with a simple ColdFusion script, but I&#8217;ll also provide <a href="/examples/autocomplete/mootools/" title="More examples">more (advanced) examples</a> in the <a href="/examples/autocomplete/mootools/autocomplete.zip" title="Download the files">download</a>.</p>
<h3>How It Works</h3>
<p>Once the user begins to type into the form text input field, the MooTools auto-complete is activated. After a set character length and time interval (both optional), a list of items is displayed below the input field. The user can select an item with either the arrow keys or mouse.</p>
<p>NB. Clicking back in the input field will repopulate the auto-complete list, if options are available, so that the user can change the selection. Deleting part of the chosen item will also trigger a new selection list.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>The Code</h3>
<p>There are three parts to this demo:</p>
<ol>
<li>The page’s HTML.</li>
<li>The server-side code to produce the dynamic page (i.e. to load the autocomplete <code>div</code> when the user types something into the input field).</li>
<li>The MooTools JavaScript.</li>
</ol>
<p><strong>HTML Form</strong></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;h1&gt;Example: Country Lookup&lt;/h1&gt;
&lt;p&gt;Using &lt;abbr title=&quot;Asynchronous JavaScript and XML&quot;&gt;AJAX&lt;/abbr&gt; to interrogate the database.&lt;/p&gt;
&lt;p&gt;Example data: Australia, Bulgaria, United Kingdom&lt;/p&gt;
&lt;form name=&quot;frmAutoCompleteCountry&quot; id=&quot;frmAutoCompleteCountry&quot; action=&quot;#&quot; method=&quot;post&quot;&gt;
&lt;p&gt;
&lt;label for=&quot;country&quot;&gt;Country&lt;/label&gt;
&lt;input type=&quot;text&quot; name=&quot;country&quot; id=&quot;country&quot; /&gt;
&lt;/p&gt;
&lt;/form&gt;</pre></div></div>

<p><strong>ColdFusion</strong></p>
<p>Below is a simple ColdFusion component that takes a string as an argument. This string is part or all of the country name. The query results are parsed as an array and returned from the function, as <acronym title="JavaScript Object Notation">JSON</acronym>, to the MooTools auto-complete function.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cfcomponent</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
&nbsp;
	<span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;getCountry&quot;</span> <span style="color: #0000ff">access</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;remote&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span> <span style="color: #0000ff">returntype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;array&quot;</span> returnf<span style="color: #0000ff;">or</span>mat<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;json&quot;</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;country&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
&nbsp;
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfset</span> <span style="color: #0000ff;">var</span> qryCountry <span style="color: #0000ff">=</span> <span style="color: #800080;">queryNew</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">'country'</span><span style="color: #000000;">&#41;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfset</span> <span style="color: #0000ff;">var</span> arrCountry <span style="color: #0000ff">=</span> <span style="color: #800080;">arrayNew</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
&nbsp;
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfquery</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;qryCountry&quot;</span> <span style="color: #0000ff">datasource</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;test&quot;</span><span style="color: #800000;">&gt;</span></span>
		SELECT countryName
		FROM country
		WHERE countryName LIKE <span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;%#ARGUMENTS.country#%&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_varchar&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;/cfquery&gt;</span></span>
&nbsp;
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfloop</span> <span style="color: #0000ff">query</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;qryData&quot;</span><span style="color: #800000;">&gt;</span></span>
			<span style="color: #333333;"><span style="color: #800000;">&lt;cfset</span> arrCountry<span style="color: #000000;">&#91;</span>currentRow<span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> qryCountry.countryName<span style="color: #000000;">&#91;</span>currentRow<span style="color: #000000;">&#93;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;/cfloop&gt;</span></span>
&nbsp;
		<span style="color: #333333;"><span style="color: #0000ff;">&lt;</span>cfreturn arrCountry <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #800000;">&lt;/cfcomponent&gt;</span></span></pre></div></div>

<p><strong>JavaScript</strong></p>
<p>The JavaScript will attach itself after the <acronym title="Document Object Model">DOM</acronym> is ready &#8212; this more or less relates to when the page has loaded in the browser. Each time the text input field, with the ID of country, is changed, the <code>Autocompleter.Ajax.Json</code> event is fired. This makes a call to the ColdFusion component, which returns a <acronym title="JavaScript Object Notation">JSON</acronym> object of matched items. This <acronym title="JavaScript Object Notation">JSON</acronym> object is interpreted by the plugin and rendered as an <abbr title="Hyper-Text Markup Language">HTML</abbr> un-ordered list.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot; src=&quot;mootools.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;Observer.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;Autocompleter.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;Autocompleter.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.addEvent('domready', function() {
	new Autocompleter.Ajax.Json(
		'country',
		'data/Country.cfc?method=getCountry&amp;returnformat=json&amp;country=' + $('country').getProperty('value')
		, {
			'minLength': 1, // We wait for at least one character
			'overflow': true // Overflow for more entries'
	});
});
&lt;/script&gt;</pre></div></div>

<h3>Where to Take it Next</h3>
<p><strong>Unobtrusive JavaScript</strong></p>
<p>As with any page that is loaded with JavaScript and <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> functionality, it should work without JavaScript.</p>
<p>To achieve this with the above tutorial, you will need to replace the MooTools autocomplete functionality with an ‘interim’ page that allows a user to select from a list of items, effectively turning the input field into a simple search interface. Of course, all other form field information would need to be retained between pages.</p>
<h3>Download the Code</h3>
<p>The <a href="/examples/autocomplete/mootools/autocomplete.zip" title="Download the example code">example code</a> can be downloaded from the demo page. Included are ColdFusion and PHP examples.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/using-the-mootools-autocompleter-plugin-with-coldfusion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Than Just Hot AIR &#8211; Single Site Browsers</title>
		<link>http://www.simonwhatley.co.uk/more-than-just-hot-air-single-site-browsers</link>
		<comments>http://www.simonwhatley.co.uk/more-than-just-hot-air-single-site-browsers#comments</comments>
		<pubDate>Wed, 09 Apr 2008 09:11:13 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[3D graphics]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Integrated Runtime]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Alex Graveley]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[auto-software updates]]></category>
		<category><![CDATA[Bubbles]]></category>
		<category><![CDATA[Chris Toshok]]></category>
		<category><![CDATA[clever little tools]]></category>
		<category><![CDATA[control device]]></category>
		<category><![CDATA[default web browser]]></category>
		<category><![CDATA[desktop applications]]></category>
		<category><![CDATA[desktop computing]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flash player for development]]></category>
		<category><![CDATA[Fluid]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[graphics hardware]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Mozilla Prism]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[Pyro]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[single site browsers]]></category>
		<category><![CDATA[site-specific applications]]></category>
		<category><![CDATA[SSB]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Web Browser]]></category>
		<category><![CDATA[Web browsers]]></category>
		<category><![CDATA[web browsing activity]]></category>
		<category><![CDATA[web resource]]></category>
		<category><![CDATA[web resources]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=510</guid>
		<description><![CDATA[Adobe Integrated Runtime is more than just hot air, it traverses the previously unexplored space that exists between the Web and desktop applications.

Up until very recently, the void between the Web and the desktop seemed like a schism that could not be crossed. But since AIR's 1.0 release in February this year, a whole host of other applications are emerging to compete with AIR in the single site browser space.]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/adobe_air_logo.thumbnail.png' alt='Adobe AIR Logo' style="float:left; margin-right:5px;" />Adobe Integrated Runtime is more than just hot air, it traverses the previously unexplored space that exists between the Web and desktop applications.</p>
<p>Up until very recently, the void between the Web and the desktop seemed like a schism that could not be crossed. But since <acronym title="Adobe Integrated Runtime">AIR</acronym>&#8216;s 1.0 release in February this year, a whole host of other applications are emerging to compete with <acronym title="Adobe Integrated Runtime">AIR</acronym> in the single site browser space.</p>
<p>Although <acronym title="Adobe Integrated Runtime">AIR</acronym> is very new, the product is remarkably mature with the integration of the excellent opensource <a href="http://webkit.org" title="WebKit" target="_blank" rel="nofollow">WebKit</a> browser engine for rendering <acronym title="HyperText Markup Language">HTML</acronym> and JavaScript, the <a href="http://www.sqlite.org" title="SQLite" target="_blank" rel="nofollow">SQLite</a> database engine for embedded database functionality and of course, Adobe&#8217;s Flash player for development of Flash-based Rich Internet Applications. Because of this flexibility, the learning curve faced by developers is almost non-existent, they simply have to get to grips with the <acronym title="Adobe Integrated Runtime">AIR</acronym> <acronym title="Application Programming Interface">API</acronym>.</p>
<h3>What is all the fuss about?</h3>
<p>Delving into the <acronym title="Adobe Integrated Runtime">AIR</acronym> <acronym title="Application Programming Interface">API</acronym>, your application will have the ability to detect whether it is currently the active window or connected to the network. You can access the file system, allowing you to read and write files, access other datasources, tap into the native menu options or interact with almost any aspect of the operating system in a way familiar to common desktop applications. This functionality is available regardless of the architecture on which it is installed. Therefore <acronym title="Adobe Integrated Runtime">AIR</acronym> applications will work similarly when installed on a Windows <acronym title="Personal Computer">PC</acronym> or Mac, and soon on Linux machines as well.</p>
<blockquote><p>AIR is much, much more than a single-site browser &#8212; it&#8217;s a cross-platform runtime environment and the distinction is significant.</p></blockquote>
<p>The ability to run applications built on <acronym title="Adobe Integrated Runtime">AIR</acronym> on almost any machine, on- and offline, sets it apart from any other offering currently out there or in development. For example, <a href="http://gears.google.com" title="Google Gears" target="_blank" rel="nofollow">Google Gears</a> is restricted to <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> applications, whilst Mozilla Prism isn&#8217;t much more advanced than a cut-down version of Firefox, with no offline capabilities yet.</p>
<h3>Who else has entered the race?</h3>
<p>As mentioned, a significant entry is Mozilla&#8217;s <a href="http://labs.mozilla.com/projects/prism/" title="Mozilla Prism" target="_blank" rel="nofollow">Prism</a>, however, <a href="http://www.karppinen.fi/pyro/" title="Pyro" target="_blank" rel="nofollow">Pyro</a> for Linux and <a href="http://www.3d3r.com/bubbles/" title="3D3R Bubbles" target="_blank" rel="nofollow">Bubbles</a> and <a href="http://fluidapp.com/" title="Fluid App" target="_blank" rel="nofollow">Fluid</a> for Mac are clever little tools for packaging up an existing website and presenting it as a standalone desktop application.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Mozilla Prism</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/04/mozilla-prism-logo.thumbnail.png' alt='Mozilla Prism Logo' style="float:left; margin-right:5px;" />Prism, previously known as WebRunner is a product in development which integrates web applications with the desktop, allowing web applications to be launched from the desktop and configured independently of the default web browser. It is commonly used with Google <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> Applications, such as Gmail and Google Docs.</p>
<p>Prism is part of an experiment by Mozilla designed to &#8220;bridge the divide in the user experience between web applications and desktop applications&#8221;. Essentially, Prism will allow you to create a desktop-like application out of individual websites. These site-specific applications are a growing trend and a trend heavily marketed by, not only Adobe, but now Mozilla, as &#8216;the future&#8217;.</p>
<blockquote><p>
While traditionally users have interacted mostly with desktop applications, more and more of them are using Web applications. But the latter often fit awkwardly into the document-centric interface of Web browsers.</p></blockquote>
<p>In its current form, Prism doesn&#8217;t have the ability to function as a desktop application without access to the Internet, but Mozilla says it is &#8220;working to increase the capabilities of those apps by adding functionality to the Web itself, such as providing support for offline data storage and access to <abbr title="3 Dimensional">3D</abbr> graphics hardware.&#8221;</p>
<p>More details can be found on the <a href="http://labs.mozilla.com/projects/prism/" title="Mozilla Prism" target="_blank" rel="nofollow">Mozilla Prism website</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Pyro Desktop</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/04/pyro-logo.thumbnail.png' alt='Pyro Logo' style="float:left; margin-right:5px;" />Pyro Desktop is a new type of desktop environment for Linux built on Mozilla Firefox. Its goal is to enable true integration between the Web and modern desktop computing. Pyro was announced during <acronym title="GNOME Users' And Developers' European Conference">GUADEC</acronym> 2007 and is developed by Alex Graveley and Chris Toshok.</p>
<p>More details can be found on the <a href="http://www.karppinen.fi/pyro/" title="Pyro" target="_blank" rel="nofollow">Pyro Desktop website</a>.</p>
<h3>3D3R Bubbles</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/04/bubbles-logo.thumbnail.gif' alt='Bubbles Logo' style="float:left; margin-right:5px;" />Bubbles is a desktop application that allows you to work with your web resources in the way you want to work with them.</p>
<p>The Bubbles application window, known simply as a Bubble carries the web resource almost like a web browser does. Since the Bubble has advanced browser capabilities there&#8217;s an advanced control device for it &#8212; the Bubble seed &#8212; an <acronym title="eXensible Markup Language">XML</acronym> file called Smart Bubble. It defines the properties â€” the whats &#038; the hows â€” of its Bubble window. The Smart Bubble contains the information about what Bubble will load, how it will look on the desktop and what capabilities it will have, etc. So it goes from the Smart Bubble into a grown Bubble that lives on your desktop, accessible from the system tray.</p>
<p>More details can be found on the <a href="http://www.3d3r.com/bubbles/" title="3D3R Bubbles" target="_blank" rel="nofollow">3D3R Bubbles website</a>.</p>
<h3>Fluid App</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/04/fluid-logo.thumbnail.png' alt='Fluid Logo' style="float:left; margin-right:5px;" />Fluid is a way to create Site-Specific Browsers <acronym title="Site-Specific Browsers">SSB</acronym>s to run each of your favorite WebApps as a separate desktop application. Fluid gives any WebApp a home on your Mac OS X desktop complete with Dock icon, standard menu bar, logical separation from your other web browsing activity, and many other goodies.</p>
<p>Fluid includes optional Tabbed Browsing, built-in Userscripting (aka <a href="https://addons.mozilla.org/en-US/firefox/addon/748" title="GreaseMonkey" target="_blank" rel="nofollow">Greasemonkey</a>/<a href="http://8-p.info/greasekit/" title="GreaseKit" target="_blank" rel="nofollow">GreaseKit</a>), RSS/Atom Feed detection, a JavaScript <acronym title="Application Programming Interface">API</acronym> for setting dock badges, showing <a href="http://growl.info/" title="Growl" target="_blank" rel="nofollow">Growl</a> notifications and adding Dock Menu Items, optional bookmarks, optional browsing to urls outside the <acronym title="Site-Specific Browsers">SSB</acronym> &#8220;home&#8221; domain, Dock badges and Dock menus for Gmail, Google Reader, Facebook, Flickr, and Yahoo! Mail, auto-software updates via the <a href="http://sparkle.andymatuschak.org/" title="Sparkle Update Framework" target="_blank" rel="nofollow">Sparkle Update framework</a>, and custom <acronym title="Site-Specific Browsers">SSB</acronym> icons.</p>
<p>More details can be found on the <a href="http://fluidapp.com/" title="Fluid App" target="_blank" rel="nofollow">Fluid App website</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/more-than-just-hot-air-single-site-browsers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Great Adobe AIR Applications to Check Out</title>
		<link>http://www.simonwhatley.co.uk/great-adobe-air-applications-to-check-out</link>
		<comments>http://www.simonwhatley.co.uk/great-adobe-air-applications-to-check-out#comments</comments>
		<pubDate>Wed, 19 Mar 2008 09:43:25 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Integrated Runtime]]></category>
		<category><![CDATA[Adobe Labs]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Asynchronous JavaScript and XML]]></category>
		<category><![CDATA[bbc]]></category>
		<category><![CDATA[Benjamin Dobler]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[collaboration tool]]></category>
		<category><![CDATA[designer]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[desktop applications]]></category>
		<category><![CDATA[ebay]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML & XHTML]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[internet-ready]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Kuler]]></category>
		<category><![CDATA[less developer-centric tools]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Marco Kaiser]]></category>
		<category><![CDATA[Microsoft Vista]]></category>
		<category><![CDATA[Nicolas Lierman]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[Picnik image editor]]></category>
		<category><![CDATA[RichFLV]]></category>
		<category><![CDATA[Runtime ( AIR )]]></category>
		<category><![CDATA[SearchCoders]]></category>
		<category><![CDATA[social-interaction tool]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Web Browser]]></category>
		<category><![CDATA[web screenshot tool]]></category>
		<category><![CDATA[web skills]]></category>
		<category><![CDATA[Web technologies]]></category>
		<category><![CDATA[web-based suite]]></category>
		<category><![CDATA[web-hosted application]]></category>
		<category><![CDATA[WebKut]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=472</guid>
		<description><![CDATA[Since the Adobe Integrated Runtime (AIR) was released at the end of February, we now have a stable platform on which to build desktop applications with our existing web skills. A number of people have already started and the Adobe AIR Marketplace is filling with AIR applications by the day.

So what is the big deal?]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/adobe_air_logo.thumbnail.png' alt='Adobe AIR Logo' style="margin-right:5px; float:left;" />Since the Adobe Integrated Runtime (<acronym title="Adobe Integrated Runtime">AIR</acronym>) was released at the end of February, we now have a stable platform on which to build desktop applications with our existing web skills. A number of people have already started and the <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&#038;exc=24&#038;loc=en_us" title="Adobe AIR Marketplace" target="_blank" rel="nofollow">Adobe AIR Marketplace</a> is filling with <acronym title="Adobe Integrated Runtime">AIR</acronym> applications by the day.</p>
<p>So what is the big deal? The Adobe marketing team state that:</p>
<blockquote><p>The Adobe <acronym title="Adobe Integrated Runtime">AIR</acronym> runtime lets developers use proven web technologies to build rich Internet applications that deploy to the desktop and run across operating systems. Adobe AIR offers an exciting new way to engage customers with innovative, branded desktop applications, without requiring changes to existing technology, people, or processes.</p></blockquote>
<p>What <acronym title="Adobe Integrated Runtime">AIR</acronym> applications should you check out?</p>
<p>What is intriguing is that all the tools I have chosen are generally useful tools for the developer or designer, with the exception of twhirl, which is a social-interaction tool. I&#8217;m looking forward to when other, less developer-centric tools become freely available. <a href="http://www.agileagenda.com" title="AgileAgenda" target="_blank" rel="nofollow">AgileAgenda</a> has taken the lead with this respect, albeit not freely available, as has <a href="http://desktop.ebay.com" title="eBay Desktop" target="_blank" rel="nofollow">eBay desktop</a>, but I would like to see examples from the <acronym title="British Broadcasting Corporation">BBC</acronym> in the form of a desktop <a href="http://www.bbc.co.uk/iplayer/" title="BBC iPlayer" target="_blank" rel="nofollow">BBC iPlayer</a> or maybe a Flickr image browser, del.icio.us bookmark reader, <acronym title="Really Simple Syndication">RSS</acronym> aggregator and a <a href="http://www.picnik.com" title="Picnik" target="_blank" rel="nofollow">Picnik</a> image editor.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Analytics Reporting Suite</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/google_analytics_logo.thumbnail.gif' alt='Google Analytics Reporting Suite' style="margin-right:5px; float:left;" />The Analytics Reporting Suite, by Nicolas Lierman, brings <a href="http://www.google.com/analytics" title="Google Analytics" target="_blank" rel="nofollow">Google Analytics</a> to the desktop. It uses it&#8217;s own custom <acronym title="Application Programming Interface">API</acronym> to interact with Google and nearly implements all the features of Analytics.</p>
<p>For website owners this is a must-have application. Like the twhirl <acronym title="Adobe Integrated Runtime">AIR</acronym> application below, it is a fantastic example of what can be achieved with Flex and <acronym title="Adobe Integrated Runtime">AIR</acronym>. Measuring visitor trends and traffic are essential tasks to managing and improving a websites performance. The Analytics Reporting Suite allows you to configure multiple Google&#8217;s Analytics accounts and access the web-based suite&#8217;s plethora of features via a desktop application. The application displays integrated graphs and animations via a tabbed interface, which allows you switch between a number of reports. These reports can then be saved as a <acronym title="Portable Document Format">PDF</acronym>, Excel or <acronym title="eXtensible Markup Language">XML</acronym>document, or printed.</p>
<p>You can <a href="http://www.aboutnico.be/index.php/downloads/" title="Google Analytics Reporting Suite" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the About Nico website.</p>
<h3>twhirl twitter Client</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/twhirl_logo.thumbnail.jpg' alt='Twhirl Logo' style="margin-right:5px; float:left;" />twhirl, by Marco Kaiser, is probably the most popular desktop client for the <a href="http://twitter.com" title="twitter microblogging" target="_blank" rel="nofollow">twitter</a> micro-blogging service. Most of the features available on the twitter website are accessible through twhirl, plus, a lot of usability enhancements have been added to make it easier to manage multiple accounts. This is great for those who want to separate business and personal accounts they may have.</p>
<p>The twhirl application is a great example of how <acronym title="Adobe Integrated Runtime">AIR</acronym> can bring web applications to the desktop; it can dock to the system tray, display message alerts and you can configure the applications opacity when not focused (great if you like Mac and Vista-styled themes). The application allows you to search twitter users, view their timelines, add friends, view followers, delete tweets and much much more. Twhirl automatically fetches your friends&#8217; status updates, direct messages and replies, whilst also colour coding different types of messages and alerting you to messages both audibly and visually.</p>
<p>The twhirl application is skinnable and comes with several built in skins with which you can customise the application. All-in-all twhirl is not only one of the best twitter clients, but <acronym title="Adobe Integrated Runtime">AIR</acronym> applications.</p>
<p>You can <a href="http://www.twhirl.org/project/twhirl" title="twhirl twitter client" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the twhirl website.</p>
<h3>Kuler Desktop</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/kuler_logo.png' alt='Adobe Kuler Logo' style="margin-right:5px; float:left;" />Adobe kuler is the first web-hosted application from Adobe Labs designed both to stand alone and to complement <a href="http://www.adobe.com/products/creativesuite/" title="Adobe Creative Suite 3" target="_blank" rel="nofollow">Adobe Creative Suite</a> software. Built using <a href="http://www.adobe.com/products/flash/" title="Adobe Flash" target="_blank" rel="nofollow">Adobe Flash</a> and ActionScript 3.0, kuler is all about colour: colour for exploration, inspiration, experimentation and sharing. Kuler is clearly targeted at the designer, but anyone interested in colour will benefit from its use.</p>
<p>You can <a href="http://kuler.adobe.com" title="Kuler Desktop" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the Adobe Labs website.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>WebKut</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/webkut_logo.png' alt='WebKut Logo' style="margin-right:5px; float:left;" />WebKut is a web screenshot tool that allows you to capture web pages, or parts of them in a very simple way. It provides you with 3 capture options: the entire page, the current view, or only a selection. This little application proves particularly handy for those presentations or projects that need great visuals from the web.</p>
<p>You can <a href="http://toki-woki.net/p/WebKut/" title="WebKut" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the WebKut website.</p>
<h3>RichFLV</h3>
<p>RichFLV, by Benjamin Dobler, lets you edit <acronym title="Flash Video">FLV</acronym> files. The key features include reading <acronym title="Flash Video">FLV</acronym> metadata, read and edit cuepoints, cut <acronym title="Flash Video">FLV</acronym> files, convert the sound from an <acronym title="Flash Video">FLV</acronym> to <acronym title="MPEG-1 Audio Layer 3">MP3</acronym> format, convert an <acronym title="Flash Video">FLV</acronym> to an <acronym title="Shockwave Flash">SWF</acronym> &#8230; and much more.</p>
<p>You can <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&#038;loc=en_us&#038;extid=1355018" title="RichFLV" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the Adobe <acronym title="Adobe Integrated Runtime">AIR</acronym> Marketplace website.</p>
<h3>SearchCoders Dashboard</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/searchcoders_logo.thumbnail.png' alt='SearchCoders Logo' style="margin-right:5px; float:left;" />This Flex-based chat widget is designed with programmers in mind. The code input feature allows developers to chat about code without disrupting the conversation.</p>
<p>You can <a href="http://www.searchcoders.com/" title="SearchCoders" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the SearchCoders website.</p>
<h3>Pownce</h3>
<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/pownce_logo.thumbnail.png' alt='Pownce Logo' style="margin-right:5px; float:left;" />Much like twhirl in look, feel and ease-of-use, but with a slant towards productivity rather than micro-blogging, Pownce is a way to keep in touch and share things with your friends or colleagues.  You can send people files, links, events, and messages and then have real conversations with the recipients. This is a great collaboration tool and was one of the first services to really embrace <acronym title="Adobe Integrated Runtime">AIR</acronym> as an application architecture, which could realise their service as a desktop client. Everything that is available via the Pownce website is also available via the client application, except and possibly importantly, the ability for the user to amend their account settings and add friends to your network; this still has to be done via the website.</p>
<p>For a small annual amount, Pownce offers a paid-for service which will eliminate adverts from your profile and allow you to send huge file sizes (100<acronym title="MegaByte">MB</acronym>) and customise the theme of your Pownce.</p>
<p>Pownce also offers Drupal integration and a mobile application, which works with the iPhone, BlackBerries and many more &#8216;internet-ready&#8217; mobile devices.</p>
<p>You can <a href="http://pownce.com/" title="Pownce" target="_blank" rel="nofollow" class="snap_noshots">download and install</a> the application from the Pownce website.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/great-adobe-air-applications-to-check-out/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Silverlight? Microsoft Explains&#8230;</title>
		<link>http://www.simonwhatley.co.uk/why-silverlight-microsoft-explains</link>
		<comments>http://www.simonwhatley.co.uk/why-silverlight-microsoft-explains#comments</comments>
		<pubDate>Thu, 13 Dec 2007 22:12:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Accelerator board]]></category>
		<category><![CDATA[ad-insertion solutions]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Integrated Runtime]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[application hosting solution]]></category>
		<category><![CDATA[author content]]></category>
		<category><![CDATA[back-end Web environment]]></category>
		<category><![CDATA[browser-based]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[designers]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[Emmy Award]]></category>
		<category><![CDATA[Escient VC-1 Player]]></category>
		<category><![CDATA[Expression Studio]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[interactive applications]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Internet Information Services]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[media content]]></category>
		<category><![CDATA[media experiences]]></category>
		<category><![CDATA[media format]]></category>
		<category><![CDATA[media rich experiences]]></category>
		<category><![CDATA[media tools]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Silverlight]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[moonlight]]></category>
		<category><![CDATA[MP3]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[proprietory]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Role-specific tools]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Society of Motion Picture and Television Engineers]]></category>
		<category><![CDATA[software features]]></category>
		<category><![CDATA[software services]]></category>
		<category><![CDATA[Sun Microsystems]]></category>
		<category><![CDATA[vector graphics]]></category>
		<category><![CDATA[video playback]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[Web Consortium]]></category>
		<category><![CDATA[Web designers]]></category>
		<category><![CDATA[Web experiences]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Web technologies]]></category>
		<category><![CDATA[Windows Media technologies]]></category>
		<category><![CDATA[windows presentation foundation]]></category>
		<category><![CDATA[with your existing infrastructure]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=391</guid>
		<description><![CDATA[Silverlight aims to compete with Adobe Flash and the presentation components of Ajax. It also competes with Sun Microsystems' JavaFX, which was launched a few days after Silverlight.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.silverlight.net" title="Silverlight" rel="nofollow">Silverlight</a> aims to compete with Adobe <a href="http://www.adobe.com/products/flash" title="Adobe Flash" rel="nofollow">Flash</a> and the presentation components of <acronym title="Asynchronous JavaScript and XML">AJAX</acronym>. It also competes with Sun Microsystems&#8217; <a href="http://www.sun.com/software/javafx/" title="JavaFX" rel="nofollow">JavaFX</a>, which was launched a few days after Silverlight.</p>
<p>Microsoft Silverlight is a proprietary runtime for browser-based Rich Internet Applications, providing a subset of the animation, vector graphics, and video playback capabilities of Windows Presentation Foundation. The runtime is available for Microsoft Windows and Mac OS X, with Linux support under development via the third-party <a href="http://www.mono-project.com/Moonlight" title="Moonlight project" rel="nofollow">Moonlight</a> runtime.</p>
<p>Microsoft describes its advantages as follows:</p>
<p><strong>Compelling Cross-Platform User Experiences</strong></p>
<ul>
<li>Deliver media experiences and rich interactive applications for the Web that incorporate video, animation, interactivity, and stunning user interfaces.</li>
<li>Seamless, fast installation for users, thanks to a small, on-demand, easy-to-install plug-in that is under 2 megabytes (<acronym title="Megabyte">MB</acronym>) in size and works with all leading browsers.</li>
<li>Consistent experiences between Windows-based and Macintosh computers without any additional installation requirements.</li>
<li>Create richer, more compelling Web experiences that take greater advantage of the client for increased performance.</li>
<li>Stunning vector-based graphics, media, text, animation, and overlays that enable seamless integration of graphics and effects into any existing Web application.</li>
<li>Enhance existing standards/<acronym title="Asynchronous JavaScript and XML">AJAX</acronym>-based applications with richer graphics and media, and improve their performance and capabilities by using Silverlight.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>Flexible Programming Model with Collaboration Tools</strong></p>
<ul>
<li>Based on the Microsoft <a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx" title="Microsoft .NET Framework" rel="nofollow">.NET Framework</a>, Silverlight enables developers and designers to easily use existing skills and tools to deliver media experiences and rich interactive applications for the Web.</li>
<li>Simple integration with existing Web technologies and assets means Silverlight works with any back-end Web environment or technology. No &#8220;rip and replace&#8221; required.
</li>
<li>Silverlight integrates with your existing infrastructure and applications, including Apache, <acronym title="PHP: Hypertext Preprocessor">PHP</acronym>, as well as JavaScript and <acronym title="Extensible HyperText Markup Language">XHTML</acronym> on the client.</li>
<li>Choice of development languages including JavaScript, Ruby, Python, C#, Visual Basic .NET, and more.</li>
<li>Role-specific tools for both designers and developers that take advantage of Web standards and the breadth of the Microsoft .NET connected software features.</li>
<li>For designers: Microsoft Expression Studio for creating interactive user interfaces and media rich experiences, preparing media for encoding and distribution, and creating World Wide Web Consortium (<acronym title="World Wide Web Consortium">W3C</acronym>) standards-compliant sites using modern <acronym title="Extensible HyperText Markup Language">XHTML</acronym>, <acronym title="Extensible Markup Language">XML</acronym>, <acronym title="Extensible Stylesheet Language Transformation">XSLT</acronym>, <acronym title="Cascading Style Sheet">CSS</acronym>, and <acronym title="Active Server Pages">ASP</acronym>.NET.</li>
<li>For developers: Microsoft Visual Studio for developing client and server code with full Microsoft IntelliSense, powerful cross-platform debugging, rich language support, and more.</li>
<li>Consistent presentation model by using <acronym title="Extensible Application Markup Language">XAML</acronym>, the declarative presentation language used in Windows Vistaâ€“based applications. Controls, visual designs, media, and other elements can be presented with full design fidelity in both Silverlight and Windows-based applications.</li>
<li>Extensible control model makes it easy to add rich content and behaviors while enabling efficient code-reuse and sharing.</li>
<li>Dramatically improved performance for <acronym title="Asynchronous JavaScript and XML">AJAX</acronym>-enabled Web sites with the power, performance, and flexibility of Silverlight and .NET-connected software.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>High Quality, Low Cost Media</strong></p>
<ul>
<li>Unified media format that scales from high definition (<acronym title="High Definition">HD</acronym>) to mobile with Windows Media Video (<acronym title="Windows Media Video">WMV</acronym>), the Microsoft implementation of the Society of Motion Picture and Television Engineers (<acronym title="Society of Motion Picture and Television Engineers">SMPTE</acronym>) <a href="http://en.wikipedia.org/wiki/VC-1" title="VC-1" rel="nofollow">VC-1</a> video standard, as well as support for Windows Media Audio (<acronym title="Windows Media Audio">WMA</acronym>) and MP3 audio.</li>
<li>Add vector-based graphics and overlays to media with support for integration of graphics that scale to any size and broadcast-style overlays for tickers and closed captioning.</li>
<li>Flexible ad-insertion solutions with video and animation, including the ability to deliver fluid, broadcast-style video or animated advertisements without loss of visual fidelity or motion quality.</li>
<li>Lower-cost media streaming with Emmy Award winning Windows Media technologies that can lower the cost of streaming delivery by up to 46%, and enjoy the flexibility to work with your existing Windows Media streaming deployments. Even further cost reductions are possible with the upcoming Microsoft Internet Information Services (<acronym title="Internet Information Services">IIS</acronym>) Media Pack for Microsoft Windows Server 2008.</li>
<li>Broad ecosystem of media tools, servers, and solutions compatible with the Windows Media operating system.</li>
<li>Microsoft PlayReady content-access technology that delivers a single solution for digital rights management support on both Windows-based and Macintosh computers for content providers (coming in Silverlight 1.1)</li>
<li>Powerful encoding tools for live and on-demand publishing of media experiences with Microsoft Expression Encoder, including hardware-accelerated encoding of <acronym title="Windows Media Video">WMV</acronym> and <a href="http://en.wikipedia.org/wiki/VC-1" title="VC-1" rel="nofollow">VC-1</a> at up to 15 times the performance of software alone when paired with a Tarari Encoder Accelerator board.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>Connected to Data, Servers, and Services</strong></p>
<ul>
<li>Mash-up and incorporate services and data from the Web by taking advantage of the Silverlight support for <a href="http://en.wikipedia.org/wiki/Language_Integrated_Query" title="Language Integrated Query" rel="nofollow">LINQ</a> while accessing that data with common protocols like <acronym title="JavaScript Object Notation">JSON</acronym>, <acronym title="Really Simple Syndication">RSS</acronym>, <acronym title="Plain Old XML">POX</acronym>, and <acronym title="Representational State Transfer">REST</acronym>.</li>
<li>Increase discoverability of rich interactive application (<acronym title="Rich Internet Application">RIA</acronym>) content that can be indexed and searched due to the text-based <acronym title="Extensible Application Markup Language">XAML</acronym> format that describes interface and content in a Silverlight-based application.</li>
<li>Rapidly scale applications with Silverlight Streaming by Windows Live to host and integrate software services and media content.</li>
</ul>
<p><strong>Streaming audio and video</strong></p>
<ul>
<li>Silverlight Streaming by Windows Live offers a free streaming and application hosting solution for delivering high-quality, cross-platform, cross-browser, media-enabled rich interactive applications (<acronym title="Rich Internet Application">RIA</acronym>s). With the ability to author content in Microsoft Expression Encoder and other third-party editing environments, Web designers maintain complete control of the user experience.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/why-silverlight-microsoft-explains/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

