<?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>Xiaan Design: Blog</title>
	<atom:link href="http://xiaan.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://xiaan.com/blog</link>
	<description>UX design and RIA development in the post-Web 2.0 world.</description>
	<lastBuildDate>Sun, 17 Aug 2008 17:44:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Usability: Denver Post Electronic Edition, or Why online newspapers still suck.</title>
		<link>http://xiaan.com/blog/2007/08/31/usability-denver-post-electronic-edition/</link>
		<comments>http://xiaan.com/blog/2007/08/31/usability-denver-post-electronic-edition/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 16:25:58 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/08/31/usability-denver-post-electronic-edition/</guid>
		<description><![CDATA[I&#8217;ve never expected much from newspaper sites; their design has been years behind the curve, blanketed with ads, and transitioned poorly from their print equivalents. This morning I ventured to the Denver Post web site, and saw they had a free preview of their online edition.

Using Firefox 2.0.0.6, I was presented with the following screen:

Was [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never expected much from newspaper sites; their design has been years behind the curve, blanketed with ads, and transitioned poorly from their print equivalents. This morning I ventured to the Denver Post web site, and saw they had a <a href="http://www.post-newscustomercare.com/electronicedition/flash/DP/index.html">free preview of their online edition</a>.<br />
<span id="more-21"></span><br />
Using Firefox 2.0.0.6, I was presented with the following screen:</p>
<p><img src="http://xiaan.com/blog/wp-content/uploads/2007/08/denverposterror.png" alt="Denver Post Firefox Error" /></p>
<p>Was the entire application broken, or did it have something to do with Firefox? I opened the page in IE7 and was presented with the application as intended; the wonderful folks at <a href="http://www.olivesoftware.com/">Olive Software</a> made a number of mistakes:</p>
<ul>
<li>They did not take into account that tech-savvy readers might not be using IE7. Since there was no specific message that only IE7 was supported, it appears they didn&#8217;t even do testing on alternate browsers. Bad developers, bad QA.</li>
<li>They allowed a cryptic error message to be displayed to the user, which provides no further information or guidance to correct the error. They even managed to misspell arcive(sic).</li>
<li>The page includes a reload-on-resize script for Netscape 4!?! With what kind of antiquated code base are they developing web applications?</li>
</ul>
<p>It&#8217;s disappointing to see poor implementations of technology such as this targeted at a general audience. Shame on you Olive Software; enterprise software should be better than this. As a user, since I had such a poor experience with the free demonstration of the technology, is it any wonder I didn&#8217;t choose to pay for the full version?</p>
<h3>Further Reading</h3>
<ul>
<li><a href="http://www.useit.com/alertbox/20010624.html">Error Message Guidelines</a>, Jakob Nielsen&#8217;s Alertbox for June 24, 2001.</li>
<li><a href="http://www.tpmcafe.com/blog/cscs/2007/aug/16/local_news_sites_suck">Local News Sites Suck</a>, a rant on the state of online newspapers in general.</li>
<li><a href="http://www.wired.com/wired/archive/2.09/news.suck.html">Online or Not, Newspapers Suck</a>, an old article from Wired that still has relevance.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/08/31/usability-denver-post-electronic-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript: Fonts for the HTML5 canvas tag.</title>
		<link>http://xiaan.com/blog/2007/08/16/javascript-fonts-for-the-tag/</link>
		<comments>http://xiaan.com/blog/2007/08/16/javascript-fonts-for-the-tag/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 20:05:48 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/08/16/javascript-fonts-for-the-tag/</guid>
		<description><![CDATA[I&#8217;m starting to play with some infographics for an enterprise dashboard application for which the HTML5 canvas tag is looking to be the preferred solution (View the working draft specification at the WHATWG site). Since text embedding is not a feature of the canvas tag, it may be hacked in with some fancy JavaScript and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m starting to play with some infographics for an enterprise dashboard application for which the HTML5 <code>canvas</code> tag is looking to be the preferred solution (View the working draft specification at the <a href="http://www.whatwg.org/specs/web-apps/current-work/#the-canvas">WHATWG site</a>). Since text embedding is not a feature of the <code>canvas</code> tag, it may be hacked in with some fancy JavaScript and a PNG or GIF image. I found <a href="http://www.random.abrahamjoffe.com.au/public/JavaScripts/canvas/fonts.htm">a nifty workaround by Benjamin Joffe</a> that uses an inline encoded representation of the binary PNG data, but it was missing a few things, such as PNG alpha support.<br />
<span id="more-13"></span><br />
To create a usable implementation for yourself:</p>
<ol>
<li>Have a <a href="http://www.random.abrahamjoffe.com.au/public/JavaScripts/canvas/fonts.htm">look at the demo</a> to see what&#8217;s involved and grab the JavaScript source which is embedded into the page.</li>
<li>Visit <a href="http://www.random.abrahamjoffe.com.au/public/JavaScripts/canvas/fontGenerator.htm">Benjamin Joffe&#8217;s Canvas Font Generator</a> to generate other fonts, if you wish. A few notes on this process:
<ul>
<li>Make sure ClearType is disabled before you do a screen grab, especially for smaller font sizes which should not be anti-aliased.</li>
<li>As a nice touch, before you save the PNG from your favorite image editor, make the background transparent so you can place your text on backgrounds other than white. It also allows you to place rows of text near each other without background pixels obscuring your text.</li>
<li>You may also consider saving PNGs for colors other than black; I exported both black and white images to lay over light and dark backgrounds, respectively.</li>
</ul>
</li>
<li>Use <a href="http://www.scalora.org/projects/uriencoder/">Mike Scalora&#8217;s URI image encoder</a> to encode the PNG you created in the previous step and replace the appropriate string assignment in your JavaScript.</li>
</ol>
<p><a href="/blog/code/canvas_fonts.html">See a demo</a> of what I was able to achieve in a short time and to grab the source for Tahoma 8pt in black or white, with a transparent background. You may also be interested in a <a href="http://core.federated.com/~jim/canvastext/">vector implementation by Jim Studt</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/08/16/javascript-fonts-for-the-tag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows XP: Nag, nag, nag, please restart.</title>
		<link>http://xiaan.com/blog/2007/08/16/windows-xp-nag-nag-nag-please-restart/</link>
		<comments>http://xiaan.com/blog/2007/08/16/windows-xp-nag-nag-nag-please-restart/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 15:05:42 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Windows XP]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/08/16/windows-xp-nag-nag-nag-please-restart/</guid>
		<description><![CDATA[I&#8217;m one of those people that restarts my Windows XP machines carefully. Very carefully. As in once every two weeks or less, if I can help it. So when I&#8217;m prompted to restart after installing the latest Windows updates, I understand that I&#8217;ve just patched a security risk and that restarting as soon as possible [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m one of those people that restarts my Windows XP machines carefully. Very carefully. As in once every two weeks or less, if I can help it. So when I&#8217;m prompted to restart after installing the latest Windows updates, I understand that I&#8217;ve just patched a security risk and that restarting as soon as possible is in my best interest, but I&#8217;m busy now, and don&#8217;t appreciate the constant nagging to restart. Lifehacker to the rescue!</p>
<p><a href="http://lifehacker.com/software/windows/disable-windows-update-restart-nag-289998.php"><span id="more-12"></span>Here&#8217;s a handy tip</a> to disable the update reminder, by stopping the service responsible for the update. Just run <code>sc stop wuauserv</code> at a command prompt and prompts will be disabled until the next restart.</p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/08/16/windows-xp-nag-nag-nag-please-restart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal 4.7: Hacking the Upload Module</title>
		<link>http://xiaan.com/blog/2007/06/29/drupal-hacking-the-upload-module/</link>
		<comments>http://xiaan.com/blog/2007/06/29/drupal-hacking-the-upload-module/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 17:42:18 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/06/29/drupal-hacking-the-upload-module/</guid>
		<description><![CDATA[I&#8217;ve chosen Drupal for a web site project for a long-time client. We&#8217;re slogging our way through hundreds of pages of content, and have decided that we want to display attachment uploads by category, with little to no impact to the content manager uploading the attachments. 
The solution/hack involved a customization to the Upload module, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve chosen Drupal for a web site project for a long-time client. We&#8217;re slogging our way through hundreds of pages of content, and have decided that we want to display attachment uploads by category, with little to no impact to the content manager uploading the attachments. <span id="more-9"></span></p>
<p>The solution/hack involved a customization to the Upload module, replacing the <code>theme_upload_attachments()</code> function with the customized version below. The idea was to have the content manager add a prefix to the filenames that would identify the category, and the software would take care of the rest.</p>
<p>Some notes:</p>
<ul>
<li>[+] It can&#8217;t get much easier than adding a prefix to a file before you upload it to the web site.</li>
<li>[+] FTP file listings are now sorted by category in the Drupal <code>files/uploads</code> folder.</li>
<li>[-] If the content manager makes a mistake in naming a file, she has to remove the upload, rename the file on her file system, and re-upload.</li>
</ul>
<p>Here&#8217;s the modified function for Drupal 4.7, use at your own risk. At some time before we launch the site I&#8217;ll upgrade to Drupal 5.1, and post a modified version of the function for 5.1.</p>
<pre class="brush: php">
/**
* Displays file attachments in table
*/
function theme_upload_attachments($files) {
  $header = array(t(&#039;Name&#039;), t(&#039;Size&#039;));
  $spec_rows = array();
  $dsgn_rows = array();
  $inst_rows = array();
  $case_rows = array();
  $rows = array();
  $str = array();

  foreach ($files as $file) {
    if ($file-&amp;amp;gt;list) {
      $href = $file-&amp;amp;gt;fid ? file_create_url($file-&amp;amp;gt;filepath) : url(file_create_filename($file-&amp;amp;gt;filename, file_create_path()));
      $text = $file-&amp;amp;gt;description ? $file-&amp;amp;gt;description : $file-&amp;amp;gt;filename;

      if (strpos($file-&amp;amp;gt;filepath,&#039;spec_&#039;) != false) {
        $spec_rows[] = array(l($text, $href), format_size($file-&amp;amp;gt;filesize));
      } elseif (strpos($file-&amp;amp;gt;filepath,&#039;dsgn_&#039;) != false) {
        $dsgn_rows[] = array(l($text, $href), format_size($file-&amp;amp;gt;filesize));
      } elseif (strpos($file-&amp;amp;gt;filepath,&#039;inst_&#039;) != false) {
        $inst_rows[] = array(l($text, $href), format_size($file-&amp;amp;gt;filesize));
      } elseif (strpos($file-&amp;amp;gt;filepath,&#039;case_&#039;) != false) {
        $case_rows[] = array(l($text, $href), format_size($file-&amp;amp;gt;filesize));
      } else {
        $rows[] = array(l($text, $href), format_size($file-&amp;amp;gt;filesize));
      }
    }
  }

  if (count($spec_rows)) {
    $str[] = &#039;&amp;amp;lt;h2&amp;amp;gt;Product Specifications&amp;amp;lt;/h2&amp;amp;gt;&#039;;
    $str[] = theme(&#039;table&#039;, $header, $spec_rows, array(&#039;id&#039; =&amp;amp;gt; &#039;attachments&#039;));
  }
  if (count($dsgn_rows)) {
    $str[] = &#039;&amp;amp;lt;h2&amp;amp;gt;Design Information&amp;amp;lt;/h2&amp;amp;gt;&#039;;
    $str[] = theme(&#039;table&#039;, $header, $dsgn_rows, array(&#039;id&#039; =&amp;amp;gt; &#039;attachments&#039;));
  }
  if (count($inst_rows)) {
    $str[] = &#039;&amp;amp;lt;h2&amp;amp;gt;Installation Guides&amp;amp;lt;/h2&amp;amp;gt;&#039;;
    $str[] = theme(&#039;table&#039;, $header, $inst_rows, array(&#039;id&#039; =&amp;amp;gt; &#039;attachments&#039;));
  }
  if (count($case_rows)) {
    $str[] = &#039;&amp;amp;lt;h2&amp;amp;gt;Case Studies&amp;amp;lt;/h2&amp;amp;gt;&#039;;
    $str[] = theme(&#039;table&#039;, $header, $case_rows, array(&#039;id&#039; =&amp;amp;gt; &#039;attachments&#039;));
  }
  if (count($rows)) {
    $str[] = &#039;&amp;amp;lt;h2&amp;amp;gt;Other Downloads&amp;amp;lt;/h2&amp;amp;gt;&#039;;
    $str[] = theme(&#039;table&#039;, $header, $rows, array(&#039;id&#039; =&amp;amp;gt; &#039;attachments&#039;));
  }
  return implode(&#039;&#039;,$str);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/29/drupal-hacking-the-upload-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Finally Upgraded to Firefox 2</title>
		<link>http://xiaan.com/blog/2007/06/28/i-finally-upgraded-to-firefox-2/</link>
		<comments>http://xiaan.com/blog/2007/06/28/i-finally-upgraded-to-firefox-2/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 21:51:30 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/06/28/i-finally-upgraded-to-firefox-2/</guid>
		<description><![CDATA[Today I finally upgraded to Firefox 2.0.4 from Firefox 1.5 for my work machine, which was the last one still running FF1.5. Why did I wait so long? 
A few reasons:

 For the most part, Firefox 1.5 just worked.
Every plugin I liked was compatible with 1.5.
I heard a lot of grumbling about speed and other [...]]]></description>
			<content:encoded><![CDATA[<p>Today I finally upgraded to Firefox 2.0.4 from Firefox 1.5 for my work machine, which was the last one still running FF1.5. Why did I wait so long? <span id="more-7"></span></p>
<p>A few reasons:</p>
<ul>
<li> For the most part, Firefox 1.5 just worked.</li>
<li>Every plugin I liked was compatible with 1.5.</li>
<li>I heard a lot of grumbling about speed and other issues in early betas and releases of Firefox 2.0.</li>
<li>Bookmark Synchronizer, one of my favorite Firefox extensions needs some tweaks to allow installation on Firefox 2.0.</li>
</ul>
<p>Why did I finally take the plunge?</p>
<ul>
<li>Mozilla <a href="http://developer.mozilla.org/devnews/index.php/2007/05/30/firefox-2004-and-firefox-15012-security-and-stability-update/">announced</a> that Firefox 1.5.12 would be the last release in the 1.5 series, so no more security updates.</li>
<li>I wanted to install Search Marker, a new plugin that requires Firefox 2.0.</li>
</ul>
<p>Some obligatory tweaks to Firefox 2.0 to make it seem more like Firefox 1.5, accessible from the about:config URI. I found a lot of them over at <a href="http://lifehacker.com/software/firefox-2/geek-to-live-top-firefox-2-config-tweaks-209941.php">Lifehacker</a>:</p>
<ul>
<li> Changed browser.tabs.tabMinWidth from 100 to 25. I like to open many tabs at a time, from an average of 8 to a reasonable maximum of 30. I recognize the favicons for most of my favorite web sites, so it&#8217;s not a problem to identify them by icon alone.</li>
<li>Changed browser.tabs.closeButtons from 1 to 3. Again, since I have so many tabs open, the default of an [X] close button on each tab is just distracting. I&#8217;ll use the Ctrl-W keyboard combination a lot more than any clicking to close a window.</li>
<li>Changed network.prefetch-next from true to false. I know where I&#8217;m surfing and don&#8217;t need you to crawl the web for me, thank you very much.</li>
<li>Changed browser.cache.memory.capacity from 22000 to 15000. This reduces the typical memory footprint of Firefox to be something more reasonable.</li>
<li>Changed browser.search.openintab from false to true. This makes searches from the toolbar open in a new tab instead of the current one.</li>
</ul>
<p>I&#8217;ll update this list as I think of it. In the meantime, <a href="http://kb.mozillazine.org/Firefox_:_FAQs_:_About:config_Entries">visit the MozillaZine Wiki</a> for a complete description of all configuration parameters.</p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/28/i-finally-upgraded-to-firefox-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Add-on: Download Statusbar</title>
		<link>http://xiaan.com/blog/2007/06/28/firefox-add-on-download-statusbar/</link>
		<comments>http://xiaan.com/blog/2007/06/28/firefox-add-on-download-statusbar/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 17:05:52 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/06/28/firefox-add-on-download-statusbar/</guid>
		<description><![CDATA[Once I got the Download Statusbar plugin installed on all my instances of Firefox, managing downloads with the normal download manager just seemed slow and antiquated. I love how I can customize which files are automatically removed from the statusbar after a few seconds. Just another example of unobtrusively extending the user experience without having [...]]]></description>
			<content:encoded><![CDATA[<p>Once I got the <a href="http://downloadstatusbar.mozdev.org/">Download Statusbar</a> plugin installed on all my instances of Firefox, managing downloads with the normal download manager just seemed slow and antiquated. I love how I can customize which files are automatically removed from the statusbar after a few seconds. Just another example of unobtrusively extending the user experience without having to manage another window.</p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/28/firefox-add-on-download-statusbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Add-on: Search Marker</title>
		<link>http://xiaan.com/blog/2007/06/28/firefox-add-on-search-marker/</link>
		<comments>http://xiaan.com/blog/2007/06/28/firefox-add-on-search-marker/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 16:00:13 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#8217;m a big fan of Firefox for the large number of plugins and add-ons that are available to enhance my browsing experience. New to me today was Search Marker, a nifty way to indicate search term location and frequency in a web page.
My thoughts so far:

It only works with Firefox 2.0 or higher; up until [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big fan of <a href="http://www.getfirefox.com/">Firefox</a> for the large number of plugins and add-ons that are available to enhance my browsing experience. New to me today was <a href="https://addons.mozilla.org/en-US/firefox/addon/1823">Search Marker</a>, a nifty way to indicate search term location and frequency in a web page.<span id="more-1"></span></p>
<p>My thoughts so far:</p>
<ul>
<li>It only works with Firefox 2.0 or higher; up until today I still used Firefox 1.5 at work.</li>
<li>This feature only works when &#8220;Highlight all&#8221; is checked from the find pane. It would be nice to have this as a configurable option.</li>
<li>I&#8217;ve always been used to clicking on search markers to navigate to the line in the text where the search term occurs. Would be a nice improvement.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/28/firefox-add-on-search-marker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portfolio: Nilex Construction</title>
		<link>http://xiaan.com/blog/2007/06/27/portfolio-nilex-construction/</link>
		<comments>http://xiaan.com/blog/2007/06/27/portfolio-nilex-construction/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 21:35:21 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/06/29/portfolio-nilex-construction/</guid>
		<description><![CDATA[Nilex Construction is a world leader in specialty construction; they came to Xiaan Design requesting a web site redesign that reflected their position in the industry. Xiaan Design created a vibrant, photo-rich site with Joomla 1.0 that educates engineers about prefabricated vertical wick drains and more. Be sure to check out the project map to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nilexconstruction.com/">Nilex Construction</a> is a world leader in specialty construction; they came to Xiaan Design requesting a web site redesign that reflected their position in the industry. Xiaan Design created a vibrant, photo-rich site with <a href="http://www.joomla.org/">Joomla 1.0</a> that educates engineers about prefabricated vertical wick drains and more. Be sure to <a href="http://www.nilexconstruction.com/component/option,com_google_maps/category,17/zoom,4/center,1/open,0/Itemid,46/">check out the project map</a> to see how Google Maps were integrated into the site.
</p>
<p><span id="more-11"></span></p>
<p><img src="/blog/images/nilexcon.png" border="1" height="410" width="600" /></p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/27/portfolio-nilex-construction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portfolio: Loch Gallery</title>
		<link>http://xiaan.com/blog/2007/06/27/loch-gallery/</link>
		<comments>http://xiaan.com/blog/2007/06/27/loch-gallery/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 18:48:30 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/06/28/loch-gallery/</guid>
		<description><![CDATA[The Loch Gallery web site is a prime example of how Open Source Software (OSS) may be leveraged to create a business advantage for a relatively small company. Based on Joomla 1.0 and extended heavily with custom components, the Loch Gallery web site serves thousands of visitors each month who are interested in purchasing Canadian [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.lochgallery.com/">Loch Gallery web site</a> is a prime example of how Open Source Software (OSS) may be leveraged to create a business advantage for a relatively small company. Based on <a href="http://joomla.org/">Joomla 1.0</a> and extended heavily with custom components, the Loch Gallery web site serves thousands of visitors each month who are interested in purchasing Canadian contemporary art from one of Canada&#8217;s finest art dealers.<span id="more-4"></span></p>
<p><a href="http://www.lochgallery.com/" title="Visit the Loch Gallery web site."><img src="/blog/images/loch_gallery.png" border="1" height="412" width="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/27/loch-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portfolio: Alive At 25</title>
		<link>http://xiaan.com/blog/2007/06/25/alive-at-25/</link>
		<comments>http://xiaan.com/blog/2007/06/25/alive-at-25/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 19:22:25 +0000</pubDate>
		<dc:creator>Christiaan van Woudenberg</dc:creator>
				<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://xiaan.com/blog/index.php/2007/06/28/alive-at-25/</guid>
		<description><![CDATA[Xiaan Design partnered with a local Denver web design firm to completely redesign and redeploy a courseware web application for Alive At 25, a not-for-profit organization that provides a comprehensive drunk-driving awareness and education program for teens.
Xiaan Design created a comprehensive web-based courseware application based on Joomla 1.0, including:

A complete data migration strategy and transformation [...]]]></description>
			<content:encoded><![CDATA[<p>Xiaan Design partnered with a local Denver web design firm to completely redesign and redeploy a courseware web application for <a href="http://www.aliveat25.us/">Alive At 25</a>, a not-for-profit organization that provides a comprehensive drunk-driving awareness and education program for teens.<span id="more-5"></span></p>
<p>Xiaan Design created a comprehensive web-based courseware application based on <a href="http://joomla.org/">Joomla 1.0</a>, including:</p>
<ul>
<li>A complete data migration strategy and transformation from a legacy MySQL database.</li>
<li>A course proximity search algorithm based on zip code to find nearby courses.</li>
<li>An embedded statistics and analytics package to display metrics by location, course, instructor, and student type.</li>
<li>Course payment and credit card processing with Authorize.net.</li>
</ul>
<p><a href="http://www.aliveat25.us/"><img src="/blog/images/aliveat25.jpg" border="1" height="404" width="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://xiaan.com/blog/2007/06/25/alive-at-25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
