<?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; Adobe</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/adobe/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>Mark Pilgrim &#8211; A Gentle Introduction to Video Encoding: Captioning</title>
		<link>http://www.simonwhatley.co.uk/mark-pilgrim-a-gentle-introduction-to-video-encoding-captioning</link>
		<comments>http://www.simonwhatley.co.uk/mark-pilgrim-a-gentle-introduction-to-video-encoding-captioning#comments</comments>
		<pubDate>Thu, 13 Oct 2011 09:00:41 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[accessible online video]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[assistive technology]]></category>
		<category><![CDATA[AVI]]></category>
		<category><![CDATA[Container formats]]></category>
		<category><![CDATA[DirectShow-based video player]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[HDMI]]></category>
		<category><![CDATA[Joe Clark]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mark Pilgrim]]></category>
		<category><![CDATA[Microsoft Corporation]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[MPEG]]></category>
		<category><![CDATA[MPEG-4]]></category>
		<category><![CDATA[MPEG-4 Part 17]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[SAMI]]></category>
		<category><![CDATA[SMIL]]></category>
		<category><![CDATA[SubRip]]></category>
		<category><![CDATA[SubStation Alpha]]></category>
		<category><![CDATA[Subtitle]]></category>
		<category><![CDATA[Subtitling]]></category>
		<category><![CDATA[SubViewer]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[video player]]></category>
		<category><![CDATA[VSFilter]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[YouTube Inc]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=4809</guid>
		<description><![CDATA[The first thing you need to know about captions and subtitles is that captions and subtitles are different. The second thing you need to know about captions and subtitles is that you can safely ignore the differences unless you're creating your own from scratch. I'm going to use the terms interchangeably throughout this article, which will probably drive you crazy if you happen to know and care about the difference.]]></description>
			<content:encoded><![CDATA[<p><strong>This article was first published on 7th January 2009, on Mark Pilgrim&#8217;s website. That website no longer exists so this article serves as an historical record. I have preserved all emphasis and links as per the original article.</strong></p>
<p>The first thing you need to know about captions and subtitles is that <a href="http://joeclark.org/access/captioning/bpoc/ST.html" title="Captions and subtitles are different" target="_blank" rel="nofollow">captions and subtitles are different</a>. The second thing you need to know about captions and subtitles is that you can safely ignore the differences unless you&#8217;re creating your own from scratch. I&#8217;m going to use the terms interchangeably throughout this article, which will probably drive you crazy if you happen to know and care about the difference.</p>
<p>Historically, captioning has been driven by the needs of deaf and hearing impaired consumers, and captioning technology has been designed around <a href="http://en.wikipedia.org/wiki/Closed_captioning#Television_and_video" title="The technical quirks of broadcast television" target="_blank" rel="nofollow">the technical quirks of broadcast television</a>. In the United States, so-called &#8220;<a href="http://main.wgbh.org/wgbh/pages/mag/services/captioning/faq/" title="Closed captions" target="_blank" rel="nofollow">closed captions</a>&#8221; are embedded into a part of the NTSC video source (&#8220;Line 21&#8243;) that is normally outside the viewing area on televisions. In Europe, they use a completely different system that is embeddable in the PAL video source. Over time, each new medium (VHS, DVD, and now online digital video) has dealt a blow to the accessibility gains of the previous medium. For example:</p>
<ul>
<li>PAL VHS tapes did not have enough bandwidth to store closed captions at all.</li>
<li>DVDs have the technical capability, but producers often manage to screw it up anyway; e.g. DVDs of low-budget television shows are often released without the closed captions that accompanied the original broadcast.</li>
<li>HDMI cables drop &#8220;Line 21&#8243; closed captions altogether. If you play an NTSC DVD on an HDTV over HDMI, you&#8217;ll never see the closed captions, even if the DVD has them.</li>
</ul>
<p>And <a href="http://joeclark.org/book/sashay/serialization/Chapter13.html" title="Accessible online video is hopeless" target="_blank" rel="nofollow">accessible online video is just fucking hopeless</a>. (And no, it won&#8217;t change <a href="http://www.alistapart.com/articles/thisishowthewebgetsregulated/" title="Unless new regulation forces a change" target="_blank" rel="nofollow">unless new regulation forces it to change</a>. When it comes to captioning, Joe Clark has been right longer than many of you have been alive.)</p>
<p>So even in broadcast television, captioning technology was fractured by different broadcast technologies in different countries. Digital video had the capability of unifying the technologies and learning from their mistakes. Of course, exactly the opposite happened. Early caption formats split along company lines; each major video software platform (RealPlayer, QuickTime, Windows Media, Adobe Flash) implemented captioning in their own way, with levels of adoption ranging from nil to zilch. At the same time, an entire subculture developed around &#8220;<a href="http://en.wikipedia.org/wiki/Fansub" title="Wikipedia: Fan-subbing" target="_blank" rel="nofollow">fan-subbing</a>,&#8221; i.e. using captioning technology to provide translations of foreign language videos. For example, non-Japanese-speaking consumers wanted to watch Japanese anime films, so amateur translators stepped up to publish their own English captions that could be overlaid onto the original film. In the 1980s, fansubbers would actually take VHS tapes and overlay the English captions onto a new tape, which they would then (illegally) distribute. Nowadays, translators can simply publish their work on the Internet as a standalone file. English-speaking consumers can have their DVDs shipped directly from Japan, and they use software players that can overlay standalone English caption files while playing their Japanese-only DVDs. The legality of distributing these unofficial translations (even separately, in the form of standalone caption files) <a href="http://www.nytimes.com/2005/08/21/arts/21solo.html" target="_blank" rel="nofollow">has been disputed in recent years</a>, but the fansubbing community persists.</p>
<p>Technically, there is a lot of variation in captioning formats. At their core, captions are a combination of text to display, start and end times to display it, information about where to position the text on a screen, fonts, styling, alignment, and so on. Some captions roll up from the bottom of the screen, others simply appear and disappear at the appropriate time. Some caption formats mandate where each caption should be placed and how it should be styled; others merely suggest position and styling; others leave all display attributes entirely up to the player. Almost every conceivable combination of these variables has been tried. Some forms of media try multiple combinations at once. DVDs, for example, can have two entirely distinct forms of captioning — closed captioning (as used in NTSC broadcast television) embedded in the video stream, and one or more subtitle tracks. DVD subtitle tracks are used for many different things, including subtitles (just the words being spoken, in the same language as the audio), captions for the hearing impaired (which include extra notations of background noises and such), translations into other languages, and director&#8217;s commentary. Oh, and they&#8217;re stored on the DVD as images, not text, so the end user has no control over fonts or font size.</p>
<p>Beyond DVDs, most caption formats store the captions as text, which inevitably raises the issue of character encoding. Some caption formats explicitly specify the character encoding, others only allow UTF-8, others don&#8217;t specify any encoding at all. On the player side, most players respect the character encoding if present (but may only support specific encodings); in its absence, some players assume UTF-8, some guess the encoding, and some allow the user to override the encoding. Obviously standalone caption files can be in any format, but if you want to embed your captions as a track within a video container, your choices are limited to the caption formats that the video container supports.</p>
<p>And remember when I said that there were a metric fuck-ton of audio codecs? Forget that. There are an imperial fuck-ton of caption formats (i.e. multiply by 9/5 and add 32). Here is a partial list of caption formats, taken from the list of formats supported by <a href="http://www.urusoft.net/products.php?cat=sw" title="Subtitle Workshop" target="_blank" rel="nofollow">Subtitle Workshop</a>, which I used to caption my short-lived video podcast series:</p>
<p>Adobe Encore DVD, Advanced SubStation Alpha, AQTitle, Captions 32, Captions DAT, Captions DAT Text, Captions Inc., Cheetah, CPC-600, DKS Subtitle Format, DVD Junior, DVD Studio Pro, DVD Subtitle System, DVDSubtitle, FAB Subtitler, IAuthor Script, Inscriber CG, JACOSub 2.7+, Karaoke Lyrics LRC, Karaoke Lyrics VKT, KoalaPlayer, MacSUB, MicroDVD, MPlayer, MPlayer2, MPSub, OVR Script, Panimator, Philips SVCD Designer, Phoenix Japanimation Society, Pinnacle Impression, PowerDivX, PowerPixel, QuickTime Text, RealTime, SAMI Captioning, Sasami Script, SBT, Sofni, Softitler RTF, SonicDVD Creator, Sonic Scenarist, Spruce DVDMaestro, Spruce Subtitle File, Stream SubText Player, Stream SubText Script, SubCreator 1.x, SubRip, SubSonic, SubStation Alpha, SubViewer 1.0, SubViewer 2.0, TMPlayer, Turbo Titler, Ulead DVD Workshop 2.0, ViPlay Subtitle File, ZeroG.</p>
<p>Which of these formats are important? The answer will depend on whom you ask, and more specifically, how you&#8217;re planning to distribute your video. This series is primarily focused on videos delivered as files to be played on PCs or other computing devices, so my choices here will reflect that. These are some of the most well-supported caption formats:</p>
<ul>
<li>SubRip</li>
<li>SubStation Alpha</li>
<li>MPEG-4 Timed Text</li>
<li>SAMI</li>
<li>SMIL</li>
</ul>
<h3>SubRip</h3>
<p><a href="http://en.wikipedia.org/wiki/SubRip" title="Wikipedia: SubRip" target="_blank" rel="nofollow">SubRip</a> is the AVI of caption formats, in the sense that its basic functionality is supported everywhere but various people have tried to extend it in mostly incompatible ways and the result is a huge mess. As a standalone file, SubRip captions are most commonly seen with a <code>.srt</code> extension. SubRip is a text-based format which can include font, size, and position information, as well as a limited set of HTML formatting tags, although most of these features are <a href="http://ale5000.altervista.org/subtitles.htm" target="_blank" rel="nofollow">poorly supported</a>. Its &#8220;official&#8221; specification is <a href="http://forum.doom9.org/showthread.php?p=470941#post470941" title="doom9 post from 2004" target="_blank" rel="nofollow">a doom9 forum post from 2004</a>. Most players assume that .srt files are encoded in Windows-1252 (what Windows programs frequently call &#8220;ANSI&#8221;), although some can detect and switch to UTF-8 encoding automatically.</p>
<p>Because <code>.srt</code> files are so often <a href="http://www.opensubtitles.org/en" title="Open Subtitles" target="_blank" rel="nofollow">published</a> separately from the video files they describe, the most common use case is to put your <code>.srt</code> file in the same directory as your video file and give them the same name (up to the file extensions). But it is also possible to embed SubRip captions directly into AVI files with <a href="http://www.alexander-noe.com/video/amg/" title="AVI-Mux GUI" target="_blank" rel="nofollow">AVI-Mux GUI</a>, into MKV files with <a href="http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge-gui.html" title="mkvmerge tool" target="_blank" rel="nofollow">mkvmerge</a>, and into MP4 files with <a href="http://gpac.sourceforge.net/packager.php" title="MP4Box" target="_blank" rel="nofollow">MP4Box</a>.</p>
<p>You can play SubRip captions in Windows Media Player or other DirectShow-based video players after installing <a href="http://www.videohelp.com/tools/VSFilter_DirectVobSub" title="VSFilter" target="_blank" rel="nofollow">VSFilter</a>; in QuickTime after installing <a href="http://www.perian.org/" title="Perian" target="_blank" rel="nofollow">Perian</a>; on Linux, both <a href="http://www.mplayerhq.hu/DOCS/HTML/en/index.html" title="mplayer" target="_blank" rel="nofollow">mplayer</a> and <a href="http://www.videolan.org/vlc/" title="VLC" target="_blank" rel="nofollow">VLC</a> support it natively.</p>
<h3>SubStation Alpha</h3>
<p><a href="http://en.wikipedia.org/wiki/SubStation_Alpha" title="Wikipedia: SubStation Alpha" target="_blank" rel="nofollow">SubStation Alpha</a> and its successor, Advanced SubStation Alpha, are the preferred caption formats of the fansubbing community. As standalone files, they are commonly seen with <code>.ssa</code> or <code>.ass</code> extensions. They have <a href="http://www.matroska.org/technical/specs/subtitles/ssa.html" target="_blank" rel="nofollow">a spec longer than three paragraphs</a>. They are actually miniature scripting languages. A <code>.ass</code> file contains a series of commands to control position, scrolling, animation, font, size, scaling, letter spacing, borders, text outline, text shadow, alignment, and so on; and a series of time-coded events for displaying text given the current styling parameters. It has support for multiple character encodings.</p>
<p>The playing requirements for SubStation Alpha captions are almost identical to SubRip. The same plugins are required for Windows and Mac OS X. On Linux, mplayer prides itself on having the most complete SSA/ASS implementation.</p>
<h3>MPEG-4 Timed Text</h3>
<p>a.k.a. &#8220;MPEG-4 Part 17,&#8221; a.k.a. <a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39478" title="ISO 14496-17" target="_blank" rel="nofollow">ISO 14496-17</a>, <a href="http://en.wikipedia.org/wiki/MPEG-4_Part_17" title="Wikipedia: MPEG-4 Timed Text" target="_blank" rel="nofollow">MPEG-4 Timed Text</a> (hereafter &#8220;MP4TT&#8221;) is the one and only caption format for the MP4 container. It is not a file format; it is only defined in terms of a track within an MP4 container. As such, it can not be embedded in any other video container, and it can not exist as a separate file. (Note: the last sentence was a lie; the MPEG-4 Timed Text format is really the 3GPP Timed Text format, and it can very much be embedded in a 3GPP container. What I meant to say is that the format can not be embedded in any of the other popular video container formats like AVI, MKV, or OGG. I could go on about the subtle differences between MPEG-4 Timed Text in an MP4 container and 3GPP Timed Text in a 3GPP container, but it would just make you cry, and besides, technical accuracy is for pussies.)</p>
<p>MP4TT defines detailed information on text positioning, fonts, styles, scrolling, and text justification. These details are encoded into the track at authoring time, and can not be changed by the end user&#8217;s video player. The most readable description of its features is actually the <a href="http://gpac.sourceforge.net/doc_ttxt.php" title="Documentation for GPAC" target="_blank" rel="nofollow">documentation for GPAC</a>, an open source implementation of much of the MPEG-4 specification (including MP4TT). Since MP4TT doesn&#8217;t define a text-based serialization, GPAC invented one for their own use; since their format is designed to capture all the possible information in an MP4TT track, it turns out to be an easy way to read about all of MP4TT&#8217;s features.</p>
<p><a href="http://gpac.sourceforge.net/packager.php" title="MP4Box" target="_blank" rel="nofollow">MP4Box</a>, part of the GPAC project, can take an <code>.srt</code> file and convert it into a MPEG-4 Timed Text track and embed it in an existing MP4 file. It can also reverse the process — extract a Timed Text track from an MP4 file and output a <code>.srt</code> file.</p>
<p>On Mac OS X, QuickTime supports MP4TT tracks within an MP4 container, but only if you rename the file from <code>.mp4</code> to <code>.3gp</code> or <code>.m4v</code>. I shit you not. (On the plus side, changing the file extension will allow you to sync compatible video to an iPod or iPhone, which will actually display the captions. Still not kidding.) On Windows, any DirectShow-based video player (such as Windows Media Player or <a href="http://sourceforge.net/project/showfiles.php?group_id=205650" title="Media Player Classic" target="_blank" rel="nofollow">Media Player Classic</a>) supports MP4TT tracks once you install <a href="http://haali.cs.msu.ru/mkv/" title="Haali Media Splitter" target="_blank" rel="nofollow">Haali Media Splitter</a>. On Linux, VLC has supported MP4TT tracks for several years.</p>
<h3>SAMI</h3>
<p><a href="http://en.wikipedia.org/wiki/SAMI" title="SAMI" target="_blank" rel="nofollow">SAMI</a> was Microsoft&#8217;s first attempt to create a captioning format for PC video files (as opposed to broadcast television or DVDs). As such, it is natively supported by Microsoft video players, including Windows Media Player, without the need for third-party plugins. It has a <a href="http://msdn.microsoft.com/en-us/library/ms971327.aspx" title="Specification on MSDN" target="_blank" rel="nofollow">specification on MSDN</a>. It is a text-based format that supports a large subset of HTML formatting tags. SAMI captions are almost always embedded in an ASF container, along with Windows Media video and Windows Media audio.</p>
<p>Don&#8217;t use SAMI for new projects; it has been superceded by <a href="http://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language" title="Wikipedia: Synchronised Multimedia Integration Language (SMIL)" target="_blank" rel="nofollow">SMIL</a>. For historical purposes, you may enjoy reading about <a href="http://www.webaim.org/techniques/captions/windows/" title="Creating SAMI captions" target="_blank" rel="nofollow">creating SAMI captions and embedding them in an ASF container</a>, as long as you promise to never, ever try it at home.</p>
<h3>SMIL</h3>
<p><a href="http://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language" title="Wikipedia: Synchronised Multimedia Integration Language (SMIL)" target="_blank" rel="nofollow">SMIL</a> (Synchronized Multimedia Integration Language) is not actually a captioning format. It is &#8220;an XML-based language that allows authors to write interactive multimedia presentations.&#8221; It also happens to have a <a href="http://www.w3.org/TR/SMIL3/smil-timing.html" title="Timing and synchronisation module" target="_blank" rel="nofollow">timing and synchronization module</a> that can, in theory, be used to display text on a series of moving pictures. That is to say, if you think of SMIL as a way to provide captions for a video, you&#8217;re doing it wrong. You need to invert your thinking — your video and your captions are each merely components of a SMIL presentation. SMIL captions are not embedded into a video container; the video and its captions are referenced from a SMIL document.</p>
<p>SMIL is <a href="http://www.w3.org/AudioVideo/" title="W3C Standard" target="_blank" rel="nofollow">a W3C standard</a>; the most recent revision, <a href="http://www.w3.org/TR/SMIL3/" title="SMIL 3.0" target="_blank" rel="nofollow">SMIL 3.0</a>, was just published in December 2008. If you printed out the SMIL 3.0 specification on US-Letter-sized paper, it would weigh in at 395 pages. So don&#8217;t do that.</p>
<p>QuickTime supports a <a href="http://developer.apple.com/documentation/QuickTime/IQ_InteractiveMovies/quicktimeandsmil/chapter_10_section_1.html" title="Subset of SMIL 1.0" target="_blank" rel="nofollow">subset of SMIL 1.0</a>. WebAIM provides a nice <a href="http://www.webaim.org/techniques/captions/quicktime/" title="Tutorial on using SMIL to add captions to a QuickTime movie" target="_blank" rel="nofollow">tutorial on using SMIL to add captions to a QuickTime movie</a>.</p>
<p><strong>Further reading</strong></p>
<ul>
<li><a href="http://joeclark.org/book/sashay/serialization/Chapter13.html" title="Multimedia Accessibility" target="_blank" rel="nofollow">Multimedia Accessibility</a> (Joe Clark)</li>
<li><a href="http://www.webaim.org/techniques/captions/" title="Web Captioning Overview" target="_blank" rel="nofollow">Web Captioning Overview</a> (WebAIM)</li>
<li><a href="http://www.afterdawn.com/guides/archive/subtitle_formats_explained.cfm" title="Subtitle formats explained" target="_blank" rel="nofollow">Subtitle formats explained</a> (AfterDawn)</li>
<li><a href="http://www.opensubtitles.org/en/downloads" title="How to play subtitles" target="_blank" rel="nofollow">How to play subtitles</a> (OpenSubtitles)</li>
<li><a href="http://en.wikipedia.org/wiki/Subtitle_%28captioning%29" title="Wikipedia: Subtitle captioning" target="_blank" rel="nofollow">Subtitle (captioning)</a></li>
<li><a href="http://en.wikipedia.org/wiki/Closed_captioning" title="Wikipedia: Closed captioning" target="_blank" rel="nofollow">Closed captioning</a></li>
<li><a href="http://forum.doom9.org/showthread.php?t=62723" title="MP4 FAQ" target="_blank" rel="nofollow">MP4 FAQ</a> (doom9)</li>
<li><a href="http://help.youtube.com/support/youtube/bin/answer.py?answer=100077&#038;cbid=-evuehvvzg96r&#038;src=cb&#038;lev=answer" title="Adding and editing YouTube captions" target="_blank" rel="nofollow">Adding/editing captions on YouTube videos</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/mark-pilgrim-a-gentle-introduction-to-video-encoding-captioning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mark Pilgrim &#8211; A Gentle Introduction to Video Encoding: Lossy Video Codecs</title>
		<link>http://www.simonwhatley.co.uk/mark-pilgrim-a-gentle-introduction-to-video-encoding-lossy-video-codecs</link>
		<comments>http://www.simonwhatley.co.uk/mark-pilgrim-a-gentle-introduction-to-video-encoding-lossy-video-codecs#comments</comments>
		<pubDate>Tue, 11 Oct 2011 09:00:51 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[AVI]]></category>
		<category><![CDATA[bbc]]></category>
		<category><![CDATA[Codec]]></category>
		<category><![CDATA[Container formats]]></category>
		<category><![CDATA[Dirac]]></category>
		<category><![CDATA[DivX]]></category>
		<category><![CDATA[DivX-certified]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iTunes Store]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mark Pilgrim]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Corporation]]></category>
		<category><![CDATA[mobile devices]]></category>
		<category><![CDATA[MPEG]]></category>
		<category><![CDATA[MPEG-1]]></category>
		<category><![CDATA[MPEG-2]]></category>
		<category><![CDATA[MPEG-4]]></category>
		<category><![CDATA[Ogg]]></category>
		<category><![CDATA[open source decoder software]]></category>
		<category><![CDATA[Theora]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Video codecs]]></category>
		<category><![CDATA[WMV]]></category>
		<category><![CDATA[Xiph.org Foundation]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=4805</guid>
		<description><![CDATA[The most important consideration in video encoding is choosing a video codec. A future article will talk about how to pick the one that’s right for you, but for now I just want to introduce the concept and describe the playing field. (This information is likely to go out of date quickly; future readers, be aware that this was written in December 2008.)]]></description>
			<content:encoded><![CDATA[<p><strong>This article was first published on 19th December 2008, on Mark Pilgrim&#8217;s website. That website no longer exists so this article serves as an historical record. I have preserved all emphasis and links as per the original article.</strong></p>
<p>The most important consideration in video encoding is choosing a video codec. A future article will talk about how to pick the one that&#8217;s right for you, but for now I just want to introduce the concept and describe the playing field. (This information is likely to go out of date quickly; future readers, be aware that this was written in December 2008.)</p>
<p>When you talk about &#8220;watching a video,&#8221; you&#8217;re probably talking about a combination of one video stream, one audio stream, and possibly some subtitles or captions. But you probably don&#8217;t have two different files; you just have &#8220;the video.&#8221; Maybe it&#8217;s an AVI file, or an MP4 file. These are just container formats, like a ZIP file that contains multiple kinds of files within it. The container format defines how to store the video and audio streams in a single file (and subtitles too, if any).</p>
<p>When you &#8220;watch a video,&#8221; your video player is doing several things at once:</p>
<ol>
<li>Interpreting the container format to find out which video and audio tracks are available, and how they are stored within the file so that it can find the data it needs to decode next</li>
<li>Decoding the video stream and displaying a series of images on the screen</li>
<li>Decoding the audio stream and sending the sound to your speakers</li>
<li>Possibly decoding the subtitle stream as well, and showing and hiding phrases at the appropriate times while playing the video</li>
</ol>
<p>A <em>video codec</em> is an algorithm by which a video stream is encoded, i.e. it specifies how to do #2 above. Your video player <em>decodes</em> the video stream according to the <em>video codec</em>, then displays a series of images, or &#8220;frames,&#8221; on the screen. Most modern video codecs use all sorts of tricks to minimize the amount of information required to display one frame after the next. For example, instead of storing each individual frame (like a screenshot), they will only store the differences between frames. Most videos don&#8217;t actually change all that much from one frame to the next, so this allows for high compression rates, which results in smaller file sizes. (There are many, many other complicated tricks too, which I&#8217;ll dive into in a future article.)</p>
<p>There are <em>lossy</em> and <em>lossless</em> video codecs; today&#8217;s article will only deal with lossy codecs. A <em>lossy video codec</em> means that information is being irretrievably lost during encoding. Like copying an audio cassette tape, you&#8217;re losing information about the source video, and degrading the quality, every time you encode. Instead of the &#8220;hiss&#8221; of an audio cassette, a re-re-re-encoded video may look blocky, especially during scenes with a lot of motion. (Actually, this can happen even if you encode straight from the original source, if you choose a poor video codec or pass it the wrong set of parameters.) On the bright side, lossy video codecs can offer amazing compression rates, and many offer ways to &#8220;cheat&#8221; and smooth over that blockiness during playback, to make the loss less noticeable to the human eye.</p>
<p>There are <a href="http://samples.mplayerhq.hu/V-codecs/" title="Video codecs" target="_blank" rel="nofollow"><em>tons</em> of video codecs</a>. Today I&#8217;ll discuss five modern lossy video codecs: MPEG-4 ASP, H.264, VC-1, Theora, and Dirac.</p>
<h3>MPEG-4 ASP</h3>
<p>a.k.a. &#8220;MPEG-4 Advanced Simple Profile.&#8221; <a href="http://en.wikipedia.org/wiki/MPEG-4_Part_2" title="MPEG-4 ASP" target="_blank" rel="nofollow">MPEG-4 ASP</a> was developed by <a href="http://en.wikipedia.org/wiki/Moving_Picture_Experts_Group" title="The MPEG Group" target="_blank" rel="nofollow">the MPEG group</a> and standardized in 2001. You may have heard of <a href="http://en.wikipedia.org/wiki/DivX" title="Wikipedia: DivX" target="_blank" rel="nofollow">DivX</a>, <a href="http://en.wikipedia.org/wiki/Xvid" title="Wikipedia: Xvid" target="_blank" rel="nofollow">Xvid</a>, or <a href="http://en.wikipedia.org/wiki/3ivx" title="Wikipedia: 3ivx" target="_blank" rel="nofollow">3ivx</a>; these are all competing implementations of the MPEG-4 ASP standard. <a href="http://www.xvid.org/" title="Xvid" target="_blank" rel="nofollow">Xvid is open source</a>; DivX and 3ivx are closed source. The company behind DivX has had some mainstream success in branding &#8220;DivX&#8221; as synonymous with &#8220;MPEG-4 ASP.&#8221; For example, this <a href="http://www.amazon.com/Philips-DVP642-DivX-Certified-Progressive-Scan-Player/dp/B000204SWE" title="Amazon: DivX certifiied DVD Player" target="_blank" rel="nofollow">&#8220;DivX-certified&#8221; DVD player</a> can actually play <a href="http://www.jarnot.com/twiki/bin/view/Public/DVP642LisaBsAVIGuide" title="MPEG-4 ASP videos" target="_blank" rel="nofollow">most MPEG-4 ASP videos</a> in an AVI container, even if they were created with a competing encoder. (To confuse things even further, the company behind <a href="http://en.wikipedia.org/wiki/DivX#DivX_Media_Format_.28DMF.29" title="DivX has now created their own container format" target="_blank" rel="nofollow">DivX has now created their own container format</a>.)</p>
<p><strong>MPEG-4 ASP is patent-encumbered</strong>; licensing is brokered through the <a href="http://www.mpegla.com/" title="MPEG LA Group" target="_blank" rel="nofollow">MPEG LA group</a>. MPEG-4 ASP video can be embedded in most popular container formats, including AVI, MP4, and MKV.</p>
<h3>H.264</h3>
<p>a.k.a. &#8220;MPEG-4 part 10,&#8221; a.k.a. &#8220;MPEG-4 AVC,&#8221; a.k.a. &#8220;MPEG-4 Advanced Video Coding.&#8221; <a href="http://en.wikipedia.org/wiki/H.264" title="Wikipedia: H.264" target="_blank" rel="nofollow">H.264</a> was also developed by the <a href="http://en.wikipedia.org/wiki/Moving_Picture_Experts_Group" title="Wikipedia: Moving Picture Experts Group (MPEG)" target="_blank" rel="nofollow">MPEG group</a> and standardized in 2003. It aims to provide a single codec for low-bandwidth, low-CPU devices (cell phones); high-bandwidth, high-CPU devices (modern desktop computers); and everything in between. To accomplish this, the H.264 standard is split into &#8220;<a href="http://en.wikipedia.org/wiki/H.264#Profiles" title="Wikipedia: H.264 Profiles" target="_blank" rel="nofollow">profiles</a>,&#8221; which each define a set of optional features that trade complexity for file size. Higher profiles use more optional features, offer better visual quality at smaller file sizes, take longer to encode, and require more CPU power to decode in real-time.</p>
<p>To give you a rough idea of the range of profiles, <a href="http://www.apple.com/iphone/specs.html" title="Apple's iPhone supports Baseline profile" target="_blank" rel="nofollow">Apple&#8217;s iPhone supports Baseline profile</a>, the <a href="http://www.apple.com/appletv/specs.html" title="AppleTV supports Baseline and Main profiles" target="_blank" rel="nofollow">AppleTV set-top box supports Baseline and Main profiles</a>, and <a href="http://www.kaourantin.net/2007/08/what-just-happened-to-video-on-web_20.html" title="Adobe Flash supports Baseline, Main and High profiles" target="_blank" rel="nofollow">Adobe Flash on a desktop PC supports Baseline, Main, and High profiles</a>. YouTube (owned by Google, my employer) now uses H.264 to encode <a href="http://blog.wired.com/business/2008/12/youtube-adds-hd.html" title="high-definition videos" target="_blank" rel="nofollow">high-definition videos</a>, playable through Adobe Flash; YouTube also provides H.264-encoded video to mobile devices, including Apple&#8217;s iPhone and phones running Google&#8217;s <a href="http://code.google.com/android/" title="Android mobile operating system" target="_blank" rel="nofollow">Android mobile operating system</a>. Also, H.264 is one of the video codecs mandated by the Blu-Ray specification; Blu-Ray discs that use it generally use the High profile.</p>
<p>Most non-PC devices that play H.264 video (including iPhones and standalone Blu-Ray players) actually do the decoding on a dedicated chip, since their main CPUs are nowhere near powerful enough to decode the video in real-time. Recent high-end desktop graphics cards also support decoding H.264 in hardware. There are a number of <a href="http://compression.ru/video/codec_comparison/mpeg-4_avc_h264_2007_en.html" title="Competing H.264 encoders" target="_blank" rel="nofollow">competing H.264 encoders</a>, including the <a href="http://www.videolan.org/developers/x264.html" title="Open source x264 library" target="_blank" rel="nofollow">open source x264 library</a>. The <strong>H.264 standard is patent-encumbered</strong>; licensing is brokered through the <a href="http://www.mpegla.com/" title="MPEG LA Group" target="_blank" rel="nofollow">MPEG LA group</a>. H.264 video can be embedded in most popular container formats, including MP4 (used primarily by <a href="http://www.apple.com/itunes/whatson/movies.html" title="Apple iTunes Store" target="_blank" rel="nofollow">Apple&#8217;s iTunes Store</a>) and MKV (used primarily by video pirates).</p>
<h3>VC-1</h3>
<p><a href="http://en.wikipedia.org/wiki/VC-1" title="Wikipedia: VC-1" target="_blank" rel="nofollow">VC-1</a> evolved from Microsoft&#8217;s WMV9 codec and was <a href="http://www.betanews.com/article/Microsoft_VC1_Codec_Now_a_Standard/1144097224" title="Codec standardised in 2006" target="_blank" rel="nofollow">standardized in 2006</a>. It is primarily used and promoted by Microsoft for high-definition video, although, like H.264, it has <a href="http://www.microsoft.com/windows/windowsmedia/howto/articles/vc1techoverview.aspx#OverviewofVC1" title="VC-1 profiles" target="_blank" rel="nofollow">a range of profiles</a> to trade complexity for file size. Also like H.264, it is mandated by the Blu-Ray specification, and all Blu-Ray players are required to be able to decode it. <strong>The VC-1 codec is patent-encumbered</strong>, with licensing brokered through the <a href="http://www.mpegla.com/" title="MPEG LA Group" target="_blank" rel="nofollow">MPEG LA group</a>.</p>
<p>Wikipedia has a brief <a href="http://en.wikipedia.org/wiki/Comparison_of_H.264_and_VC-1" title="Wikipedia: Technical compariosn of VC-1 and H.264" target="_blank" rel="nofollow">technical comparison of VC-1 and H.264</a>; <a href="http://www.microsoft.com/windows/windowsmedia/howto/articles/vc1techoverview.aspx#VC1ComparedtoOtherCodecs" title="Microsoft comparison of VC-1 with other codecs" target="_blank" rel="nofollow">Microsoft has their own comparison</a>; Multimedia.cx has a <a href="http://wiki.multimedia.cx/index.php?title=H.264" title="Venn diagram outlining similarities and differences between codecs" target="_blank" rel="nofollow">pretty Venn diagram outlining the similarities</a> and differences. Multimedia.cx also discusses the <a href="http://wiki.multimedia.cx/index.php?title=VC-1" title="Technical features of VC-1" target="_blank" rel="nofollow">technical features of VC-1</a>. I also found this <a href="http://www.avsforum.com/avs-vb/showthread.php?p=9931723#post9931723" title="History of VC-1 and H.264" target="_blank" rel="nofollow">history of VC-1 and H.264</a> to be interesting (as well as <a href="http://archive2.avsforum.com/avs-vb/showthread.php?p=6594314#post6594314" title="Rebuttal" target="_blank" rel="nofollow">this rebuttal</a>).</p>
<p>VC-1 is designed to be container-independent, although it is most often embedded in an ASF container. An open source decoder for VC-1 video was a <a href="http://code.google.com/soc/2006/ffmpeg/appinfo.html?csaid=5AA777DB19E2BB24" title="2006 Google Summer of Code project" target="_blank" rel="nofollow">2006 Google Summer of Code project</a>, and the resulting code was added to the multi-faceted <a href="http://ffmpeg.mplayerhq.hu/" title="ffmpeg library" target="_blank" rel="nofollow">ffmpeg library</a>.</p>
<h3>Theora</h3>
<p><a href="http://en.wikipedia.org/wiki/Theora" title="Wikipedia: Theora" target="_blank" rel="nofollow">Theora</a> evolved from the VP3 codec and has subsequently been developed by the <a href="http://xiph.org/" title="Xiph Foundation" target="_blank" rel="nofollow">Xiph.org Foundation</a>. <strong>Theora is a royalty-free codec and is not encumbered by any known patents</strong> other than the original VP3 patents, which have been irrevocably licensed royalty-free. Although the standard has been &#8220;frozen&#8221; since 2004, the Theora project (which includes an open source reference encoder and decoder) <a href="http://lists.xiph.org/pipermail/theora-dev/2008-November/003736.html" title="Version 1.0 November 2008" target="_blank" rel="nofollow">only hit 1.0 in November 2008</a>.</p>
<p>Theora video can be embedded in any container format, although it is most often seen in an Ogg container. All major Linux distributions support Theora out-of-the-box, and <a href="https://developer.mozilla.org/web-tech/2008/10/14/firefox-31-beta-1-an-overview-of-features-for-web-developers/" title="Mozilla Firefox 3.1 includes native support for Theora video" target="_blank" rel="nofollow">Mozilla Firefox 3.1 will include native support for Theora video in an Ogg container</a>. And by &#8220;native&#8221;, I mean &#8220;available on all platforms without platform-specific plugins.&#8221; You can also play Theora video <a href="http://www.xiph.org/dshow/" title="Theora video on Windows" target="_blank" rel="nofollow">on Windows</a> or <a href="http://xiph.org/quicktime/" title="Theora video on Mac OS X" target="_blank" rel="nofollow">on Mac OS X</a> after installing Xiph.org&#8217;s open source decoder software.</p>
<p>The reference encoder included in Theora 1.0 is widely criticized for being slow and poor quality, but Theora 1.1 will include a new encoder that takes better advantage of Theora&#8217;s features, while staying backward-compatible with current decoders. (Info: <a href="http://web.mit.edu/xiphmont/Public/theora/demo.html" title="Demo 1" target="_blank" rel="nofollow">1</a>, <a href="http://web.mit.edu/xiphmont/Public/theora/demo2.html" title="Demo 2" target="_blank" rel="nofollow">2</a>, <a href="http://web.mit.edu/xiphmont/Public/theora/demo3.html" title="Demo 3" target="_blank" rel="nofollow">3</a>, <a href="http://web.mit.edu/xiphmont/Public/theora/demo4.html" title="Demo 4" target="_blank" rel="nofollow">4</a>, <a href="http://web.mit.edu/xiphmont/Public/theora/demo5.html" title="Demo 5" target="_blank" rel="nofollow">5</a>, <a href="http://svn.xiph.org/branches/theora-thusnelda/" title="source code" target="_blank" rel="nofollow">source code</a>.)</p>
<h3>Dirac</h3>
<p>Dirac was <a href="http://www.bbc.co.uk/rd/projects/dirac/" title="Dirac, developed by the BBC" target="_blank" rel="nofollow">developed by the BBC</a> to provide a royalty-free alternative to H.264 and VC-1 that the BBC could use to stream high-definition television content in Great Britain. Like H.264, Dirac aims to provide a single codec for the full spectrum of very low- and very high-bandwidth streaming. <strong>Dirac is not encumbered by any known patents</strong>, and there are two open source implementations, <a href="http://diracvideo.org/download/dirac-research/" title="Dirac research" target="_blank" rel="nofollow">dirac-research</a> (the BBC&#8217;s reference implementation) and <a href="http://www.diracvideo.org/download/schroedinger/" title="Schroedinger" target="_blank" rel="nofollow">Schroedinger</a> (optimized for speed).</p>
<p>The Dirac standard was only finalized in 2008, so there is very little mainstream use yet, although the <a href="http://www.ibc.org/cgi-bin/ibc_dailynews_cms.cgi?story_no=25368&#038;issue=4" title="Dirac used internally during the 2008 Olympics" target="_blank" rel="nofollow">BBC did use it internally during the 2008 Olympics</a>. Dirac-encoded video tracks can be embedded in several popular container formats, including <a href="http://www.diracvideo.org/wiki/index.php/DiracInISOM" title="MP4 format" target="_blank" rel="nofollow">MP4</a>, <a href="http://www.diracvideo.org/wiki/index.php/DiracInOgg" title="Ogg format" target="_blank" rel="nofollow">Ogg</a>, <a href="http://www.diracvideo.org/wiki/index.php/DiracInMatroska" title="MKV format" target="_blank" rel="nofollow">MKV</a>, and <a href="http://www.diracvideo.org/wiki/index.php/DiracInAVI" title="AVI format" target="_blank" rel="nofollow">AVI</a>. <a href="http://www.videolan.org/vlc/" title="VLC" target="_blank" rel="nofollow">VLC</a> 0.9.2 (<a href="http://www.diracvideo.org/node/19" title="VLC 0.9.2 released in September 2008" target="_blank" rel="nofollow">released in September 2008</a>) can play Dirac-encoded video within an Ogg or MP4 container.</p>
<p><strong>And on and on&#8230;</strong><br />
Of course, this is only scratching the surface of all the available video codecs. Video encoding goes way back, but my focus in this series is on the present and near-future, not the past. If you like, you can read about <a href="http://en.wikipedia.org/wiki/MPEG-2" title="Wikipedia: MPEG-2" target="_blank" rel="nofollow">MPEG-2</a> (used in DVDs), <a href="http://en.wikipedia.org/wiki/MPEG-1" title="Wikipedia: MPEG-1" target="_blank" rel="nofollow">MPEG-1</a> (used in Video CDs), older versions of Microsoft&#8217;s <a href="http://en.wikipedia.org/wiki/Windows_Media_Video#Windows_Media_Video" title="Wikipedia: Windows Media Video (WMV)" target="_blank" rel="nofollow">WMV</a> family, <a href="http://en.wikipedia.org/wiki/Sorenson_codec" title="Wikipedia: Sorenson codec" target="_blank" rel="nofollow">Sorenson</a>, <a href="http://en.wikipedia.org/wiki/Indeo" title="Wikipedia: Indeo" target="_blank" rel="nofollow">Indeo</a>, and <a href="http://en.wikipedia.org/wiki/Cinepak" title="Wikipedia: Cinepak" target="_blank" rel="nofollow">Cinepak</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/mark-pilgrim-a-gentle-introduction-to-video-encoding-lossy-video-codecs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#039;s 5 Privacy Principles</title>
		<link>http://www.simonwhatley.co.uk/googles-5-privacy-principles</link>
		<comments>http://www.simonwhatley.co.uk/googles-5-privacy-principles#comments</comments>
		<pubDate>Thu, 28 Jan 2010 14:51:50 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ethics]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Identity management]]></category>
		<category><![CDATA[Information privacy]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[world wide web]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2255</guid>
		<description><![CDATA[In honour [sic] of International Data Privacy Day today, 28th January 2010, Google has published their own guidlines on privacy. The timing of this is quite intriguing following the recent hacking attack, supposedly orchestrated by the Chinese authorities, on Google, Yahoo, Adobe and some 20 other major international corporations; whilst there is also the ongoing concern from many quarters about Google is too dominant in many aspects of our online lives.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/01/googleprivacylogo.png" alt="" title="Google Privacy Logo" width="241" height="128" class="alignleft size-full wp-image-2264" />In honour [sic] of <a href="http://dataprivacyday2010.org" title="International Data Privacy Day" target="_blank" rel="nofollow">International Data Privacy Day</a> today, 28th January 2010, Google has published their own <a href="http://www.google.com/corporate/privacy_principles.html" title="Google's Privacy Principles" target="_blank" rel="nofollow">guidlines on privacy</a>.</p>
<p>The timing of this is quite intriguing following the recent hacking attack, supposedly orchestrated by the Chinese authorities, on Google, Yahoo, Adobe and some 20 other major international corporations; whilst there is also the ongoing concern from many quarters about Google is too dominant in many aspects of our online lives.</p>
<p>But less of the cynicism, the five principles are:</p>
<ul>
<li><strong>Use information to provide our users with valuable products and services.</strong><br />
<q>Focus on providing the best user experience</q> is the first tenet of Google&#8217;s philosophy. When users share information with us, it allows us to build services and products that are valuable to them. We believe that focusing on the user fosters both the products and privacy-enhancing features that have fueled innovation and built a loyal audience of users online.</li>
<li><strong>Develop products that reflect strong privacy standards and practices.</strong><br />
Our ambition is to be at the leading edge of technology, including the development of tools that help users manage their personal information in a simple, accessible manner without detracting from a valuable user experience. We comply with privacy laws, and additionally work internally and with regulators and industry partners to develop and implement strong privacy standards.</li>
<li><strong>Make the collection of personal information transparent.</strong><br />
We strive to show users the information used to customize our services. Where appropriate, we aim to be transparent about the information we have about individual users and how we use that information to deliver our services.</li>
<li><strong>Give users meaningful choices to protect their privacy.</strong><br />
People have different privacy concerns and needs. To best serve the full range of our users, Google strives to offer them meaningful and fine-grained choices over the use of their personal information. We believe personal information should not be held hostage and we are committed to building products that let users export their personal information to other services. We don&#8217;t sell users&#8217; personal information.</li>
<li><strong>Be a responsible steward of the information we hold.</strong><br />
We recognize our responsibility to protect the data that users entrust to us. We take security issues seriously and work together with a large community of users, developers and external security experts to make the Internet safer and more secure.</li>
</ul>
<p>Whether these principles can be fully adhered to by Google is an important question, but they do serve to calm the fears of many about what they&#8217;ll do with our data. If nothing else, they do serve to highlight the need for data privacy to be taken seriously by anyone considering building web applications.</p>
<p>If you’re interested in more of Google’s privacy stances, they’ve got an entire <a href="http://www.google.com/intl/en/privacy.html" title="Google's Privacy Centre" target="_blank" rel="nofollow">portal</a> dedicated to 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/googles-5-privacy-principles/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe ColdFusion 9 License Terms in Plain English</title>
		<link>http://www.simonwhatley.co.uk/adobe-coldfusion-9-license-terms-in-plain-english</link>
		<comments>http://www.simonwhatley.co.uk/adobe-coldfusion-9-license-terms-in-plain-english#comments</comments>
		<pubDate>Thu, 28 Jan 2010 12:58:46 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe Systems Inc]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Cloud infrastructure]]></category>
		<category><![CDATA[cloud network]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Computer software]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Multi-core]]></category>
		<category><![CDATA[Rackspace Cloud]]></category>
		<category><![CDATA[Software license agreement]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[Virtualization software licensing]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2212</guid>
		<description><![CDATA[If like me, you’ve been struggling to understand the legalese of the Adobe ColdFusion 9 EULA, I have put together a brief and hopefully, helpful summary of what it actually means in in plain English.]]></description>
			<content:encoded><![CDATA[<p>If like me, you&#8217;ve been struggling to understand the legalese of the Adobe ColdFusion 9 <abbr title="End User License Agreement">EULA</abbr>, I have put together a brief and hopefully, helpful summary of what it actually means in <em>in plain English</em>.</p>
<p>The sections we&#8217;re really interested in are 3.1.1 and 3.1.2. These are detailed below.</p>
<p>Regarding production software on a per-<abbr title="Central Processing Unit">CPU</abbr> and Virtual Machine (<abbr title="Virtual Machine">VM</abbr>) basis:</p>
<blockquote><p>3.1.1 Adobe grants Licensee a license to install and use the Software as Production Software on a per-CPU basis as provided in a separate writing. The total number of CPUs of all of the Computers on which the Software operates may not exceed the total number of CPUs separately licensed. For purposes of this License Metric, (a) all CPUs on a Computer on which the Software is installed shall be deemed to operate the Software unless Licensee configures that Computer (using a reliable and verifiable means of hardware or software partitioning) such that the total number of CPUs that actually operate the Software is less than the total number on that Computer, and (b) a CPU shall mean a single, physical chip with the capability of housing multiple processor cores. If Licensee purchases a 2-CPU Production Software license, then each CPU to which it applies such license must reside in the same Computer. In the event that Licensee desires to apply 2-CPU Production Software licenses to Virtual Machines, then (c) for the Standard version of the Software, the number of 2-CPU licenses required shall be the greater of (i) the number of available physical CPUs for all instances of the Software divided by two (any fractions shall be rounded up for purposes of this provision), or (ii) the total number of Virtual Machines on all Computers on which the Software is installed, and (d) for the Enterprise version of the Software, the number of 2-CPU licenses required shall be the number of physical CPUs on which the Software operates divided by two (any fractions shall be rounded up for purposes of this provision).</p></blockquote>
<p>The key information here is:</p>
<ul>
<li>The Standard license is charged per 2-CPU or per-VM, which ever is greater.</li>
<li>The Enterprise license is charged per 2-CPU.</li>
</ul>
<p>But what does this actually mean for <em>Joe Bloggs</em>? Fortunately the guys at Adobe, via <a href="http://twitter.com/coldfusion" title="Twitter: @coldfusion" target="_blank" rel="nofollow">Twitter</a>, were on hand to help.</p>
<p>Here is a little table that should whet your appetite:</p>
<table>
<thead>
<tr>
<th scope="col" colspan="2">Server Configuration</th>
<th scope="col" colspan="2">Number of Licenses Required</th>
</tr>
<tr>
<th scope="col"><abbr title="Central Processing Unit">CPU</abbr></th>
<th scope="col"><abbr title="Virtual Machine">VM</abbr></th>
<th scope="col">Standard</th>
<th scope="col">Enterprise</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>4</td>
<td>0</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>4</td>
<td>4</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>6</td>
<td>6</td>
<td>1</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>4</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>6</td>
<td>6</td>
<td>1</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
<td>4</td>
<td>2</td>
</tr>
<tr>
<td>4</td>
<td>6</td>
<td>6</td>
<td>2</td>
</tr>
</tbody>
</table>
<p>Regarding production software on a cloud network:</p>
<blockquote><p>3.1.2 Adobe grants Licensee a license to install and use the Software as Production Software on a Cloud Network on a per-instance basis as provided in a separate writing. The total number of instances that may run on a Cloud Network may not exceed the total number of instances separately licensed. Licensee must purchase and apply 1 instance license to each use of the Standard version of the Software. Licensee may apply 10 instances for each license purchased of the Enterprise version of the Software.</p></blockquote>
<p>The key information here is:</p>
<ul>
<li>The Standard license supports cloud computing, but for each instance, 1 license must be applied.</li>
<li>The Enterprise license supports up to 10 cloud instances, e.g. on Amazon EC3, Azure, Joyent, Rackspace Cloud etc.</li>
</ul>
<p>In essence, if you&#8217;re going to run a [decent] virtual machine environment, or indeed a cloud environment, it would be far more cost efficient to run ColdFusion Enterprise, since it is costed by the number of virtual machines or increments of 10 cloud instances.</p>
<p>You can download the original <a href="http://www.adobe.com/products/eulas/pdfs/adobe_coldFusion_combined_20090811_0930.pdf" title="Adobe ColdFusion 9 EULA" target="_blank" rel="nofollow">Adobe ColdFusion 9 EULA</a> (PDF 400K) from the Adobe 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/adobe-coldfusion-9-license-terms-in-plain-english/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plan Your Future in Five Easy Steps</title>
		<link>http://www.simonwhatley.co.uk/plan-your-future-in-five-easy-steps</link>
		<comments>http://www.simonwhatley.co.uk/plan-your-future-in-five-easy-steps#comments</comments>
		<pubDate>Tue, 18 Aug 2009 09:33:09 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[chosen technology]]></category>
		<category><![CDATA[Competing technologies]]></category>
		<category><![CDATA[e.g. open-source software]]></category>
		<category><![CDATA[five easy steps]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Freelancing]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[futurist]]></category>
		<category><![CDATA[futurology]]></category>
		<category><![CDATA[Peter Schwartz]]></category>
		<category><![CDATA[plan]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[test case]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web development example]]></category>
		<category><![CDATA[Wired Magazine]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2013</guid>
		<description><![CDATA[The September 2009 UK edition of Wired ran an interesting article, carrying the same title as this post, by futurist Peter Schwartz. In the article, Schwartz proposed a 5 step plan to predicting and therefore safe guarding your future.]]></description>
			<content:encoded><![CDATA[<p>The September 2009 <a href="http://www.wired.co.uk" title="UK edition of Wired" target="_blank" rel="nofollow">UK edition of Wired</a> ran an interesting article, carrying the same title as this post, by futurist <a href="http://en.wikipedia.org/wiki/Peter_Schwartz_(futurist)" title="Wikipedia: Peter Schwartz (futurist)">Peter Schwartz</a>. In the article, Schwartz proposed a 5 step plan to predicting and therefore safe guarding your future. Below are the five steps.</p>
<p>Schwartz starts by defining a test case. This is in essence a question; <q>How can I future-proof my career?</q> Once you know the question, you can then set about identifying key influences on your question&#8211;e.g. technological change&#8211;scenarios that may bring about the change&#8211;e.g. new competing technologies, lack of technological development in your sector, or the collapse of a key stakeholder&#8211;and finally, future implications.</p>
<p>Here is what Schwartz says in more detail:</p>
<h3>1. List driving forces</h3>
<p>What variables, trends and events will affect your mission? The first step is to list them. Next, divide them into uncertainties (such as economic, political and social conditions) and relative certainties (such as global population growth and climate change). Finally, rank the items according to their importance, from most to least significant. The result: a catalogue of factors that will determine the future of your area.</p>
<p>If I take web development as an example:</p>
<ul>
<li>Pace of technological change.</li>
<li>Number of companies using the chosen technology.</li>
<li>Number of people available in the industry (permanent and contract).</li>
<li>State of the [digital] economy.</li>
<li>Competing technologies, e.g. Ruby on Rails <abbr title="versus">vs</abbr> ColdFusion, <abbr title="Asynchronous JavaScript and XML">AJAX</abbr> <abbr title="versus">vs</abbr> Flash, offline <abbr title="versus">vs</abbr> online, desktop <abbr title="versus">vs</abbr> mobile.</li>
<li>Support of the community, e.g. open-source software, tutorials and application servers.</li>
<li>Support of key stakeholders, e.g. Adobe&#8217;s support of Flash, Flex and ColdFusion.</li>
</ul>
<h3>2. Make a scenario grid</h3>
<p>Now it&#8217;s time to map out possible futures. The two most important uncertainties from the top of your list form the axes of the grid, with each of the quatdrants representing a potential future. Some may be more likely than others&#8211;and some may seem downright improbable&#8211;but they all depict the interplay of key forces. Thus, they&#8217;re within the range of possibility and deserve attention. They help you prepare for a range of possibilities and bolster core actions with those related to the future you deem most likely.</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>3. Imagine the possible futures</h3>
<p>Sketched as a grid, these 4 possible scenarios are so abstract that it would be hard to recognise them if they merged. Make them more concrete by fleshing them out into imaginery, but plausible, news stories of the forces at play.</p>
<p>To continue the web development example:</p>
<ul>
<li>Global financial crisis prevents companies investing in technology. They cannot raise the adequate funding to push through key development projects, even if it means increasing efficiencies within the company.</li>
<li>Adobe drops support for ColdFusion causing turmoil in the community. Railo picks up a lot of business, but can&#8217;t scale to fill the demand. Far-sighted companies migrate to other suitable platforms.</li>
<li>Ruby on Rails booms under the paradigms: Convention over Configuration and Don&#8217;t Repeat Yourself, eating into ColdFusion&#8217;s key mantra: Rapid Application Development.</li>
<li>Key advances in technology on the desktop and mobile continue at pace. Micro-payments allow people to create relatively cheap applications that appeal to a mass audience. Development frameworks allow developers to transfer their skills between technologies without the need for significant retraining.</li>
</ul>
<h3>4. Brainstorm implications and actions</h3>
<p>Now it&#8217;s time to develop strategies for coping with each of the four possible futures you&#8217;ve imagined. Start by listing all the implications of each of the scenarios and then come up with actions that would enable you to prosper under any of the new conditions. Some actions would apply to almost any scenario: these should form the basis of your plan, since they help you to prepare for a range of possibilities. Bolster these core actions with those related to the future you deem most likely.</p>
<p>Examples of possible implications:</p>
<ul>
<li>Scarce funding.</li>
<li>Limited demand for new technologies.</li>
<li>Few companies to work for.</li>
<li>Few new projects to work on.</li>
<li>Increased competition for places.</li>
<li>Increased demand for people with key skills, e.g. mobile.</li>
</ul>
<p>and possible actions:</p>
<ul>
<li>Concentrate on existing technologies.</li>
<li>Develop and exit strategy, e.g. cross-train into a new technology.</li>
<li>Cultivate your network, make new contacts at major development houses.</li>
<li>Polish skills in areas of uncertainty.</li>
<li>Start your own cutting-edge business.</li>
</ul>
<h3>5. Track the indicators</h3>
<p>The main value of the scenarios is that they sensitise you to the way the future is unfolding. Over time, the world is likely to gravitate toward one of your four quadrants. The trick is to recognise the shif in progress. As you monitor the news, look for signals that a particular possibility is becoming a concrete reality. Keep a file of news relevant to your scenarios, jotting down a quick note, along with the date, whenever you come across a significant story. Evaluate these developments on a quarterly basis so you can track the trends. Keep adjusting your action strategy to anticipate the future as it emerges.</p>
<p>Of course it is possible that none of your four quadrants becomes true. If this is so, you will need to go back and re-evaluate your scenario grid. Keeping a critical eye on your grid and apace of industry developments, you can be assured that the future will not change so quickly that you&#8217;ll miss an opportunity.</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/plan-your-future-in-five-easy-steps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Work Philosophy</title>
		<link>http://www.simonwhatley.co.uk/my-work-philosophy</link>
		<comments>http://www.simonwhatley.co.uk/my-work-philosophy#comments</comments>
		<pubDate>Thu, 05 Mar 2009 15:29:19 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Dev Opera]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Freelancing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Code]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web community]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[zen]]></category>
		<category><![CDATA[Zoho]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1833</guid>
		<description><![CDATA[Okay, so many of the points below aren’t purely my philosophy, but ideas and principles I have picked up along the way throughout my [development] career. Some relate to the UNIX philosophy, or even the Zen of Python, but wherever they’re from, they can be applied to many other domains.]]></description>
			<content:encoded><![CDATA[<p>Okay, so many of the points below aren&#8217;t purely my philosophy, but ideas and principles I have picked up along the way throughout my [development] career. Some relate to the <a href="http://en.wikipedia.org/wiki/Unix_philosophy" title="Wikipedia: UNIX Philosophy" target="_blank" rel="nofollow">UNIX philosophy</a>, or even the <a href="http://www.python.org/dev/peps/pep-0020/" title="Zen of Python" target="_blank" rel="nofollow">Zen of Python</a>, but wherever they&#8217;re from, they can be applied to many other domains.</p>
<ul>
<li><strong>Don&#8217;t reinvent the wheel unless you really have to</strong>. Borrow code and ideas from elsewhere whenever it makes sense. The web community it great at sharing, just look at the various JavaScript libraries, the huge quantities of <abbr title="Application Programming Interface">API</abbr>s or indeed the major players&#8217; developer areas: <a href="http://code.google.com" title="Google Code" target="_blank" rel="nofollow">Google Code</a>, <a href="http://developer.yahoo.com" title="Yahoo! Developer Network" target="_blank" rel="nofollow">Yahoo! Developer Network</a>, <a href="https://developer.mozilla.org" title="Mozilla Developer Center" target="_blank" rel="nofollow">Mozilla Developer Center</a>, <a href="http://www.adobe.com/devnet/" title="Adobe Developer Connection" target="_blank" rel="nofollow">Adobe Developer Connection</a> and <a href="http://dev.opera.com" title="Dev Opera" target="_blank" rel="nofollow">Dev Opera</a> to name five I regularly refer to.</li>
<li><q><strong>Things should be as simple as possible, but no simpler</strong></q> (Einstein). This idea is really born out of and emphasised by <a href="http://gettingreal.37signals.com/" title="37Signals' Getting Real" target="_blank" rel="nofollow">37Signals&#8217; Getting Real book</a>. Commonly, 90% of people using an application only use 10% of it&#8217;s functionality. The key therefore is to find what people use most often and only build that functionality. If there is a requirement to add more, then sobeit. This can also apply to the code-level, the essence here being a balance between over- and under-engineering something.</li>
<li><strong>Do one thing well</strong> (The <q>UNIX philosophy</q>). It is better to do one thing well, than several second-rate. This could be at the code level &#8212; think encapsulation, coupling and cohesion &#8212; or indeed at the application level &#8212; you&#8217;re never going to beat Microsoft Word, but Google and Zoho have developed compelling alternatives, but with far less features. </li>
<li><strong>Don&#8217;t fret too much about performance</strong> &#8212; understand how to write efficient code and plan to optimise later if or when needed.</li>
<li><strong>Don&#8217;t try for perfection</strong> because <q>good enough</q> is often just that. This of course is a matter for conjecture. If I were working on a personal project, I may be more stringent on perfection than say, for a client&#8217;s application. This doesn&#8217;t mean to say the client&#8217;s application would be any worse, but rather it is a question of dotting-the-is and crossing-the-ts. It also depends on your perspective and what gains can be made by aiming for <q>perfection</q>.</li>
<li>(Hence) <strong>it&#8217;s okay to cut corners sometimes</strong>, only if you can do it right later. I rarely adhere to this! It makes sense to do it right the first time, since <q>bodge-jobs</q> often come back to haunt you and result in double the effort!</li>
<li><strong>Don&#8217;t fight it; go with the flow</strong>. This is somewhat clich&eacute;d, but the essence behind this is try to avoid getting stressed out. This isn&#8217;t always easy to achieve, but taking a step back from a situation and avoiding politics is important.</li>
</ul>
<p>I often strive for perfection, which isn&#8217;t an entirely clever pursuit since it is almost impossible to achieve. However, in a realm of imperfection, the principles above have helped me to achieve a modicum of decent code throughout the years. They may also resonate and provide inspiration for you.</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/my-work-philosophy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe&#039;s LiveCycle Powered by Amazon&#039;s Cloud</title>
		<link>http://www.simonwhatley.co.uk/adobes-livecycle-powered-by-amazons-cloud</link>
		<comments>http://www.simonwhatley.co.uk/adobes-livecycle-powered-by-amazons-cloud#comments</comments>
		<pubDate>Wed, 14 Jan 2009 12:07:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe LiveCycle]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[chief rival]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[content services]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[elastic cloud computing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[information technology]]></category>
		<category><![CDATA[infrastructure web services platform]]></category>
		<category><![CDATA[installation of LiveCycle ES Solution Components]]></category>
		<category><![CDATA[Internet-based information technology services]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[LiveCycle Enterprise Suite]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[process management]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[recent technology trends]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[server software product]]></category>
		<category><![CDATA[simple storage service]]></category>
		<category><![CDATA[technology infrastructure]]></category>
		<category><![CDATA[term cloud computing]]></category>
		<category><![CDATA[utility computing]]></category>
		<category><![CDATA[Web Browser]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1757</guid>
		<description><![CDATA[Adobe recently announced, in conjunction with Amazon, that they would bring LiveCycle to Amazon’s Elastic Compute Cloud (EC2).]]></description>
			<content:encoded><![CDATA[<p>Adobe recently announced, in conjunction with Amazon, that they would bring LiveCycle to Amazon&#8217;s Elastic Compute Cloud (<abbr title="Elastic Compute Cloud">EC2</abbr>). To quote Adobe:</p>
<blockquote><p>
Adobe is now offering developers subscribed to the Adobe Enterprise Developer Program access to their own virtual instance of LiveCycle ES through LiveCycle ES Developer Express. LiveCycle ES Developer Express provides a pre-configured, virtualized installation of LiveCycle ES Solution Components in a self-contained development environment. LiveCycle ES Developer Express is hosted on the Amazon Elastic Compute Cloud (Amazon EC2). AEDP members can test, build, store and develop their applications in a cloud-base environment where all LiveCycle ES applications are pre-configured and running. The Adobe Enterprise Developer Program will offer a minimum of 10 hours of runtime per month, with additional hours to be available separately.</p></blockquote>
<h3>What is cloud computing and why is it important?</h3>
<p>The term cloud computing, as used by some commentators, refers to the use of scalable, real-time, Internet-based information technology services and resources. This somewhat nebulous concept incorporates software as a service (<abbr title="software as a servic">SaaS</abbr>), utility computing, <a href="http://en.wikipedia.org/wiki/Web_2.0" title="Wikipedia: Web 2.0" target="_blank" rel="nofollow">Web 2.0</a> and other recent technology trends. The common theme stresses reliance on the Internet for satisfying the computing needs of users, without them needing knowledge of, expertise with, or control over the technology infrastructure that supports them. An often-quoted example is <a href="http://www.google.com/apps/intl/en/business/index.html" title="Google Apps" target="_blank" rel="nofollow">Google Apps</a>, which provides common business applications online that are accessed from a web browser, while the software and data are stored on Google servers.</p>
<p>The cloud element of cloud computing derives from a metaphor used for the Internet, from the way it is often depicted in computer network diagrams, and is an abstraction for the complex infrastructure it conceals.</p>
<h3>How do Adobe and Amazon fit into the equation?</h3>
<p>Adobe and Amazon have similar goals. They both want to gain more share of the enterprise market. Amazon needs to convince the enterprise that its version of the cloud is capable of supporting the demands of enterprise applications. On the other hand Adobe wants to convince the developers who already use <abbr title="Amazon Web Services">AWS</abbr> that LiveCycle is the platform of choice for the enterprise.</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>What is Adobe LiveCycle?</h3>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/logo_adobe_livecycle1.jpg" alt="Adobe LiveCycle" title="Adobe LiveCycle" width="102" height="105" class="alignleft size-full wp-image-1769" />Adobe&#8217;s <a href="http://www.adobe.com/products/livecycle/" title="Adobe LiveCycle" target="_blank" rel="nofollow">LiveCycle Enterprise Suite</a> is a <abbr title="Java 2 Enterprise Edition">J2EE</abbr>-based server software product used to build applications that automate a broad range of business processes for enterprises and government agencies.</p>
<p>LiveCycle combines technologies for data capture, information assurance, document output, content services, and process management to deliver solutions such as account opening, services and benefits enrollment, correspondence management, request for proposal processes, and other manual based workflows.</p>
<h3>What are Amazon Webservices?</h3>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/logo_aws.gif" alt="Amazon Webservices Logo" title="Amazon Webservices Logo" width="164" height="60" class="alignright size-full wp-image-1762" />Since early 2006, <a href="http://aws.amazon.com" title="Amazon Web Services" target="_blank" rel="nofollow">Amazon Web Services</a> (<abbr title="Amazon Web Services">AWS</abbr>) has provided companies of all sizes with an infrastructure web services platform in <a href="http://en.wikipedia.org/wiki/Cloud_computing" title="Wikipedia: Cloud Computing" target="_blank" rel="nofollow">the cloud</a>. With <abbr title="Amazon Web Services">AWS</abbr> you can requisition compute power, storage, and other services–gaining access to a suite of elastic <abbr title="Information Technology">IT</abbr> infrastructure services as your business demands them. With <abbr title="Amazon Web Services">AWS</abbr> you have the flexibility to choose whichever development platform or programming model makes the most sense for the problems you’re trying to solve. You pay only for what you use, with no up-front expenses or long-term commitments, making <abbr title="Amazon Web Services">AWS</abbr> a cost-effective way to deliver applications to customers and clients.</p>
<h3>How do they fit together?</h3>
<p>Essentially, Adobe has put a Red Hat <a href="http://www.jboss.org" title="JBoss" target="_blank" rel="nofollow">JBoss</a> <abbr title="Java 2 Enterprise Edition">J2EE</abbr> stack on <abbr title="Amazon Web Services">AWS</abbr> and deployed LiveCycle on the stack. Adobe state that this platform is purely for prototyping, developing and testing applications, rather than production environments, but that is likely to change.</p>
<h3>The future</h3>
<p>Deploying LiveCycle on <abbr title="Amazon Web Services">AWS</abbr> has wider implications, not only for Adobe products. By setting up a J2EE stack on <abbr title="Amazon Web Services">AWS</abbr> it makes it possible to deploy any Java-based application; yes that does mean one developed in Adobe&#8217;s ColdFusion or indeed its chief rival, Railo.</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/adobes-livecycle-powered-by-amazons-cloud/feed</wfw:commentRss>
		<slash:comments>4</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>Tour de Flex Hits the Ground Running</title>
		<link>http://www.simonwhatley.co.uk/tour-de-flex-hits-the-ground-running</link>
		<comments>http://www.simonwhatley.co.uk/tour-de-flex-hits-the-ground-running#comments</comments>
		<pubDate>Wed, 26 Nov 2008 10:33:17 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Acrobat.com Share Amazon AOL Instant Messenger]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Flash Platform]]></category>
		<category><![CDATA[Adobe Integrated Runtime]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[Christophe Coenraets]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Greg Wilson]]></category>
		<category><![CDATA[Holly Schinsky]]></category>
		<category><![CDATA[James Ward]]></category>
		<category><![CDATA[official]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[search interface]]></category>
		<category><![CDATA[Tour de Flex]]></category>
		<category><![CDATA[visual reference tool]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1524</guid>
		<description><![CDATA[For the seasoned Flex developer, we’ve been accustomed to using the Flex Component Explorer as a reference. However, this is set to change with a great new application called Tour de Flex.

Tour de Flex is a desktop application, built using AIR, with the goal of providing a way to explore Flex’s capabilities and resources, including the core Flex components, Adobe AIR and data integration.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tdf-large.jpg" alt="" title="Tour de Flex Logo" width="205" height="170" class="alignleft size-medium wp-image-1534" /></p>
<p>For the seasoned Flex developer, we&#8217;ve been accustomed to using the <a href="http://examples.adobe.com/flex3/componentexplorer/explorer.html" title="Flex Component Explorer" target="_blank" rel="nofollow">Flex Component Explorer</a> as a reference. However, this is set to change with a great new application called Tour de Flex.</p>
<p>Tour de Flex is a desktop application, built using <abbr title="Adobe Integrated Runtime">AIR</abbr>, with the goal of providing a way to explore Flex&#8217;s capabilities and resources, including the core Flex components, Adobe <abbr title="Adobe Integrated Runtime">AIR</abbr> and data integration.</p>
<p>Created by <a href="http://www.jamesward.com/" title="James Ward" target="_blank" rel="nofollow">James Ward</a>, <a href="http://gregsramblings.com/" title="Greg Wilson" target="_blank" rel="nofollow">Greg Wilson</a> and <a href="http://coenraets.org/" title="Christophe Coenraets" target="_blank" rel="nofollow">Christophe Coenraets</a>, Tour de Flex has three main purposes: provide non-Flex developers with an overview of what is possible; provide seasoned Flex developers with a visual reference tool; and finally, provide commercial and non-commercial Flex developers a platform to showcase their skills.</p>
<p>Probably the greatest feature of this application is the integration of a variety of third-party components, effects and skins. The application contains examples from the following and we are told that this list will be regularly updated when new content becomes available:</p>
<ul>
<li>Acrobat.com Share</li>
<li>Amazon</li>
<li>AOL Instant Messenger</li>
<li>Cocomo</li>
<li>Ebay</li>
<li>Flickr</li>
<li>Google Language</li>
<li>Intuit Quickbase</li>
<li>Last.fm</li>
<li>Photoshop.com</li>
<li>Salesforce.com</li>
<li>Scribd</li>
<li>Smugmug</li>
<li>Twitter</li>
<li>Yahoo Weather</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>Below is a selection of screenshots from the application:</p>
<p><em>(Click on the images to see a larger view)</em></p>
<p><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-01.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-01-150x150.png" alt="" title="Tour de Flex - Component Explorer" width="150" height="150" class="alignleft size-thumbnail wp-image-1526" /></a><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-02.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-02-150x150.png" alt="" title="Tour de Flex - Component Explorer" width="150" height="150" class="alignleft size-thumbnail wp-image-1527" /></a><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-03.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-03-150x150.png" alt="" title="Tour de Flex - Component Explorer" width="150" height="150" class="alignleft size-thumbnail wp-image-1528" /></a><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-04.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/11/tour-de-flex-04-150x150.png" alt="" title="Tour de Flex - Component Explorer" width="150" height="150" class="alignleft size-thumbnail wp-image-1529" /></a></p>
<p>Included with the Tour de Flex project is an <a href="http://www.eclipse.org" title="Eclipse Integrated Development Environment" target="_blank" rel="nofollow">Eclipse</a> plugin, built by <a href="http://devgirl.wordpress.com/" title="Holy Schinsky" target="_blank" rel="nofollow">Holly Schinsky</a>, that provides a search interface to the 200+ examples available in the main Tour de Flex application. The plugin allows you to search by component name, tag or author and double-click any item in the results to immediately see the component in Tour de Flex.</p>
<p>To install the plugin, add the following URL to your Eclipse software update sites:</p>
<p><a href="http://tourdeflex.adobe.com/eclipse" title="Tour de Flex Eclipse Plugin" target="_blank" rel="nofollow">http://tourdeflex.adobe.com/eclipse</a>.</p>
<p>Once installed, a new Tour de Flex view is available to add. The plugin has been tested with Eclipse 3.4 and with Flex Builder 3.x.</p>
<p>The official <a href="http://flex.org/tour" title="Flex.org: Tour de Flex" target="_blank" rel="nofollow">Tour de Flex</a> page and install can be found on the Flex.org website.</p>
<p><iframe width="216" height="182" frameborder=0 scrolling="no" src="http://tourdeflex.adobe.com/badge/"></iframe></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/tour-de-flex-hits-the-ground-running/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

