<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>stillmovingdesign journal</title>
    <link>http://www.smd.net.au/journal/</link>
    <description>stillmovingdesign journal</description>
    <dc:language>en</dc:language>
    <dc:creator>martin@smd.net.au</dc:creator>
    <dc:rights>Copyright 2009</dc:rights>
    <dc:date>2009-12-17T04:30:00+10:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>Custom article styling in textpattern</title>
      <link>http://www.smd.net.au/journal/detail/custom_article_styling_in_textpattern/</link>
      <guid>http://www.smd.net.au/journal/detail/custom_article_styling_in_textpattern/</guid>
<description>
        <![CDATA[	<p>I was over at Chris Coyier&#8217;s <span class="caps">CSS</span> Tricks watching a tutorial on how to <a href="http://css-tricks.com/video-screencasts/77-styling-an-individual-article/">style individual articles</a>. He references Jason Santa-Maria&#8217;s <a href="http://jasonsantamaria.com/articles/">site</a> as a great example of this. </p>

	<p>He also showed off a neat WordPress plugin that let&#8217;s you override any base <span class="caps">CSS</span> style information to create a different look for a specific article. I had a textpattern screen open in front of me at the time and thought, that&#8217;s easy to do.</p>

	<p>As Chris explains in his tutorial we want to be able to create a new style for a particular article. So we need to override any base styles that get loaded. So how do we do that? With a custom field of course.</p>

	<p>Create a custom field called &#8220;style-override&#8221;, make it a text-area:</p>

	<p><img src="http://farm3.static.flickr.com/2704/4192146932_470a03a551.jpg" width="500" height="183" alt="glz_01" /></p>

	<p>NB: I&#8217;m using Gerhard Lazu&#8217;s <a href="http://www.gerhardlazu.com/blog/50/glz_custom_fields-unveiled">glz_custom_fields</a> plugin in this first example. It&#8217;s worth every cent and more. It&#8217;ll be used here to create a text area custom field which will give us space to write some code although, ultimately, not entirely necessary for this technique to work.</p>

	<p>Head on over to the Write tab and you should see a text-area somewhere underneath the Excerpt field:</p>

	<p><img src="http://farm3.static.flickr.com/2784/4192152766_e69e1ddf89.jpg" width="500" height="255" alt="txp_write_01" /></p>

	<p>So we can enter some <span class="caps">CSS</span> styling now:</p>

<pre><code>body &#123;
background-color: red;
&#125;
</code></pre>

	<p>&#8230;but it would be ignored. Textpattern doesn&#8217;t know what to do with it.</p>

	<p>We know we only want this code to be applied on an individual article basis and that, if we&#8217;re good coders, any references to <span class="caps">CSS</span> should go in the <strong>head</strong> of our html.</p>

	<p><strong>The code:</strong></p>

<pre><code>&lt;head&gt;
&lt;!-- Style Override on a per article basis --&gt;
&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;txp:if_individual_article&gt;
&lt;txp:if_custom_field name=&quot;style-override&quot;&gt; 
  &lt;txp:custom_field name=&quot;style-override&quot; /&gt;
&lt;/txp:if_custom_field&gt;
&lt;/txp:if_individual_article&gt;
&lt;/style&gt;
&lt;/head&gt;
</code></pre>

	<p>If we&#8217;re looking at this as an individual article use the <span class="caps">CSS</span> from custom field &#8220;style-override&#8221;.</p>

	<h2>Whoa there&#8230;</h2>

	<p><strong>But</strong> as Chris rightly points out, what if you want to reuse all those styles you&#8217;ve lovingly crafted for another post. It doesn&#8217;t make sense to copy/paste all that <span class="caps">CSS</span> into another article&#8217;s custom field. We can reference another <span class="caps">CSS</span> file from within textpattern (or externally if you wish. <a href="http://forum.textpattern.com/viewtopic.php?id=25386">rvm_css</a> is great for this).</p>

	<p>Create a new <span class="caps">CSS</span> file called &#8220;something-specific-to-your-article&#8221;.</p>

	<p>In the custom field simply add the name of your new <span class="caps">CSS</span> file:</p>

	<p><img src="http://farm3.static.flickr.com/2802/4191444521_c500003e8b_m.jpg" width="190" height="49" alt="txp_style_override" /></p>

	<p>The head our code should now look like this:</p>

<pre><code>&lt;head&gt;
&lt;!-- Style Override on a per article basis (external CSS)--&gt;
&lt;txp:if_individual_article&gt;
&lt;txp:if_custom_field name=&quot;style-override&quot;&gt;
&lt;txp:css format=&quot;link&quot; n=&quot;&lt;txp:custom_field name=&quot;style-override&quot; /&gt;&quot; /&gt;
&lt;/txp:if_custom_field&gt;
&lt;/txp:if_individual_article&gt;
&lt;/head&gt;
</code></pre>

	<p>The key line here is:</p>

<pre><code>&lt;txp:css format=&quot;link&quot; n=&quot;&lt;txp:custom_field name=&quot;style-override&quot; /&gt;&quot; /&gt;
</code></pre>

	<p>Enjoy folks!</p>]]>
