<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.1" -->
<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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Oxide Interactive</title>
	<link>http://www.oxideinteractive.com.au/articles</link>
	<description>A Canberra based multimedia company.</description>
	<pubDate>Tue, 10 Apr 2007 05:11:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.1</generator>
	<language>en</language>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/au/</creativeCommons:license>
		<item>
		<title>Wooden Puzzle Animation</title>
		<link>http://www.oxideinteractive.com.au/articles/wooden-puzzle-animation/</link>
		<comments>http://www.oxideinteractive.com.au/articles/wooden-puzzle-animation/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 14:23:27 +0000</pubDate>
		<dc:creator>Alexi</dc:creator>
		
		<category><![CDATA[Flash]]></category>
<category>Flash</category><category>Pseudo 3D</category>
		<guid isPermaLink="false">http://www.oxideinteractive.com.au/articles/wooden-puzzle-animation/</guid>
		<description><![CDATA[We built this pseudo-3D wooden puzzle with some clever layering. First I&#8217;ll explain how the effect was achieved, then explain the code behind it.


You need to upgrade your Flash Player.


// 
Source code (1.45 MB) Flash MX 2004
Creating the Graphics


We began by drawing the puzzle top view in Flash then skewing it to add some perspective.
Each [...]]]></description>
			<content:encoded><![CDATA[<p>We built this pseudo-3D wooden puzzle with some clever layering. First I&#8217;ll explain how the effect was achieved, then explain the code behind it.</p>

<div id="puzzle">
<p class="error">You need to upgrade your <a href="http://www.adobe.com/products/flashplayer/">Flash Player</a>.</p>
</div>
<script type="text/javascript">
// <![CDATA[
var so = new SWFObject("/articles/examples/wooden-puzzle-animation/puzzle.swf", "puzzle", "400", "342", "7", "#FFFFFF");
so.addParam("wmode", "transparent");
so.write("puzzle");
// ]]&gt;
</script>
<p><a href="/articles/examples/wooden-puzzle-animation/puzzle.zip">Source code</a> (1.45 MB) Flash MX 2004</p>
<h4>Creating the Graphics</h4>
<img src="/articles/examples/wooden-puzzle-animation/face.gif" alt="Steps involved in creating up the graphic of the puzzle pieces" />
<ol>
<li>We began by drawing the puzzle top view in Flash then skewing it to add some perspective.</li>
<li>Each piece is built up to appear thick and simulate depth.</li>
<li>The pieces are then exported from Flash as images and a wood texture is added in Photoshop to finish the effect.</li>
<li>Every piece is saved as an individual image, cropped closely.</li>
<li>Back in Flash, the images are applied to their corresponding piece as a bitmap fill and adjusted to fit (if needed).</li>
</ol>
<h4>Layering in Flash</h4>
<p>The tricky part is layering the pieces so they appear to slot together and create the 3D illusion.</p>
<p>Each piece is split into a base movieclip and separate movieclips for each join. When examining each join, we needed to figure out which parts would move in front of the other parts.</p>
<img src="/articles/examples/wooden-puzzle-animation/layers.jpg" alt="Diagram illustrating how the pieces are split before layering" />
<p>In both of the examples above, the blue area becomes bottom layer, with orange, yellow then green above it respectively.</p>
<p>Once all the joins from each piece have been layered in the correct order, they need to be labeled. The names we chose are made from 3 characters - a &#8220;p&#8221; and two digits (eg. p12, p31, p44).</p>
<p>The first digit is the puzzle piece number: from left to right, top to bottom (piece 1 is in the top left, piece 9 is the bottom right). The second digit is a sequential number for the separate movieclips that form a puzzle piece, with each new puzzle piece starting at 1.</p>
<h4>Animating</h4>
<h5>In the FLA</h5>
<p>A <code>Piece</code> class is created to hold the behaviour of the puzzle pieces. In the second frame of the FLA, nine <code>Piece</code> objects are created - one for each puzzle piece. The number of movieclip parts that make up each <code>Piece</code> are passed into the new object. Basically, a puzzle piece is made of many (movieclip) parts:</p>
<pre><code>var parts:Array = [3,4,3,4,5,4,3,4,3];
var pieces:Array = [];
for (var n=0; n&lt;9; n++){
  var pieceNum:Number = n + 1;
  var numParts:Number = parts[n];
  pieces[n]=new Piece(pieceNum, numParts);
}</code></pre>
<h5>The Constructor</h5>
<p>Inside <code>Piece.as</code>, each <code>Piece</code> object contains a <code>_parts</code> array. This array holds references to all the movieclip parts that make up that puzzle piece. It also contains each part&#8217;s <code>_y</code> position on the stage, relative to the first part of that piece:</p>
<pre><code>public function Piece(pieceNum:Number, numParts:Number){
  ...
  for (var i=1; i&lt;=numParts; i++) {
    var mc:MovieClip = _root["p" + pieceNum + i];
    mc.onPress = Delegate.create(this, this.onPress);
    ...
    if (i == 1) this._startY = mc._y;
    var y:Number = mc._y - this._startY;
    var part:Object = {mc:mc, y:y};
    this._parts.push(part);
  }
}</code></pre>
<p>Each of the mouse events and the <code>onEnterFrame</code> are assigned using the <code>Delegate</code> class to <a href="http://www.adobe.com/devnet/flash/articles/eventproxy.html">solve scoping issues</a>.</p>
<p>Still inside the <code>Piece</code> constructor, each piece is told to ignore mouse events:</p>
<pre><code>this.isEnabled = false;</code></pre>
<p>Which calls this setter to loop through all the movieclip parts and disable them:</p>
<pre><code>public function set isEnabled(bool:Boolean):Void {
  for (var i in this._parts) {
    this._parts[i].mc.enabled = bool;
  }
  ...
}</code></pre>
<p>The next action in the constructor is to set each puzzle piece to call a <code>drop</code> method sequentially, starting from the bottom right moving to the top left:</p>
<pre><code>var dropTime = (9 - pieceNum) * 1000;
_global['setTimeout'](this, 'drop', dropTime);</code></pre>
<p><a href="http://www.flashguru.co.uk/flash-8-settimeout/"><code>setTimeout</code></a> should seem familiar - unlike it&#8217;s sister function <code>setInterval</code>, it only gets called <em>once</em> after a specified interval. I guess that makes <code>setTimeout</code> the ugly sister&#8230;</p>
<p>The final action in the constructor is setting the <code>lift</code> property to raise the piece off the top of the screen - ready to be dropped:</p>
<pre><code>this.lift = random(150) + 600;</code></pre>
<p>The <code>lift</code> setter moves each movieclip part relative to the resting position (positive <code>lift</code> moves the <code>Piece</code> upwards):</p>
<pre><code>public function set lift(num:Number):Void {
  for (var i in this._parts) {
    this._parts[i].mc._y = this._parts[i].y + this._startY - num;
  }
  ...
}</code></pre>
<h5>Gravity</h5>
<p>When the <code>drop</code> method is invoked, it quite simply sets the acceleration of the <code>Piece</code> to -1:</p>
<pre><code>private function drop():Void {
  this.acc = -1;
}</code></pre>
<p>The setter for the <code>acc</code> attaches (or removes) the <code>onEnterFrame</code> from the first movieclip part in the <code>_parts</code> array. If the acceleration is stopped (set to <code>null</code>), it also enables mouse events on that puzzle piece for the first time:</p>
<pre><code>public function set acc(num:Number):Void {
  if (num == null) {
    this.isEnabled = true;
    delete this._parts[0].mc.onEnterFrame;		
  } else {
    this._parts[0].mc.onEnterFrame = Delegate.create(this, this.onEnterFrame);
  }
  ...
}</code></pre>
<p>The <code>onEnterFrame</code> calls the <code>fall</code> method&#8230;</p>
<pre><code>private function onEnterFrame():Void {
  this.fall();
}</code></pre>
<p>&#8230;which is where all the animation happens. The first few lines of code move the puzzle piece towards it&#8217;s resting position at an accelerated rate (<code>GRAVITY</code> default of 0.3):</p>
<pre><code>private function fall():Void {
  if (this.lift &gt; 0) {
    this.acc -= GRAVITY;
  } else if (this.lift &lt; 0) {
    this.acc += GRAVITY;
  }
  this.lift += this.acc;
  ...</code></pre>
<p>The remaining code in the <code>fall</code> method does two things. Firstly, it snaps the piece to it&#8217;s resting position when it gets within the <code>SNAP</code> threshold (default of 1) and removes the <code>onEnterFrame</code>.</p>
<p>Secondly, it bounces the puzzle piece off the surface based on the <code>FIRMNESS</code> modifier (default of 0.3). <code>FIRMNESS</code> of 1 is minimal bounce and any greater than that will make it bounce higher on impact. The surface bounce only effects the piece when it goes below it&#8217;s resting point and is moving downwards:</p>
<pre><code>  ...
  if ((Math.abs(this.acc) &lt; SNAP) &amp;&amp; (Math.abs(this.lift) &lt; SNAP)){
    this.lift = 0;
    this.acc = null;
  } else if ((this.acc &lt; 0) &amp;&amp; (this.lift &lt; 0)) {
    this.acc -= (this.acc * FIRMNESS);
  }
}</code></pre>
<p>That wraps it up. Post a comment if you make use of this technique - I&#8217;ll be interested to see how it can evolve.</p><a href="http://www.oxideinteractive.com.au/articles/tag/flash" rel="tag">Flash</a>, <a href="http://www.oxideinteractive.com.au/articles/tag/pseudo-3d" rel="tag">Pseudo 3D</a>]]></content:encoded>
			<wfw:commentRss>http://www.oxideinteractive.com.au/articles/wooden-puzzle-animation/feed/</wfw:commentRss>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/au/</creativeCommons:license>
	</item>
		<item>
		<title>Practical MathML</title>
		<link>http://www.oxideinteractive.com.au/articles/practical-mathml/</link>
		<comments>http://www.oxideinteractive.com.au/articles/practical-mathml/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 06:24:12 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
		
		<category><![CDATA[Web Standards]]></category>
<category>MathML</category><category>PHP</category>
		<guid isPermaLink="false">http://www.oxideinteractive.com.au/articles/practical-mathml/</guid>
		<description><![CDATA[MathML is a markup language used to facilitate the sharing of mathematical equations on the web. It contains both presentational and structural elements, allowing you to show how the equation looks, but also how it actually works.
A carefully encoded MathML expression can be evaluated in a computer algebra system, rendered in a Web browser, edited [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Mathml">MathML</a> is a markup language used to facilitate the sharing of mathematical equations on the web. It contains both presentational and structural elements, allowing you to show how the equation looks, but also how it actually works.</p>
<blockquote><p>A carefully encoded MathML expression can be evaluated in a computer algebra system, rendered in a Web browser, edited in your word processor, and printed on your laser printer. <a href="http://www.dessci.com/en/support/mathtype/tutorials/mathml/default.htm">Source</a></p></blockquote>
<p>Like many web technologies, actually achieving this optimistic description in the real world is not straightforward - some care must be taken when placing MathML equations in your HTML pages.</p>

<p>There are three qualities of MathML that make its implementation complicated. Firstly, its verbose XML structure makes it easy for computers to interpret, but difficult for humans to read and edit. Secondly, browser support is limited to:</p>
<ul>
  <li>Firefox</li>
  <li>Netscape 7</li>
  <li>Internet Explorer 6+ with the MathPlayer plugin</li>
  <li>Internet Explorer 5 (Mac or PC) with the Techexplorer plugin</li>
  <li>Amaya</li>
  <li>Camino</li>
</ul>
<p>Thirdly, specific fonts are required for displaying some equations. Thankfully, in Firefox if the user doesn&#8217;t have the correct font installed they are pointed towards a <a href="http://www.mozilla.org/projects/mathml/fonts/">specific page</a> by the browser and are guided through the font installation process.</p>
<p>This article will provide a brief survey of MathML techniques, followed by an example PHP script for embedding equations and providing alternative content.</p>
<h4>Putting equations on your site</h4>
<p>Prior to MathML, equations were generally embedded in web pages as images, and many websites continue to do it this way. Relying on images to display equations is far from optimal:</p>
<ul>
  <li>Can only print at low resolutions</li>
  <li>Can&#8217;t search within functions</li>
  <li>No semantic information is stored, so the equation cannot be used elsewhere without transcribing</li>
</ul>
<p>Other methods included using HTML symbols and CSS, providing the document as a PDF, linearising the notation or &#8220;drawing&#8221; the equation with ASCII.</p>
<p>Since MathML has become available, people have experimented with different ways of including MathML equations in documents. Below is an inexhaustive list of techniques that can aid in either writing MathML and/or serving up alternative content for people that can&#8217;t display MathML.</p>
<ul>
  <li><a href="http://www.dessci.com/en/products/mathplayer/author/creatingsites.htm">Javascript gateway page</a>
  <ul>
    <li>Requires the user to have Javascript enabled (if you use the <a href="http://www.dessci.com/en/support/mathtype/tutorials/mt_mp/tutorial.htm">default Design Science code</a>, users with Javascript disabled will receive a blank gateway page)</li>
    <li>Requires the creation and maintenance of two separate sites</li>
    <li>Having duplicate sites may negatively affect your search engine ranking</li>
    <li>Causes issues for other sites that want to link to a specific page</li>
  </ul>
  </li>
  <li><a href="http://www1.chapman.edu/~jipsen/asciimath.xml">Javascipt ASCII to MathML conversion</a>
  <ul>
    <li>Requires the user to have Javascript enabled</li>
    <li>Does not provide structural information, just presentational markup, so the equation can&#8217;t be easily reused elsewhere.</li>
  </ul>
  </li>
  <li><a href="http://gemal.dk/browserspy/mathml.html">Embed the equation in an iframe</a>
  <ul>
    <li>Embedding MathML this way means that the outer document doesn&#8217;t have to be valid XML, only the document displayed in the iframe does.</li>
    <li>Could be helpful if you are putting MathML into a legacy template</li>
  </ul>
  </li>
  <li><a href="http://golem.ph.utexas.edu/~distler/blog/itex2MML.html">Convert TeX equations to MathML on the fly with itex2MML</a>
  <ul>
    <li>Allows you to author equations in the easer-to-write <a href="http://en.wikipedia.org/wiki/TeX">TeX</a> format</li>
    <li>There is also a Moveable Type plugin available</li>
  </ul>
  </li>
  <li><a href="http://umm.sourceforge.net/">Universal MathML Manager</a>
  <ul>
    <li>Serves MathML to capable browsers and automatically renders image versions of equations for non-capable browsers</li>
    <li>Requires Java on your server to render images of the equations</li>
    <li>It&#8217;s an elegant solution, but might be overkill for sites that aren&#8217;t dedicated to mathematics</li>
  </ul>
  </li>
  <li><a href="http://www.oldschool.com.sg/index.php/module/Shared/action/Static/tmpl/ASCIIMathPHP">ASCIIMath server side ASCII to MathML converter</a>
  <ul>
    <li>Does not provide support for people without MathML capable browsers</li>
    <li>Like the javascript ASCIIMath converter, it does not provide structural equation markup</li>
  </ul>
  </li>
  <li><a href="http://en.wikipedia.org/wiki/Texvc">texvc</a> (TeX validator and converter)
  <ul>
    <li>Server side <a href="http://en.wikipedia.org/wiki/LaTeX">LaTeX</a> to HTML/MathML/image converter</li>
    <li>Used by <a href="http://en.wikipedia.org/wiki/MediaWiki">MediaWiki</a></li>
  </ul>
  </li>
</ul>
<h4>An example PHP script</h4>
<p>I&#8217;ve put together a brief PHP script that demonstrates one approach to serving MathML. This script displays MathML if the user&#8217;s browser can handle it, or an image if they cannot. Finally, if they can&#8217;t display an image it is possible to write a linearised version of the equation within the alt attribute, however this might not be practical for larger equations.</p>
<p>If a user cannot display MathML, this script will prompt them with information about how to install the right plugin, or change browser. Of course, casual users may just be happy to browse the image alternatives.</p>
<p>You can <a href="/articles/examples/practical-mathml/mathml-example.php">see the script in action here</a>, or <a href="/articles/examples/practical-mathml/mathml-example.txt">download it here</a>. I&#8217;ve included some notes on how it works below.</p>
<p>Because MathML is an application of XML, it needs to be placed within a valid XHTML document that is served with the appropriate <code>application/xhtml+xml</code> header. Internet Explorer can&#8217;t usually handle this header and normally tries to display it as a document tree, but MathPlayer (as of version 2) kicks in and makes sure the document is displayed correctly. Remember though, if you&#8217;re serving your documents as XML you need to make sure the whole document validates, otherwise it will not display <em>at all</em> in Firefox, and instead users will see an XML error page.</p>
<p>With older versions of MathPlayer, you had to either include an <code>object</code> element that told MathPlayer to start, or use an XSL stylesheet. These steps aren&#8217;t necessary anymore, you can serve the same XHTML page to all MathML capable browsers.</p>
<p>In theory, you should be able to use the <code>ACCEPT</code> header to determine whether a browser is MathML capable. Unfortunately not all MathML capable browsers correctly announce that fact through the <code>ACCEPT</code> header (like IE with MathPlayer, for example), so you need to examine the <code>USER_AGENT</code> string to see whether their browser supports MathML. In the future you&#8217;ll need to keep an eye out for when other browsers implement MathML support so that you can add them to your regular expressions. The <a href="http://en.wikipedia.org/wiki/Content_negotiation">content negotiation</a> could happen through Apache, but for portability it is done in this example through PHP. The regular expressions for determining MathML capabilities are based on <a href="http://golem.ph.utexas.edu/~distler/blog/archives/000167.html">Jacques Dister&#8217;s expressions</a>.</p>
<p>The content negotiation part of the script looks like this:</p>
<pre><code>
if ((preg_match("/Gecko|W3C_Validator|MathPlayer/", $_SERVER["HTTP_USER_AGENT"])
&amp;&amp; !preg_match("/Chimera|KHTML/", $_SERVER["HTTP_USER_AGENT"])){
  // BROWSER SUPPORTS MATHML
  $contenttype='application/xhtml+xml';
  $header='&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd" &gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml" 
  xml:lang="en"&gt;';
  $mathml=true;
}else{
  // BROWSER PROBABLY DOESN'T SUPPORT MATHML
  $contenttype='text/html';
  $header='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;';
  $mathml=false;
}

</code></pre>
<p>The DTD might not look familiar, that&#8217;s because the W3C provides a <a href="http://www.w3.org/TR/MathML2/appendixa.html#parsing.module">useful DTD that combines the XHTML and MathML DTDs</a>, which is perfect for embedding MathML into XHTML documents.</p>
<p>Pages parsed by the MathPlayer plugin are unfortunately rendered in quirks mode in Internet Explorer, even in IE7. This may well cause headaches for your CSS layout. There <a href="http://www.rikkertkoppes.com/thoughts/authoring-mathml/">is a workaround for this</a>, but it involves placing another doctype after the first one, which is far from ideal.</p>

<h4>Accessibility</h4>
<p>Screen reader users should also be able to hear MathML equations if they have the MathPlayer plugin installed. The screen readers JAWS, Window-Eyes, HAL, Read &amp; Write and BrowseAloud <a href="http://www.dessci.com/en/company/press/releases/040722.htm">all work with MathPlayer</a>. Also important for visually impaired users, equations should increase in size with the browser text-zoom, and MathPlayer includes a MathZoom feature that increases the size of equations in IE, making them easier to read.</p>
<p>By providing MathML for supported browsers, images for browsers that don&#8217;t support MathML, and plain text for browsers that don&#8217;t support either you can be confident that your mathematical content is accessible to the maximum number of people.</p>
<h4>MathML Resources</h4>
<ul>
<li><a href="http://www.mathmlcentral.com/Tools/ToMathML.jsp">Convert text equations to MathML online</a></li>
<li><a href="http://www.dessci.com/en/reference/webmath/">Export MathML out of Microsoft Word using MathType</a></li>
<li><a href="http://www.dessci.com/en/support/mathtype/tutorials/default.htm">Design Science (the maker of MathPlayer) has a range of tutorials on putting equations online</a></li>
<li><a href="http://www.dessci.com/en/products/mathplayer/author/readers.htm">Instructions on distributing MathPlayer</a></li>
<li><a href="http://www.mozilla.org/projects/mathml/authoring.html">Authoring MathML for Mozilla, contains tips on MathML markup</a></li>
<li><a href="http://www.dessci.com/en/products/mathplayer/author/">Summary of authoring for MathML</a></li>
<li><a href="http://www.w3.org/Math/testsuite/">The W3C MathML test suite</a></li>
<li><a href="http://www.mozilla.org/projects/mathml/authoring.html">Authoring MathML for Mozilla</a></li>
</ul><a href="http://www.oxideinteractive.com.au/articles/tag/mathml" rel="tag">MathML</a>, <a href="http://www.oxideinteractive.com.au/articles/tag/php" rel="tag">PHP</a>]]></content:encoded>
			<wfw:commentRss>http://www.oxideinteractive.com.au/articles/practical-mathml/feed/</wfw:commentRss>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/au/</creativeCommons:license>
	</item>
		<item>
		<title>WSG Presentation - 18 Jan 07</title>
		<link>http://www.oxideinteractive.com.au/articles/wsg-presentation-18-jan-07/</link>
		<comments>http://www.oxideinteractive.com.au/articles/wsg-presentation-18-jan-07/#comments</comments>
		<pubDate>Mon, 22 Jan 2007 16:05:25 +0000</pubDate>
		<dc:creator>Alexi</dc:creator>
		
		<category><![CDATA[Web Standards]]></category>
<category>Navy</category><category>WSG</category>
		<guid isPermaLink="false">http://www.oxideinteractive.com.au/articles/wsg-presentation-18-jan-07/</guid>
		<description><![CDATA[These are my notes from the presentation I gave at the 7th Canberra Web Standards Group meeting, 18 January 2007.
I spoke about the Navy internet website - the current version, the next version and problems we&#8217;ve had.

Over the next few weeks, I&#8217;ll be doing more detailed posts (including code examples) for most of the cool [...]]]></description>
			<content:encoded><![CDATA[<p>These are my notes from the presentation I gave at the 7th Canberra <a href="http://webstandardsgroup.org/meetings/index.cfm?event_id=85">Web Standards Group</a> meeting, 18 January 2007.</p>
<p>I spoke about the <a href="http://www.navy.gov.au">Navy</a> internet website - the current version, the next version and problems we&#8217;ve had.</p>

<p>Over the next few weeks, I&#8217;ll be doing more detailed posts (including code examples) for most of the cool things in the current version.</p>
<h4>Introduction</h4>
<ul>
	<li>navy.gov.au
<ul>
	<li>Improvements</li>
	<li>Obstacles</li>
	<li>Future</li>
</ul>
</li>
	<li>Opportunity to share
<ul>
	<li>Pool public-service webmaster resources</li>
</ul>
</li>
</ul>
<h4>Background</h4>
<ul>
	<li>Me
<ul>
	<li>Navy&#8217;s internet Web-Manager, part-time</li>
</ul>
</li>
	<li>Navy&#8217;s small web team
<ul>
	<li>Content supplied to us</li>
	<li>We control the code</li>
</ul>
</li>
	<li>Our website
<ul>
	<li>Began early 1997
<ul>
	<li><a href="http://web.archive.org/web/19970204192122/http://www.navy.gov.au/">Feb 1997</a></li>
	<li><a href="http://web.archive.org/web/19971210142506/http://www.navy.gov.au/">Dec 1997</a></li>
	<li><a href="http://web.archive.org/web/19980524045957/http://www.navy.gov.au/">May 1998</a></li>
	<li><a href="http://web.archive.org/web/20011012050243/http://www.navy.gov.au/">Oct 2001</a></li>
	<li><a href="http://web.archive.org/web/20031229092650/http://www.navy.gov.au/">Dec 2003</a></li>
</ul>
</li>
	<li>Today, 2,500 static pages</li>
	<li>4,000 unique visitors per day</li>
</ul>
</li>
</ul>
<h4>Current Version</h4>
<ul>
	<li>Launched November 2005</li>
	<li>Recruiting is very important</li>
	<li>&#8220;Make it sexy&#8221;
<ul>
	<li>To who?</li>
	<li>All potential recruits?</li>
	<li>No, only to Navy Headquarters.</li>
</ul>
</li>
	<li>New content management process
<ul>
	<li>Centralised maintenance + A few custom tools = No need for CMS</li>
	<li>Not as effective for distributed authoring systems</li>
</ul>
</li>
</ul>
<h5>Efficient Maintenance</h5>
<h6>Standards Based</h6>
<ul>
	<li>Semantic XHTML</li>
	<li>Page title &#038; meta-data generation</li>
</ul>
<pre><code>&lt;title&gt;
Commanding Officer - HMAS ANZAC (Royal Australian Navy)
&lt;/title&gt;
&lt;h1&gt;Royal Australian Navy&lt;/h1&gt;
&lt;h2&gt;HMAS ANZAC&lt;/h2&gt;
&lt;h3&gt;Commanding Officer&lt;/h3&gt;</code></pre>
<ul>
	<li>Well, nearly there&#8230;</li>
</ul>
<h6>Source Control</h6>
<ul>
	<li><a href="http://subversion.tigris.org/">Subversion</a> (<a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> Windows client)
<ul>
	<li>Logs all changes</li>
</ul>
</li>
	<li>Helps meet archiving requirements
<ul>
	<li>Unlimited development copies</li>
</ul>
</li>
	<li>Smart change-conflict resolution</li>
</ul>
<h6>Rapid Maintenance</h6>
<ul>
	<li>No layout markup</li>
	<li>Header, column break and footer includes</li>
</ul>
<pre><code>&lt;?php include("files/header.html"); ?&gt;
&lt;h2&gt;HMAS ANZAC&lt;/h2&gt;
&lt;h3&gt;Commanding Officer&lt;/h3&gt;
&lt;p&gt;Lorem Ipsum.&lt;/p&gt;
&lt;p&gt;Dolor si Amet.&lt;/p&gt;
&lt;?php include("files/break.html"); ?&gt;
&lt;img src=&quot;images/co.jpg</code><code>&quot;</code><code> alt="Commanding Officer" /&gt;
&lt;?php include("files/footer.html"); ?&gt;</code></pre>
<ul>
	<li>Pages parsed for:
<ul>
	<li>Email obfuscation</li>
	<li>Page title &#038; meta-data generation</li>
</ul>
</li>
	<li>Editplus will facilitate easy upload</li>
</ul>
<h6>Gallery Mass Uploader</h6>
<ul>
	<li>Put original photos into a local folder</li>
	<li>Run script that automatically:
<ul>
	<li>Resizes and optimises the images,</li>
	<li>Creates thumbnails,</li>
	<li>Extracts descriptions from the metadata,</li>
	<li>Zips it all up,</li>
	<li>FTP&#8217;s it to the server,</li>
	<li>Unzips on the server and</li>
	<li>Adds the photos to the database.</li>
</ul>
</li>
</ul>
<h5>Other Helpful Features</h5>
<h6>Google Public Service search</h6>
<ul>
	<li><a href="https://services.google.com/publicservice/login">https://services.google.com/publicservice/login</a></li>
	<li>Not-for-profits</li>
	<li>Better than previous Google options</li>
	<li>Familiarity, in our template, without adverts</li>
</ul>
<h6>Custom 404&#8217;s</h6>
<ul>
	<li>When a page doesn&#8217;t exist, 4 types of feedback:
<ul>
	<li>Internal broken link</li>
	<li>Locally cached version</li>
	<li>Link from external site</li>
	<li>Incorrect user inputted link (or bookmark)</li>
</ul>
</li>
	<li>Redirection from .HTM to .HTML</li>
</ul>
<h6>Help-bot</h6>
<ul>
	<li>Scans contact requests and offers suggestions</li>
	<li>Decrease in commonly asked questions</li>
	<li>Accurate suggestions to 80% of 400 tested</li>
	<li>Frees time within our team</li>
</ul>
<h5>Issues</h5>
<ul>
	<li>Told a company will redevelop the website
<ul>
	<li>No knowledge of web design</li>
</ul>
</li>
	<li>Navy&#8217;s never followed a user-centred process
<ul>
	<li>They weren&#8217;t concerned</li>
</ul>
</li>
	<li>We stayed on the offensive</li>
	<li>Had to educate them both</li>
	<li>We won&#8230; for now</li>
</ul>
<h4>Future</h4>
<ul>
	<li>Launch mid-2007</li>
	<li>9th version of navy.gov.au</li>
	<li>First to address user needs
<ul>
	<li>User research</li>
	<li>Stakeholder interviews</li>
	<li>User testing</li>
</ul>
</li>
</ul>
<h5>Improvements</h5>
<h6>Working with identified Business Goals</h6>
<ul>
	<li>Serve public and inform about organisation</li>
	<li>Generate interest in the Navy
<ul>
	<li>Entice new recruits</li>
	<li>Make applying easy</li>
</ul>
</li>
	<li>Defence Force Recruiting works for all services</li>
	<li>navy.gov.au still required as a recruiting tool</li>
	<li>Reinforce values and brand
<ul>
	<li>Honour, Honesty, Courage, Integrity &#038; Loyalty</li>
</ul>
</li>
</ul>
<p><strong>Inform</strong></p>
<ul>
	<li>Useful, accessible content
<ul>
	<li>Lower bandwidth</li>
	<li>Degrade gracefully</li>
	<li>Fully Standards based</li>
</ul>
</li>
	<li>Most content not updated often
<ul>
	<li>Written for different audiences and mediums</li>
	<li>Rewritten for the web</li>
</ul>
</li>
	<li>Some content needs to be updated frequently
<ul>
	<li>Nobody willing to own content generation</li>
</ul>
</li>
</ul>
<p><strong>Entice</strong></p>
<ul>
	<li>Conform with brand</li>
	<li>Promote values</li>
	<li>Entertain
<ul>
	<li>Series of online games, interactives and TV shows</li>
</ul>
</li>
</ul>
<p><strong>Assist</strong></p>
<ul>
	<li>All elements user-tested</li>
	<li>More business-operations online</li>
	<li>Financial transactions online</li>
	<li>News scraper</li>
	<li>Content shared with Defence Force Recruiting
<ul>
	<li>Users shouldn&#8217;t have to leave one site to get information maintained by the other</li>
	<li>All recruiting information should be able to be accessed through navy.gov.au</li>
</ul>
</li>
</ul>
<h6>Central Point of Contact</h6>
<ul>
	<li>Navy information found in:
<ul>
	<li><a href="http://www.defence.gov.au">Defence Department</a></li>
	<li><a href="http://www.defencejobs.gov.au/navy">Defence Force Recruiting</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Royal_Australian_Navy">Wikipedia</a></li>
</ul>
</li>
</ul>
<h6>Richer Visual Experience</h6>
<ul>
	<li>Integrate content photos with gallery</li>
	<li>Photos will link to information about their content</li>
</ul>
<h6>Guest Authors</h6>
<ul>
	<li>Creating a community</li>
	<li>Moderated blog-style posts with guest authors
<ul>
	<li>Public and personnel contributions</li>
</ul>
</li>
	<li>&#8220;Did you know&#8221; style teaser from homepage</li>
</ul>
<h6>Web instead of a Hierarchy</h6>
<ul>
	<li>Tags allow each page to have multiple labels</li>
	<li>Wiki-style, cross-referenced content</li>
</ul>
<h4>Conclusion</h4>
<ul>
	<li>Keen to hear about shortcomings</li>
	<li>Share our techniques and tools</li>
</ul><a href="http://www.oxideinteractive.com.au/articles/tag/navy" rel="tag">Navy</a>, <a href="http://www.oxideinteractive.com.au/articles/tag/wsg" rel="tag">WSG</a>]]></content:encoded>
			<wfw:commentRss>http://www.oxideinteractive.com.au/articles/wsg-presentation-18-jan-07/feed/</wfw:commentRss>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/au/</creativeCommons:license>
	</item>
	</channel>
</rss>