</description>
      <dc:subject>Web development, CSS, textpattern</dc:subject>
      <dc:date>2009-12-17T04:30:00+10:00</dc:date>
    </item>

    <item>
      <title>Extending textpattern&#8217;s code edit windows</title>
      <link>http://www.smd.net.au/journal/detail/extending_textpatterns_code_edit_windows/</link>
      <guid>http://www.smd.net.au/journal/detail/extending_textpatterns_code_edit_windows/</guid>
<description>
        <![CDATA[	<p>Love editing code in textpattern? Wish you had more room to write your code?</p>

	<p>Go find your default texpattern 4.2.0 .css file located in: /textpattern/theme/classic/textpattern.css</p>

	<p>Copy the <span class="caps">CSS</span> below and paste it at the end and hit save.</p>

<pre>#page-page tr td.column:nth-of-type(2), #page-form #edit tr td:nth-of-type(2), #page-css #edit tr td:nth-of-type(2) &#123;
	width: 80%;
&#125;
textarea#html.code, textarea#form.code, textarea#css.code &#123;
	width: 100%;
&#125;
</pre>

	<p>If you have another txp admin theme enabled it may not work. But you get the idea of what the above code is doing.</p>]]>
</description>
      <dc:subject>Web development, textpattern</dc:subject>
      <dc:date>2009-11-25T07:10:01+10:00</dc:date>
    </item>

    <item>
      <title>Google and the meta tag description dance</title>
      <link>http://www.smd.net.au/journal/detail/google_and_the_meta_tag_description_dance/</link>
      <guid>http://www.smd.net.au/journal/detail/google_and_the_meta_tag_description_dance/</guid>
<description>
        <![CDATA[	<p>So we have it from the horse&#8217;s mouth that Google <a href="http://googlewebmastercentral.blogspot.com/2009/09/google-does-not-use-keywords-meta-tag.html">doesn&#8217;t really use the meta keywords tag</a> in its page rankings. Ok then.</p>

	<p>This got me thinking about producing content-specific meta descriptions which are more useful. I&#8217;m going to use <a href="http://www.tracktime-asia.com">Tracktime Asia website</a> to illustrate.</p>

	<p><img src="/images/portfolio/Tracktime_Asia_-_Home.jpg"/></p>

	<p>In textpattern I use the following approach (along with the great <a href="http://rahforum.biz/plugins/rah_metas">rah_metas</a> textpattern plugin) to output meta description code on a per article basis. <span class="caps">BUT</span> what if you&#8217;re using sticky articles as &#8216;static pages&#8217; or viewing an article list? The plugin won&#8217;t work in those situations.</p>

	<p>One way is to test to see if we&#8217;re looking at an article list or not (eg like a News page listing several articles).</p>

<pre>&lt;txp:if_article_list&gt;
&lt;txp:output_form form=&quot;meta&quot;  /&gt;
&lt;txp:else /&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
&lt;txp:rah_metas description=&quot;Tracktime Asia: Corporate Entertainment, Product Launches, Slide Control and Driver Training at Shanghai and Zhuhai.&quot; description_replacement=&quot;1&quot; description_from=&quot;meta_description&quot; prefercontent=&quot;1&quot; robots=&quot;index, follow&quot; author=&quot;Tracktime Asia&quot; description_trail=&quot;&quot; copyright=&quot;Copyright &amp;copy; &lt;txp:upm_datetime format=&quot;%Y&quot;/&gt; Tracktime Asia, Code: stillmovingdesign&quot;/&gt;
&lt;/txp:if_article_list&gt;
</pre>

	<p>If we&#8217;re looking at an article list we output the form called &#8220;meta&#8221; which contains the code below (simplified for the sake of this example):</p>

<pre>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
&lt;meta name=&quot;description&quot; content=&quot;&lt;txp:section title=&quot;1&quot; /&gt; - Tracktime Asia: Corporate Entertainment, Product Launches, Slide Control and Driver Training at Shanghai and Zhuhai.&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;Tracktime Asia&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;index,follow,archive&quot; /&gt;
</pre>

	<p>You can see that in the code above we&#8217;re outputting the Section title too. You could get really fancy here and test for specific sections and output more descriptive information. Like:</p>

<pre>&lt;txp:if_section name=&quot;about&quot;&gt;Some REALLY descriptive text about the About section!&lt;/txp:if_section&gt;
</pre>

	<p>If we&#8217;re <strong>not</strong> looking at an article list but rather an individual article we want to get specific with the meta description which is where the rah_metas plugin is useful.</p>

<pre>...&lt;txp:else /&gt;
&lt;txp:rah_metas description=&quot;Tracktime Asia: Corporate Entertainment, Product Launches, Slide Control and Driver Training at Shanghai and Zhuhai.&quot; description_replacement=&quot;1&quot; description_from=&quot;meta_description&quot; prefercontent=&quot;1&quot; robots=&quot;index, follow&quot; author=&quot;Tracktime Asia&quot; description_trail=&quot;&quot; copyright=&quot;Copyright &amp;copy; &lt;txp:upm_datetime format=&quot;%Y&quot;/&gt; Tracktime Asia, Code: stillmovingdesign&quot;/&gt;
&lt;/txp:if_article_list&gt;
</pre>

	<p>In textpattern each article has a custom field called &#8220;meta_description&#8221; available to it. It outputs whatever is in that custom field. Alternatively, if that custom field is empty it&#8217;ll use the default description or &#8211; if you ask it to &#8211; either the body or excerpt field. It&#8217;s really worth a visit to the <a href="http://rahforum.biz/plugins/rah_metas">plugin page</a> and the associated <a href="http://forum.textpattern.com/viewtopic.php?id=27506">textpattern forum</a>.</p>

	<p>I know <span class="caps">SEO</span> is a bit of a &#8216;dark art&#8217; in some ways. The point of all this is to give Google a reason to crawl your site and so it can differentiate between your content. Having a unique description per page might just help it along a little.</p>

	<p>On a related note here&#8217;s the code I use to generate the browser titles for <a href="http://www.tracktime-asia.com">Tracktime Asia</a>.</p>

<pre>&lt;title&gt;Tracktime Asia &lt;txp:if_section name=&quot;&quot;&gt;| Home &lt;txp:else /&gt; | &lt;txp:section title=&quot;1&quot; /&gt;&lt;/txp:if_section&gt;&lt;txp:if_individual_article&gt; - &lt;txp:title /&gt;&lt;/txp:if_individual_article&gt;&lt;/title&gt;
</pre>

	<p>It&#8217;s a similar approach.</p>

	<h3>Update:</h3>

	<p>You can use the same method to produce the canonical link element in your header. This works in a individual article or &#8216;sticky&#8217; article section arrangement. It most likely won&#8217;t work with categories.</p>

<pre>&lt;txp:if_individual_article&gt;
&lt;link rev=&quot;canonical&quot; href=&quot;&lt;txp:permlink /&gt;&quot; /&gt;
&lt;txp:else /&gt;
&lt;link rev=&quot;canonical&quot; href=&quot;&lt;txp:site_url /&gt;&lt;txp:section title=&quot;0&quot; /&gt;&quot; /&gt;
&lt;/txp:if_individual_article&gt;
</pre>

	<h3>Linky-poos:</h3>

	<ul>
		<li><a href="http://googlewebmastercentral.blogspot.com/2009/09/google-does-not-use-keywords-meta-tag.html">Google article</a></li>
	</ul>]]>
</description>
      <dc:subject>Web development</dc:subject>
      <dc:date>2009-09-24T05:34:01+10:00</dc:date>
    </item>

    <item>
      <title>Building Tracktime Asia with textpattern</title>
      <link>http://www.smd.net.au/journal/detail/building_tracktime_asia_with_textpattern/</link>
      <guid>http://www.smd.net.au/journal/detail/building_tracktime_asia_with_textpattern/</guid>
<description>
        <![CDATA[	<p>A series of three videos giving a rundown of how the new <a href="http://www.tracktime-asia.com">Tracktime Asia</a> website is put together with textpattern.</p>

	<p>See them here or over on <a href="http://vimeo.com/album/127797">Vimeo</a>. If you have any questions post them <a href="http://forum.textpattern.com/viewtopic.php?id=31836">here</a>. Enjoy.</p>

	<h2>Part One</h2>

 <object width="572" height="322"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6637201&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6637201&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="572" height="322"></embed></object>

	<h2>Part Two</h2>

 <object width="572" height="322"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6637250&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6637250&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="572" height="322"></embed></object>

	<h2>Part Three</h2>

 <object width="572" height="322"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6637258&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6637258&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="572" height="322"></embed></object>

]]>
</description>
      <dc:subject>Web development</dc:subject>
      <dc:date>2009-09-18T05:43:00+10:00</dc:date>
    </item>

    <item>
      <title>Creating an RSS builder in ExpressionEngine</title>
      <link>http://www.smd.net.au/journal/detail/creating_an_rss_builder_in_expressionengine/</link>
      <guid>http://www.smd.net.au/journal/detail/creating_an_rss_builder_in_expressionengine/</guid>
<description>
        <![CDATA[	<p>A recent project called for the ability to dynamically create <span class="caps">RSS</span> feeds based on user-selectable categories. ExpressionEngine lets you use the &#8216;category&#8217; keyword to zero in on a particular category (or categories) when creating an <span class="caps">RSS</span> feed. In this project we wanted the end user to be able to select from a number of categories to create a custom <span class="caps">RSS</span> feed.</p>

	<p><strong>Note:</strong> This is a simple solution and not particularly beautiful but works well enough (except for Safari). Spaces inserted into the code block below to allow for proper display.</p>

	<p>Demo page: <a href="http://www.smd.net.au/site/rssbuilder">http://www.smd.net.au/site/rssbuilder</a></p>

	<p>There are two templates. The first calls up our categories for a particular weblog &#8211; in this case it&#8217;s our <a href="http://www.smd.net.au/journal/">Journal</a> section.</p>

<pre>
<code>
 &lt;h2&gt;Journal entries:&lt;/h2&gt;
 &lt;form action=&quot;&#123;path=&quot;site/rssbuilder_result/&quot;&#125;&quot; method=&quot;get&quot; accept-charset=&quot;utf-8&quot;&gt;
 &#123;exp:weblog:categories weblog=&quot;journal&quot; style=&quot;linear&quot; dynamic=&quot;off&quot; category_group=&quot;2&quot; category=&quot;not 18&quot;&#125;
 &lt;input type=&quot;checkbox&quot; name=&quot;cat&quot; value=&quot;&#123;category_id&#125;&quot; /&gt;&#123;category_name&#125;&lt;br/&gt;
 &#123;/exp:weblog:categories&#125;
 &lt;p&gt;&lt;input type=&quot;reset&quot; value=&quot;Reset!&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Submit&quot;&gt;&lt;/p&gt;
 &lt;/form&gt;  
</code>
</pre>

	<p>The second template is where our <a href="http://www.smd.net.au/site/rssbuilder_result/">results get pushed</a>. This is where the ugly stuff happens. (Explanation is below the code).</p>

<pre>
<code>
 &lt; h1 &gt;RSS Builder Results&lt;/ h1 &gt;
 &lt; ?php
 function curPageURL() &#123;
 $pageURL = &#39;http&#39;;
 $pageURL .= &quot;://&quot;;
 if ($_SERVER[&quot;SERVER_PORT&quot;] != &quot;80&quot;) &#123;
 $pageURL .= $_SERVER[&quot;SERVER_NAME&quot;].&quot;:&quot;.$_SERVER[&quot;SERVER_PORT&quot;].$_SERVER[&quot;REQUEST_URI&quot;];
 &#125; else &#123;
 $pageURL .= $_SERVER[&quot;SERVER_NAME&quot;].$_SERVER[&quot;REQUEST_URI&quot;];
 &#125;
 return $pageURL;
 &#125;
 ? &gt;
 &lt;p&gt;Click below for your custom RSS feed:&lt;/p&gt;
 &#123;exp:replace find=&quot;http://www.smd.net.au/site/rssbuilder_result/|?cat=|&amp;cat=&quot; replace=&quot;http://www.smd.net.au/site/journal_rss/|category/|&amp;#124;&quot; multiple=&quot;yes&quot;&#125;
 &lt;p&gt;&lt;a href=&quot;&amp;lt;?php echo curPageURL();?&amp;gt;&quot;&gt;&amp;lt;?php echo curPageURL();?&amp;gt;&lt;/a&gt;
 &#123;/exp:replace&#125;
</code>
</pre>

	<p>The block of <span class="caps">PHP</span> gets the current <span class="caps">URL</span> from the browser and is echoed with:</p>

<pre>
<code>
 &lt; ?php echo curPageURL();? &gt;
</code>
</pre>

	<p>This is wrapped up in the only third-party plugin you&#8217;ll need here, Lodewijk Schutte&#8217;s <a href="http://loweblog.com/">Find &amp; Replace</a>.</p>

	<p>This takes the browser <span class="caps">URL</span> and replaces it with our <span class="caps">RSS</span> url and adds the category keyword. Anything with &#8220;?cat&#8221; and &#8220;&cat;&#8221; it replaces with the &#8220;|&#8221; piping character. Because this is the character used in the plugin we need to use the unicode version of &#124;.</p>

	<p>So now our link goes from looking like this:</p>

<pre>
<code>
  http ://www.smd.net.au/site/rssbuilder_result/?cat=7&amp;cat=10
</code>
</pre>

	<p>to this link which can be copied into an <span class="caps">RSS</span> reader:</p>

<pre>
<code>
  http ://www.smd.net.au/site/journal_rss/category/7|10
</code>
</pre>]]>
</description>
      <dc:subject>Web development</dc:subject>
      <dc:date>2009-05-17T11:21:00+10:00</dc:date>
    </item>

    <item>
      <title>Behind New Film Media</title>
      <link>http://www.smd.net.au/journal/detail/behind_new_film_media/</link>
      <guid>http://www.smd.net.au/journal/detail/behind_new_film_media/</guid>
<description>
        <![CDATA[	<p>A new addition to the portfolio is film producer Ben Adams&#8217; <a href="http://www.newfilmmedia.com">New Film Media</a> website. It&#8217;s hard not acknowledge Ben&#8217;s talents as a producer given some of the work on his site.</p>

	<p>It&#8217;s a website that I really wanted to do in <a href="http://www.textpattern.com">textpattern</a>, but with the deadline being so tight, unfortunately, I had to put it together as a static site. Rather than use Dreamweaver templates, or even worse, straight <span class="caps">HTML</span>, I decided to weave a bit of <span class="caps">PHP</span> magic.</p>

	<p>So what&#8217;s the benefit of using <span class="caps">PHP</span> in this case? There are a lot of pages that do essentially the same task &#8211; show a video clip. Although there&#8217;s a page for each video clip, it&#8217;d get uglier to have a page with any repetitive code in it. If you can cut down the repetition and have each page as generic as possible, it will make changing the design easier down the track.</p>

	<h3>Let&#8217;s break down the <a href="http://www.newfilmmedia.com/tvcs/"><span class="caps">TVCS</span></a> page:</h3>

	<ul>
		<li>Our variables</li>
		<li>Header code</li>
		<li>Section we&#8217;re in</li>
		<li>Navigation</li>
		<li>Video clip</li>
		<li>Credits</li>
		<li>Email to a friend</li>
		<li><span class="caps">TVC</span> thumbails</li>
		<li>Footer code</li>
	</ul>

	<p><img src="http://farm4.static.flickr.com/3580/3329063401_435eb81901_o.png" alt="tvcs" border="0" width="409" height="347" /></p>

	<p>This is where most of the &#8216;tricky&#8217; stuff happens. For each page I&#8217;m setting a bunch a variables to handle some naming tasks.</p>

	<ul>
		<li><strong>$Section</strong>: This gets used in the body tag to control the <span class="caps">CSS</span> for the navigation li element. The <span class="caps">CSS</span> below changes the background position of the image when that element is found under the body id of &#8216;tvcs&#8217;.</li>
	</ul>

	<p><img src="http://farm4.static.flickr.com/3588/3330001246_403a27e905_o.png" alt="css" border="0" width="496" height="189" /></p>

	<p><img src="http://farm4.static.flickr.com/3609/3330015654_d028325ebf_o.png" alt="navigation" border="0" width="563" height="146" /></p>

	<ul>
		<li><strong>$thisPage</strong>: Gets passed into the video.php file to tell it what the Quicktime poster frame and video filename is called.</li>
	</ul>

	<p><img src="http://farm4.static.flickr.com/3397/3329077933_5eb114661c_o.png" alt="video" border="0" width="684" height="186" /></p>

	<p>If it&#8217;s not obvious, there&#8217;s <span class="caps">ONE</span> video.php file covering 16 videos. If the client decides that he want to change the video format from Quicktime to Flash at some point, we only to change that one video file and boom, it&#8217;s done.</p>

	<ul>
		<li><strong>$Title</strong>: This gets passed over to email_on.php and the credits_table.php.</li>
	</ul>

	<ul>
		<li><strong>$Producer &amp; $Director</strong>: Passed to credits_table.php</li>
	</ul>

	<h3>Email on:</h3>

	<p>The client wanted to have a mechanism whereby a clip link could be emailed to someone. This uses a mailto: link along with the variables we used previously and and additional piece of <span class="caps">PHP</span>.</p>

	<p><img src="http://farm4.static.flickr.com/3639/3329121519_a72f305b60_o.png" alt="email_on" border="0" width="512" height="131" /></p>

	<ul>
		<li><strong>echo curPageURL();</strong>: We&#8217;re specifying a link in the email and this inserts the current <span class="caps">URL</span> into the body of the email. This has some drawbacks. The viewers email client needs to be set as the default in their browser. The format can also vary depending on what email client you use.</li>
	</ul>

	<p>GMail:<br />
<img src="http://farm4.static.flickr.com/3554/3329967022_5e4b3266f9_o.png" alt="email_on_gmail" border="0" width="456" height="32" /></p>

	<p>Thunderbird:<br />
<img src="http://farm4.static.flickr.com/3372/3329967062_fbffff5e31_o.png" alt="email_on_thunderbird" border="0" width="260" height="61" /></p>

	<h3>The ugly bit</h3>

	<p>That&#8217;s about the gist of it. Once I had one page working, it was simply a case of creating a page for each clip. Not the most ideal situation but it was certainly made faster by changing a few key variables at the top of the page. Better this than sifting through an entire page and changing links to filenames. Not being a &#8216;complete&#8217; php man either, I&#8217;m sure there are a dozen better ways to handle this kind of site.</p>]]>
</description>
      <dc:subject>Design, Web, Web development</dc:subject>
      <dc:date>2009-03-05T02:39:00+10:00</dc:date>
    </item>

    <item>
      <title>The Big Book series of travel planners</title>
      <link>http://www.smd.net.au/journal/detail/the_big_book/</link>
      <guid>http://www.smd.net.au/journal/detail/the_big_book/</guid>
<description>
        <![CDATA[	<p>A while back, in collaboration with <a href="http://www.shopfrondesign.com">shopfrontdesign</a>, two designers produced nearly 800 designed pages for a series of travel planners called the Big Books. A lot of time has past since producing these publications and now would be a good time to kick back and talk about some of the technology used to produce them.</p>

	<h2>InDesign all the way</h2>

	<p>When InDesign came along a few years ago I was a seasoned QuarkXPress (or Quirk) user. Versions 1 and 2 of ID were a bit slow, crashed a fair bit, and were generally difficult to use. But the potential was really there to give Qxp a run for it&#8217;s money. Then the Adobe Creative Suite came out with InDesign, Photoshop, Illustrator and Acrobat Pro for less than half of what Quark cost. At last the ridiculously priced, bug-laden and un-progressive Quark had a real competitor. And what a competitor.</p>

	<p>The feature list and capabilities of InDesign is long as it&#8217;s extensibility. But it was after using an early demo of 65-bit&#8217;s <a href="http://www.65bit.com">EasyCatalog</a> that sold me on using it together with InDesign for the Big Book publications.</p>

	<h2>EasyCatalog (EC)</h2>

	<p>EasyCatalog is a plugin that works within InDesign. If this product didn&#8217;t exist then the layout of 500 complex text and image advertisements would have taken months instead of weeks and taken many more layout artists to complete.</p>

	<p><em>This is what one looks like.</em></p>

	<p><img src="http://www.smd.net.au/images/journal/col_ad.png" width="250" height="367" /></p>

	<p>Now imagine setting 500 of these manually with the information only available to you via emails or a spreadsheet. With all those snippets of information you&#8217;d then create each ad by:</p>

	<ul>
		<li>copy/paste each bit of info into the layout;</li>
		<li>be able to find it and make changes in an instant across four publications;</li>
		<li>send a finished <span class="caps">PDF</span> to each advertiser for approval;</li>
		<li>track each one through the production cycle.</li>
	</ul>

	<p>A more dynamic solution had to be found. Enter EasyCatalog. The concept behind EC is that it enables you a great degree of automation when setting repetitive data. It&#8217;s centered around having a template container for that data to flow into. The this case there are template fields for each part of the advertisement &#8211; text and images.</p>

	<p>Another strength to EC is its ability to access a database like MySQL using a simple query. This query returns a spreadsheet-like grid of information right into the EC panel within InDesign. From there it&#8217;s a simple case of choosing an ad template to use (there were different ones depending on the size of the ad paid for) and then dragging the entry into the layout. </p>

	<p><em>The basic column ad production process.</em></p>

	<p><img src="http://www.smd.net.au/images/journal/col_ad_process.png" width="260" height="388" /></p>

	<h2>Updates</h2>

	<p>At the draft stage, changes to each ad was a real possibility. EC handles this situation extremely well. By re-running the query it visually highlights any data that has been changed. It&#8217;s then possible to simply update either every amended entry with new data or do it selectively. I can&#8217;t tell you the amount of time saved doing changes this way.</p>

	<p>This is just the tip of the iceberg with what EasyCatalog can do and it&#8217;s well worth the price of admission in the time and carpal tunnel it saves you.</p>]]>
</description>
      <dc:subject>Design, Print, Software, InDesign</dc:subject>
      <dc:date>2007-05-02T23:25:00+10:00</dc:date>
    </item>

    <item>
      <title>Foreign characters in sIFR</title>
      <link>http://www.smd.net.au/journal/detail/foreign_characters_in_sifr/</link>
      <guid>http://www.smd.net.au/journal/detail/foreign_characters_in_sifr/</guid>
<description>
        <![CDATA[	<p>If you have a situation where you need to use foreign characters with <a href="http://wiki.novemberborn.net/sifr/">sIFR</a> in your web pages, here&#8217;s a tip to get them to display properly. (This assumes that the font/s you want to use actually have these characters. Check in with your Character Map in Windows or the <a href="http://whatdoiknow.org/archives/000485.shtml">Character Palette</a> for <span class="caps">OSX</span>.)</p>

	<p>Edit the Flash file that comes with sIFR: double click then click again to select the text box. In the Properties panel click on &#8216;Character&#8230;&#8221; and change the selection to &#8216;All characters&#8217;. Export your swf.</p>

	<p>Head over to <a href="http://www.tony-franks.co.uk/UTF-8.htm">Tony Franks&#8217; website</a> and pick which character you need to display e.g. an o&#8217;umlaut &#214; &#246; which is: &amp;&#35;214; and &amp;&#35;246;.</p>

	<p>Then edit your html file inserting the codes for the characters where you need them to be. If all goes well you should see your foreign characters.</p>]]>
</description>
      <dc:subject>Web development</dc:subject>
      <dc:date>2007-02-15T00:22:00+10:00</dc:date>
    </item>

    <item>
      <title>Blender fluids to LightWave: a workflow</title>
      <link>http://www.smd.net.au/journal/detail/blender_fluids_to_lightwave_a_workflow/</link>
      <guid>http://www.smd.net.au/journal/detail/blender_fluids_to_lightwave_a_workflow/</guid>
<description>
        <![CDATA[	<p>With the release of <a href="http://www.blender.org/cms/Home.2.0.html">blender 3d 2.4</a> there are some interesting fluid simulation tools. I really know very little about either blender or fluids but I wondered how to go about getting the similation results into Lightwave for rendering or integration into a current scene. Why? RealFlow is US$1200 and blender is free. I&#8217;m not saying blender is any competition but for some for simple stuff it could probably do the job.</p>

	<p>Check out the <a href="http://www.spinquad.com/forums/showthread.php?t=10042&amp;page=1&amp;pp=40">SpinQuad forum</a> for more details (registration is required). Hooray for the other folk on there that have taken this workflow and used it to create some great work.</p>

	<h3>(Posted here for posterity)</h3>

	<p>In the current release of blender 2.4 there are some interesting fluid simulation tools. I really know very little about either blender or fluids but I wondered how to go about getting the similation results into Lightwave for rendering or integration into a current scene. Why? RealFlow is US$1200 and blender is free. I&#8217;m not saying blender is any competition but for some for simple stuff it could probably do the job.</p>

	<p>So for anyone at all interested here is (in a very basic way) how I went about it.</p>

	<p>1. Whip up your simulation in blender 2.4 (RC1 is the current release at time of writing this.). Tutorial here: <a href="http://mediawiki.blender.org/index.p...uid_Simulation">http://mediawiki.blender.org/index.p&#8230;uid_Simulation</a></p>

	<p>2. Export your simulation to multiple .OBJ files. You&#8217;ll need to duplicate and modify an existing export script. A big thanks to elysiun forum guru cambo for this. See here: <a href="http://www.elysiun.com/forum/viewtopic.php?t=56824">http://www.elysiun.com/forum/viewtopic.php?t=56824</a></p>

	<p>3. Run your script which will export however many frames in your animation there are.</p>

	<p>4. Convert all your <span class="caps">OBJ</span> files to <span class="caps">LWO</span>. You might also want to rotate your <span class="caps">OBJ</span> files -90 degrees. A great Modeler LScript (Batch Edit 2 (MD) can handle this: <a href="http://www.interialabs.de/lw/lscript/index.html">http://www.interialabs.de/lw/lscript/index.html</a></p>

	<p>5. Create a object replacement list in the following format eg:</p>

	<p>#LW Object Replacement List<br />
0<br />
T:\fluids\sim2\anim_obj_0000.lwo<br />
1<br />
T:\fluids\sim2\anim_obj_0001.lwo</p>

	<p>There are a few utils that can do the basic listing.<br />
Using a <span class="caps">DOS</span> prompt: dir *.lwo /on &gt;dir.txt<br />
Directory Lister: <a href="http://freeware.prv.pl/">http://freeware.prv.pl/</a><br />
To get the numbering sequence you could use a spreadsheet.</p>

	<p>6. Run LW Layout and load the first object. You might want to parent it to a null so you can move the whole simulation around. Go to Object / Properties / Object Replacement. Select object list and go find the list you created previously.</p>

	<p>*There&#8217;s a ridiculous LW bug in that when you scrub through the scene the objects in your list won&#8217;t appear. It&#8217;s only when you create a preview that you&#8217;ll see things happening. Hence, <span class="caps">FPRIME</span> IS OF NO <span class="caps">USE</span> <span class="caps">HERE</span>.</p>

	<p>It then occured to me that to edit the surface settings for, in my case, 250 objects would be quite boring. Having loaded the first object, get the surface settings right then save a .srf file. Get a util from NextLimit called Surface Replacer here: <a href="http://www.nextlimit.com/phpBB2/view...rface+replacer">http://www.nextlimit.com/phpBB2/view&#8230;rface+replacer</a></p>

	<p>This util lets your apply a surface to multiple objects. But it will not correctly overwrite your .lwo files so it&#8217;s best to send the output to a temporary directory and copy them back over your source files.</p>

	<p>Go back to layout and Make Preview. You should see your murky creation come to life.</p>

	<p>That&#8217;s about it. Have fun.</p>]]>
</description>
      <dc:subject>Design, 3D</dc:subject>
      <dc:date>2006-08-05T23:16:00+10:00</dc:date>
    </item>

    <item>
      <title>Are you local? (XAMMP, OSX &amp;amp; MAMP)</title>
      <link>http://www.smd.net.au/journal/detail/are_you_local/</link>
      <guid>http://www.smd.net.au/journal/detail/are_you_local/</guid>
<description>
        <![CDATA[	<p><cite>(Note: The following is a basic guide. It worked for us but please don&#8217;t hold us responsible if it doesn&#8217;t work for you. There are many pc configs and/or issues that might prevent you getting the same results. Please be aware that there are security considerations when tinkering with Apache, especially if you&#8217;re system is open to the internet.)</cite></p>

	<p>For the developer-challenged designer out there, here are few steps to help you setup a local Apache, MySQL &amp; <span class="caps">PHP</span> environment to brew your websites on. Even if you only develop in <span class="caps">HTML</span> this will be of use.</p>

	<h2>Why?</h2>

	<p>Simple. You can have a fully working version of a website before you even think about using your <span class="caps">FTP</span> client to transfer files to a live (or client approval) site. </p>

	<p>Setting up all these programs can sound a little daunting so here&#8217;s what we use and it&#8217;s all free.</p>

	<ul>
		<li><a href="http://www.apachefriends.org/en/xampp.html"><span class="caps">XAMPP</span></a>. It&#8217;s a &#8216;packaged&#8217; collection of the above apps and easy to install. We&#8217;ve found that matching the version numbers to your live hosting setup is the way to go to avoid any compatibility problems. Back &#8216;issues&#8217; can be found <a href="http://sourceforge.net/project/showfiles.php?group_id=61776">here</a>. There are other <span class="caps">LAMP</span>-style packages out there too. <a href="http://www.uniformserver.com">The Uniform Server</a> is another popular one.</li>
	</ul>

	<p>Once you have all that installed then great. But you&#8217;re most likely working on more than one website at a time and you need to be able to tell Apache &#8211; via your web browser &#8211; that when you type <strong>http://dev.mysite.com</strong> that it looks for those files in a specific directory.</p>

	<p>This page tells you what you need to do: <a href="http://www.apptools.com/phptools/virtualhost.php">Setting Up A Virtual Host in Apache.</a><br />
Your days of local multi-website-developing are now upon you.</p>

	<h2>Tips</h2>

	<h3>Why the &#8216;dev&#8217; and not &#8216;www&#8217;?</h3>

	<p>It helps to reference your local websites (in both the Windows hosts file and in the Apache Virtualhost listing) logically. Eg: dev.website.com makes for easy differentiation between your local and live site. When you&#8217;ve uploaded your site to your webserver, simple replace the &#8216;dev&#8217; reference with &#8216;www&#8217;.</p>

	<h3>Update (Feb 2nd 2007)</h3>

	<h2><span class="caps">OSX</span> with <span class="caps">MAMP</span></h2>

	<p>(<a href="http://mamp.info/en/index.php"><span class="caps">MAMP</span> Pro</a> has now been released. This is an add-on to the free <span class="caps">MAMP</span> download that will let you configure virtualhosts a lot easier. Additionally it lets you open your system to clients by using a a dynamic dns service.)</p>

	<p>We recently got ourselves a Mac for website testing purposes. After some looking around on the net for opinions on <span class="caps">OSX</span> and it&#8217;s native web serving abilities, we thought it might be a good technical exercise and see how easy it would be in getting an internal <span class="caps">OSX</span> webserver happening.</p>

	<p>The first thing we did was download <a href="http://www.mamp.info/en/home/"><span class="caps">MAMP</span></a> (which is similar to <span class="caps">XAMMP</span> mentioned here previously). Out of the box they&#8217;re similar setups (Apache, MySQL and <span class="caps">PHP</span>).</p>

	<p>Next we setup some virtualhosts so that we could have as many sites in development as we wanted. (We could go into excrutiating detail and delve into the nuances of the Terminal window but we just don&#8217;t know anything about it. We&#8217;re designers and not programmers :) )</p>

	<p>There&#8217;s a system utility called NetInfoManager in the Utilities folder. If you look in the &#8216;machines&#8217; item you&#8217;ll see in the pane next to it an entry called &#8216;localhost&#8217;. Click on it and hit &#8216;duplicate&#8217;. Double-click in the bottom pane on the &#8216;name&#8217; entry and rename it to whatever your local site is called eg dev.yoursite.com. Repeat this step for any other sites you may have.</p>

	<p>Then over to <span class="caps">MAMP</span>. We want to tell Apache that we going to be working on more than one site. Enter Virtualhosts. Go to the <span class="caps">MAMP</span> directory: Applications/MAMP/conf/apache/ and open a text file called &#8216;httpd.conf&#8217;. Scroll right to the bottom and you&#8217;ll see a lonely  line: &#8216;#NameVirtualHost&#8217;. Change it to: &#8216;NameVirtualHost *&#8217; and underneath add the entry to enable your Virtualhost.</p>

<pre>
&lt;VirtualHost&gt;
DocumentRoot &quot;Applications/MAMP/htdocs/dev.yoursite.com&quot;
ServerName dev.yoursite.com
&lt;/VirtualHost&gt;
</pre>

	<p>In your htdocs directory create a folder called &#8216;dev.yoursite.com&#8217;, add your html or php files and then head over to your favourite browser (which should be Firefox and if it aint it should be) where you can now enter: &#8216;http://dev.yoursite.com:8888&#8217;. (The 8888 is a port number and is supposed to be more secure.)</p>

	<p>So there you have it. Easy as.</p>

	<h3>But what if I&#8217;m on a mixed network of Macs and PC&#8217;s. How do I see the site/s?</h3>

	<p>Once again it depends on your setup. What worked for us was having a router that has Port Forwarding. We set it up to look for any http request on a particular IP address. Internally the Mac could be on 192.168.1.50.</p>

	<p>Next we edited our Windows &#8216;hosts&#8217; file (located in your Windows directory then system32\drives\etc\) and added the following entry:</p>

<pre>
192.168.1.50       dev.yoursite.com
</pre>

	<p>Now if you go to Firefox again and type: <a href="http://dev.yoursite.com:8888">http://dev.yoursite.com:8888</a> you should see your site being served of your Mac.</p>

	<p><cite>Note: We had some firewall issues and had to tinker about a little to get it to work properly from our PC. All good firewalls have port blocking.</cite></p>

	<p>If you want to keep all your htdocs in one place, like a file server, you can tell <span class="caps">MAMP</span> to look elsewhere for them. Go back into the Apache httpd.conf file and search for &#8216;DocumentRoot&#8217;. There will be a line called: DocumentRoot &#8216;/Applications/MAMP/htdocs&#8217;. Change it to where ever your files are located. Change your VirtualHost settings to reflect this change also.</p>

	<h3>Working locally with <span class="caps">VMW</span>are Fusion</h3>

	<p>So what if you want to access your <span class="caps">MAMP</span> setup from within <span class="caps">VMW</span>are Fusion (or Parallels)? Simple. </p>

	<p>Edit your Windows hosts file (located in your Windows directory then system32\drives\etc\) and add the IP of your Mac followed by the site name. E.g.:</p>

<pre>
192.168.1.50       dev.yoursite.com
</pre>

]]>
</description>
      <dc:subject>Web development</dc:subject>
      <dc:date>2006-07-23T21:14:00+10:00</dc:date>
    </item>

    
    </channel>
</rss>