<?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>maratz.com &#187; coding/design</title>
	<atom:link href="http://www.maratz.com/blog/archives/category/codingdesign/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maratz.com/blog</link>
	<description>Hypertext rulez™</description>
	<lastBuildDate>Tue, 27 Jul 2010 07:52:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SeekandHit realign</title>
		<link>http://www.maratz.com/blog/archives/2010/07/27/seekandhit-realign/</link>
		<comments>http://www.maratz.com/blog/archives/2010/07/27/seekandhit-realign/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 23:18:47 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[ux projects]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=1305</guid>
		<description><![CDATA[Creative Nights was re-hired by the Internet marketing agency SeekandHit to realign their web site. The previous redesign was back in April 2009. and it was quite a success, but there is always room for improvements. It was quite a challenge not to overdo it, especially when the existing design is so familiar, and both [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.creativenights.com/">Creative Nights</a> was re-hired by the Internet marketing agency <a href="http://www.seekandhit.com/">SeekandHit</a> to realign their web site. The previous redesign was back in April 2009. and it was quite a success, but there is always room for improvements. </p>
<p>It was quite a challenge not to overdo it, especially when the existing design is so familiar, and both — the client and us — were so eager about the process. However, the goal was not to make something prettier or different or wild (which would result in a short-term hype), but instead to focus on tiny little details. After the last relaunch, significant number of pages were published <i>ad hoc</i> and that parts needed our attention the most. </p>
<p>The feedback from Seekandhit clients and visitors was of a great help. Not the <q>“I wish you had&#8230;”</q> kind of complaints, but rather relevant comments, for instance <q>“I didn’t understand how X service works or how service Y can help me.”</q>. Mario Frančešević, the Seekandhit CEO also delivered very useful brief based — among other things — on visitors behavior tracked by Google Analytics.</p>
<p>The cornerstone for this iteration were detailed screenshots of actual adverts and illustrations for the most prominent advertising features. That was especially important on <a href="http://www.seekandhit.com/en/services/">Services Overview page</a>, where some visitors had difficulties understanding the differences between various advertising platforms.</p>
<div class="alignleft-pulllarge"><a href="http://www.seekandhit.com/en/services/"><img src="http://www.maratz.com/blog/wp-content/uploads/2010/07/seekandhit-maratz.com-01.jpg" alt="" title="Old and New Services page" width="660" height="660" class="alignleft size-full" /></a></div>
<p>Another roadblock for visitors was <a href="http://www.seekandhit.com/en/quote/">Project Questionnaire</a>, which had too many (specific) questions than is normally required for the initial contact. SeekandHit tries to custom-tailor campaigns for each client, so the obvious shift was to simplify the web form and provide the prospects with a brief overview of the process in a form of numbered steps. </p>
<div class="alignleft-pulllarge"><a href="http://www.seekandhit.com/en/quote/"><img src="http://www.maratz.com/blog/wp-content/uploads/2010/07/seekandhit-maratz.com-02.jpg" alt="" title="Old and New Project Questionnaire" width="660" height="520" class="alignleft size-full" /></a></div>
<p>Now let’s see the results with real-life users. Fingers crossed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2010/07/27/seekandhit-realign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup2Mail v.0.17</title>
		<link>http://www.maratz.com/blog/archives/2010/06/10/backup2mail-v-0-17/</link>
		<comments>http://www.maratz.com/blog/archives/2010/06/10/backup2mail-v-0-17/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 19:32:30 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[b2m]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=1299</guid>
		<description><![CDATA[Backup2Mail is automatic MySQL database backup web application. The latest upgrade solves permissions and/or file path problems on various commercial web servers. It also removes the need to move script above the web root folder with .htaccess fix. Download v.0.17 and as always send your feedback!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.backup2mail.com/">Backup2Mail</a> is automatic MySQL database backup web application. The latest upgrade solves permissions and/or file path problems on various commercial web servers. It also removes the need to move script above the web root folder with .htaccess fix.</p>
<p><a href="http://www.backup2mail.com/">Download v.0.17</a> and as always send your feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2010/06/10/backup2mail-v-0-17/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ImageMagick with MAMP</title>
		<link>http://www.maratz.com/blog/archives/2010/05/11/imagemagick-with-mamp/</link>
		<comments>http://www.maratz.com/blog/archives/2010/05/11/imagemagick-with-mamp/#comments</comments>
		<pubDate>Tue, 11 May 2010 20:01:02 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mamp]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=1280</guid>
		<description><![CDATA[Many web designers and front-end developers are using MAMP for its ease of use. However, MAMP doesn’t come with very popular and wide spread image manipulation library ImageMagick. Just recently my fellow internet super talent Mario Lončarić clarifyied steps for installing ImageMagick library to your Mac with MAMP. Obviously, this article is not for Terminal [...]]]></description>
			<content:encoded><![CDATA[<p>Many web designers and front-end developers are using <a href="http://www.mamp.info/">MAMP</a> for its ease of use. However, MAMP doesn’t come with very popular and wide spread image manipulation library <a href="http://www.imagemagick.org/">ImageMagick</a>. Just recently my fellow internet super talent <a href="http://twitter.com/chevap">Mario Lončarić</a> clarifyied steps for installing ImageMagick library to your Mac with MAMP. </p>
<p>Obviously, this article is not for Terminal savvy programmers, but rather for the rest of us who are using drag and drop web server packages such as MAMP. <span id="more-1280"></span></p>
<p>I guess you already have MAMP installed on your local computer, most likely in <code>/Applications/MAMP</code>. If not, install it before you move on to the next step.</p>
<p><strong>First</strong>, download <a href="http://www.imagemagick.org/script/binary-releases.php?ImageMagick=sa2njjqr10qt376chb9at7fmm4#macosx">ImageMagick for Mac OS X</a> and unarchive it to <code>/Applications/MAMP/bin/ImageMagick</code>.</p>
<p><strong>Next</strong>, open up Terminal.app (don’t be afraid, it won’t bite you), and enter line by line:</p>
<pre>$yourmacname> export MAGICK_HOME="/Applications/MAMP/bin/ImageMagick/ImageMagick-6.6.1"
$yourmacname> export PATH="$MAGICK_HOME/bin:$PATH"
$yourmacname> export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib"</pre>
<p><strong>Test</strong> if everything works up to this point:</p>
<pre>$yourmacname> cd /Applications/MAMP/bin/ImageMagick/ImageMagick-6.6.1
$yourmacname> convert logo: logo.gif
$yourmacname> identify logo.gif
$yourmacname> display logo.gif</pre>
<p><strong>Last</strong>: browse to <code>/Applications/MAMP/Library/bin</code> and open <code>envvars</code> file with your text editor. Change the two uncommented lines, i.e. <code>DYLD_LIBRARY_PATH="...</code> and <code>export...</code> to following:</p>
<pre>DYLD_LIBRARY_PATH="/Applications/MAMP/bin/ImageMagick/ImageMagick-6.6.1/lib:/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH</pre>
<p>If you are using ImageMagick in your server-side application, be sure to set the correct path, for instance in PHP:</p>
<pre>define('MAGICK_PATH', '/Applications/MAMP/bin/ImageMagick/ImageMagick-6.6.1/bin/convert');</pre>
<p>Restart Apache in MAMP and you’re done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2010/05/11/imagemagick-with-mamp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress related articles by tags and/or categories</title>
		<link>http://www.maratz.com/blog/archives/2009/06/15/wordpress-related-articles-by-tags-andor-categories/</link>
		<comments>http://www.maratz.com/blog/archives/2009/06/15/wordpress-related-articles-by-tags-andor-categories/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 05:03:05 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=953</guid>
		<description><![CDATA[Here is a quick code snippet for displaying any given number of articles, related first by tags and optionally from the same category. This is by no means definitive solution, but might come in handy as a quick start. Drop this inside the loop in single.php template, I suggest right behind the the_content() call. See [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a quick code snippet for displaying any given number of articles, related first by tags and optionally from the same category. This is by no means definitive solution, but might come in handy as a quick start.</p>
<p>Drop this inside <a href="http://codex.wordpress.org/The_Loop"><em>the loop</em></a> in <code>single.php</code> template, I suggest right behind the <a href="http://codex.wordpress.org/Template_Tags/the_content"><code>the_content()</code></a> call. See it in action on the <a href="http://www.gadgeterija.net/2009/06/12/zaradili-300000-dolara-kupovinom-vlastite-glazbe-na-itunesu-ukradenim-karticama/#related-articles">live site</a>.</p>
<p>Use it as a base for more advanced features, or simply c/p. It&#8217;ll work :)</p>
<p><span id="more-953"></span></p>
<p><code>
<pre>&#60;?php

    $max_articles = 7;  // How many articles to display

    echo '&#60;div id="related-articles" class="sidebox"&#62;&#60;h3&#62;Related articles&#60;/h3&#62;&#60;ul&#62;';

    $cnt = 0;

    $article_tags = get_the_tags();
    $tags_string = '';
    if ($article_tags) {
        foreach ($article_tags as $article_tag) {
            $tags_string .= $article_tag-&#62;slug . ',';
        }
    }

    $tag_related_posts = get_posts('exclude=' . $post-&#62;ID . '&#038;numberposts=' . $max_articles . '&#038;tag=' . $tags_string);

    if ($tag_related_posts) {
        foreach ($tag_related_posts as $related_post) {
            $cnt++;
            echo '&#60;li class="child-' . $cnt . '"&#62;';
            echo '&#60;a href="' . get_permalink($related_post-&#62;ID) . '"&#62;';
            echo $related_post-&#62;post_title . '&#60;/a&#62;&#60;/li&#62;';
        }
    }

    // Only if there's not enough tag related articles,
    // we add some from the same category

    if ($cnt &#60; $max_articles) {

        $article_categories = get_the_category($post-&#62;ID);
        $category_string = '';
        foreach($article_categories as $category) {
            $category_string .= $category-&#62;cat_ID . ',';
        }

        $cat_related_posts = get_posts('exclude=' . $post-&#62;ID . '&#038;numberposts=' . $max_articles . '&#038;category=' . $category_string);

        if ($cat_related_posts) {
            foreach ($cat_related_posts as $related_post) {
                $cnt++;
                if ($cnt &#62; $max_articles) break;
                echo '&#60;li class="child-' . $cnt . '"&#62;';
                echo '&#60;a href="' . get_permalink($related_post-&#62;ID) . '"&#62;';
                echo $related_post-&#62;post_title . '&#60;/a&#62;&#60;/li&#62;';
            }
        }
    }

    echo '&#60;/ul&#62;&#60;/div&#62;';

?&#62;</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2009/06/15/wordpress-related-articles-by-tags-andor-categories/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Definition list for article comments or IM dialogue</title>
		<link>http://www.maratz.com/blog/archives/2009/06/05/definition-list-for-article-comments-or-im-dialogue/</link>
		<comments>http://www.maratz.com/blog/archives/2009/06/05/definition-list-for-article-comments-or-im-dialogue/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 07:00:16 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=924</guid>
		<description><![CDATA[HTML5 is the buzzword this season. Leading people in the industry are using appropriate class names for what will hopefully once become fully supported structural elements. Fully supported = fully supported by browsers. In getting ready for HTML5 instead of element header: &#60;header&#62;Site Name&#60;/header&#62; you’d write &#60;div class="header"&#62;Site Name&#60;/div&#62; For the inclined readers, here’s the [...]]]></description>
			<content:encoded><![CDATA[<p>HTML5 is <em>the</em> buzzword this season. Leading people in the industry are using appropriate class names for what will hopefully once become fully supported structural elements. Fully supported = fully supported by browsers.</p>
<p>In getting ready for HTML5 instead of element <code>header</code>:</p>
<pre><code>&#60;header&#62;Site Name&#60;/header&#62;</code></pre>
<p>you’d write</p>
<pre><code>&#60;div class="header"&#62;Site Name&#60;/div&#62;</code></pre>
<p>For the inclined readers, here’s the <a href="http://www.w3.org/html/wg/markup-spec/">HTML5 working draft</a>. Quick overview of the element list will help you catch the train.</p>
<h2>Definition lists, rediscovered</h2>
<p>Definition list is a personal favorite HTML pattern for marking-up 2 or more related content elements. I found it especially useful when nested in list-items on search results pages and various tag/category listings. This raised a lots of controversy in the past and is still raising today, but I won’t go down that route now. Here’s just a quick example, just in case you don’t have a clue what I’m talking about: <span id="more-924"></span></p>
<p><code>
<pre>&#60;ul&#62;
    &#60;li&#62;&#60;dl&#62;
        &#60;dt&#62;Title&#60;/dt&#62;
        &#60;dd class="thumbnail"&#62;&#60;img src="image.jpg" alt="" /&#62;&#60;/dd&#62;
        &#60;dd class="abstract"&#62;Lorem ipsum dolor sit amet...&#60;/dd&#62;
    &#60;/dl&#62;&#60;/li&#62;
&#60;/ul&#62;</pre>
<p></code></p>
<p>The all new rediscovered <a href="http://www.w3.org/TR/html5/semantics.html#the-dialog-element">use of definition lists is with comments or dialogs</a>, for instance Twitter conversation. It has always been it’s intended for this, but now with the dawn of HTML5 (or launch-break for many) it regains the popularity.</p>
<p><cite><a href="http://www.w3.org/TR/html4/struct/lists.html#h-10.3">HTML4 specs</a> say:</cite></p>
<blockquote><p>Another application of <code>DL</code>, for example, is for marking up dialogues, with each <code>DT</code> naming a speaker, and each <code>DD</code> containing his or her words.</p></blockquote>
<p>And here it is:</p>
<p><code>
<pre>&#60;dl class="dialog">
    &#60;dt>
        &#60;a href="http://twitter.com/designer">
            &#60;img src="designer.jpg" alt="" /> @designer
        &#60;/a>
    &#60;/dt>
    &#60;dd>Oh, it looks beautiful with shortcuts.&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/projectmanager">
            &#60;img src="projectmanager.jpg" alt="" /> @projectmanager
        &#60;/a>
    &#60;/dt>
    &#60;dd>What? But we have full sentences over there!&#60;/dd>  

    &#60;dt>
        &#60;a href="http://twitter.com/designer">
            &#60;img src="designer.jpg" alt="" /> @designer
        &#60;/a>
    &#60;/dt>
    &#60;dd>Huh?... but it breaks my grid?!
        F*ckin user generated content.&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/projectmanager">
            &#60;img src="projectmanager.jpg" alt="" /> @projectmanager
        &#60;/a>
    &#60;/dt>
    &#60;dd>Another solution is: we don’t let users post anything.&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/designer">
            &#60;img src="designer.jpg" alt="" /> @designer
        &#60;/a>
    &#60;/dt>
    &#60;dd>No, we can’t do that neither.
        How about we ask
            &#60;a href="http://twitter.com/programmer">@programmer&#60;/a>
            to shorten strings?&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/projectmanager">
            &#60;img src="projectmanager.jpg" alt="" /> @projectmanager
        &#60;/a>
    &#60;/dt>
    &#60;dd>Clever idea! Go ask him!&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/designer">
            &#60;img src="designer.jpg" alt="" /> @designer
        &#60;/a>
    &#60;/dt>
    &#60;dd>I came with the idea, &#60;em>you&#60;/em> ask him!&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/projectmanager">
            &#60;img src="projectmanager.jpg" alt="" /> @projectmanager
        &#60;/a>
    &#60;/dt>
    &#60;dd>On second thought, I’ll tell
        &#60;a href="http://twitter.com/cssdeveloper">@cssdeveloper&#60;/a>
        to think of something.&#60;/dd>

    &#60;dt>
        &#60;a href="http://twitter.com/designer">
            &#60;img src="designer.jpg" alt="" /> @designer
        &#60;/a>
    &#60;/dt>
    &#60;dd>See? Problem solved!&#60;/dd>
&#60;/dl></pre>
<p></code></p>
<p>Is this making any sense? Or should we just stick with ordered/unordered lists and <code>cite</code> + <code>blockquote</code> pairs?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2009/06/05/definition-list-for-article-comments-or-im-dialogue/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>First look at the CSS support in Internet Explorer 8</title>
		<link>http://www.maratz.com/blog/archives/2009/03/22/first-look-at-the-css-support-in-internet-explorer-8/</link>
		<comments>http://www.maratz.com/blog/archives/2009/03/22/first-look-at-the-css-support-in-internet-explorer-8/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 14:53:23 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[CSS 101]]></category>
		<category><![CDATA[coding/design]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=844</guid>
		<description><![CDATA[Internet Explorer 8 is released last week. The IE team promised the browser will be more standards aware, similar to it&#8217;s major competition Firefox, Opera and Safari. The trouble is — designers and developers don&#8217;t settle for current minimum, we are always into something new. So, by the time a giant vendor locks the feature [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/windows/internet-explorer/">Internet Explorer 8</a> is released last week. The IE team promised the browser will be more standards aware, similar to it&#8217;s major competition <a href="http://www.mozilla.org/firefox">Firefox</a>, <a href="http://www.opera.com/">Opera</a> and <a href="http://www.apple.com/safari">Safari</a>.</p>
<p>The trouble is — designers and developers don&#8217;t settle for current minimum, we are always into something new. So, by the time a giant vendor locks the feature list, a more flexible and agile competition goes miles away.</p>
<p>In the era of rounded corners/borders and transparency made possible purely with CSS, IE team missed to implement both, or at least in the form that wouldn&#8217;t require separate style-sheets files to conform to <a href="http://www.w3.org/">W3C</a> guidelines.</p>
<p>I checked a few dozens of CSS-based web sites, and I&#8217;m not even sure anymore if everything works because developers payed special attention to IE 6 and IE 7, or is it because IE 8 is mature enough to render CSS layouts properly.</p>
<h2>What works, what isn&#8217;t working</h2>
<p>PNGs work without hacking. Rounded corners with CSS not. Text shadow — no. Alpha transparency is still possible only with proprietary filter property, for instance <code>filter: alpha(opacity=10);</code>.</p>
<p>Naturally, if you want your CSS to validate — this rule has to be extracted in separate file, <a href="/blog/archives/2005/06/16/essentials-of-css-hacking-for-internet-explorer/">preferably with conditional comments</a>.</p>
<p>The old <a href="http://www.maratz.com/blog/archives/2006/10/23/ie-7-quirks-round-one/">typeface order bug</a> is still present, and easy font embedding with <code>@font-face</code> doesn&#8217;t work either, so if you prefer this method, read <a href="http://jontangerine.com/log/2008/10/font-face-in-ie-making-web-fonts-work">how to do it in IE</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2009/03/22/first-look-at-the-css-support-in-internet-explorer-8/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Backup2Mail v.0.16</title>
		<link>http://www.maratz.com/blog/archives/2009/01/11/backup2mail-v016/</link>
		<comments>http://www.maratz.com/blog/archives/2009/01/11/backup2mail-v016/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 10:19:02 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=813</guid>
		<description><![CDATA[Backup2Mail is automatic MySQL database backup web application. It is now upgraded and supports different host names. Download v.0.16. Media Temple and some other hosting providers are using internal naming conventions for their database hosts (i.e. other than &#8216;localhost&#8217;). This upgrade enables backing up databases on such hosting setups. Any feedback is appreciated!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.backup2mail.com/">Backup2Mail</a> is automatic MySQL database backup web application. It is now upgraded and supports different host names. <a href="http://www.backup2mail.com/">Download v.0.16</a>.</p>
<p><a href="http://mediatemple.net/">Media Temple</a> and some other hosting providers are using internal naming conventions for their database hosts (i.e. other than &#8216;localhost&#8217;). This upgrade enables backing up databases on such hosting setups.</p>
<p>Any feedback is appreciated!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2009/01/11/backup2mail-v016/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Episode Four: Create bullet-proof, eco-friendly CSS</title>
		<link>http://www.maratz.com/blog/archives/2008/12/18/episode-four-create-bullet-proof-eco-friendly-css/</link>
		<comments>http://www.maratz.com/blog/archives/2008/12/18/episode-four-create-bullet-proof-eco-friendly-css/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 09:07:29 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[CSS 101]]></category>
		<category><![CDATA[coding/design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[photoshop]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=807</guid>
		<description><![CDATA[This is the fourth part of the series, “Environmental friendly CSS” In the previous episodes we’ve created a creative/technical brief, mocked-up design in Photoshop and decided on proper markup for the category cloud. Finally, we turn our design into web page element with some nifty CSS. For those of you who better understand from live [...]]]></description>
			<content:encoded><![CDATA[<div class="alignleft-pull pullquote">
<p>This is the fourth part of the series, “<a href="http://www.maratz.com/blog/archives/2008/11/23/environmental-friendly-css-the-series/">Environmental friendly CSS</a>”</p>
</div>
<p>In the previous episodes we’ve <a href="http://www.maratz.com/blog/archives/2008/11/27/episode-one-prepare-your-content-and-interface-copy/">created a creative/technical brief</a>, <a href="http://www.maratz.com/blog/archives/2008/12/04/episode-two-visually-design-information-elements-and-user-interface/">mocked-up design</a> in Photoshop and decided on <a href="http://www.maratz.com/blog/archives/2008/12/11/episode-three-mark-it-up/">proper markup for the category cloud</a>. Finally, we turn our design into web page element with some nifty CSS.</p>
<p>For those of you who better understand from live examples, here&#8217;s a <a href="http://webdesign.maratz.com/lab/environmental-friendly-css/">little treat for you</a>. If you&#8217;re beginner in CSS, read on. <span id="more-807"></span></p>
<h2>From the outside to the inside</h2>
<p>It is common sense to most of us, but nevertheless here&#8217;s an advice — don&#8217;t get into details too early, because you will have to go forth and back in the code too often.</p>
<p>Let&#8217;s pull the markup on stage:</p>
<p><code>
<pre>&#60;div id="categories"&#62;
	&#60;h4&#62;Most popular joke types and categories&#60;/h4&#62;
	&#60;ul&#62;
		&#60;li&#62;&#60;a href="#"&#62;Political jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Professional humor&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Mathematical jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Ethnic jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;British tell jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Self-deprecating humor&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Blonde jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Redneck jokes&#60;/a&#62;&#60;/li&#62;
	&#60;/ul&#62;
&#60;/div&#62;</pre>
<p></code></p>
<p>First set-up the main frame: set the dimensions and positioning of the <code>&#60;div id="categories"&#62;</code>. The width is fixed, but we let the height stay flexible, so if more content gets in there in the future, the box won&#8217;t break.</p>
<p>If you haven&#8217;t done so yet, <a href="http://www.maratz.com/downloads/environmental-friendly-css/environmental-friendly-css.psd.zip">Download .PSD file</a> and open it with Photoshop.</p>
<p>The rounded box has a width of 300px, so here the CSS goes:</p>
<p><code>
<pre>#categories { width: 300px; }</pre>
<p></code></p>
<p>The area below links to the bottom of the lowest character shadow is approximatelly 275px high. We add bottom padding, so there is always plenty of room for the comic dialog, no matter how many links is displayed:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
}</pre>
<p></code></p>
<p>Next, slice the top part of the box, name it <code>box-top.gif</code> and Save it in the same folder where the CSS file resides. It should look something like this:</p>
<p><img src="/img/2008/12-dec/18/01.gif" alt="" width="300" height="20" /></p>
<p>Now add background to the box:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
}</pre>
<p></code></p>
<h2>Detail 1: the heading</h2>
<p>We are not going to use the copy in the markup. Instead, there is a dialog bubble which is supposed to do the communication.</p>
<p>You&#8217;ve noticed that the bubble (i.e. <code>h4</code>) is off-set to the right. We have also set fixed width to <code>&#60;div id="categories"&#62;</code>. With <code>position: absolute</code> we&#8217;re going to shift the bubble outside the box. It will not break layout because absolute positioned elements are out of the document flow, which means they don&#8217;t affect their surrounding elements.</p>
<p>We already made some room for the dialog with bottom padding. Now we only have to add one more rule to <code>&#60;div id="categories"&#62;</code> so we can position <code>h4</code> relatively to the container:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}</pre>
<p></code></p>
<p>Remember, we left 275 pixels in height, so we use it to dimension the <code>h4</code>. Width is set to 100% by default, since <code>h4</code> is a block level element, but we need to push it outside the box, so we also need to increase its default with from 300 pixels (100%) to 350 pixels.</p>
<p>Finally, we use <code>bottom</code> and <code>left</code> CSS properties to set coordinates.</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
}
</pre>
<p></code></p>
<p>Now, go back to Photoshop and slice the bottom of the box and the dialog. You should get 350 x 275 pixels .GIF. Name it — you guessed it — <code>box-bottom.gif</code> and Save it in the same folder where the CSS file resides:</p>
<p><img src="/img/2008/12-dec/18/02.gif" alt="" width="350" height="275" /></p>
<p>Add background to CSS:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
    background: url(box-bottom.gif);
}
</pre>
<p></code></p>
<p>And shift the remaining text to the left, by <code>text-indent</code>:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
    background: url(box-bottom.gif);
    text-indent: -9999px;
    overflow: hidden; /* with this rule
        the container doesn't stretch to the left */
}
</pre>
<p></code></p>
<p>So far, so good: only the category links have been left to be done.</p>
<h2>Detail 2: list of categories</h2>
<p>At the beginning of the list styling, remove bullets and the default display behavior:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
    background: url(box-bottom.gif);
    text-indent: -9999px;
    overflow: hidden; /* with this rule
        the container doesn't stretch to the left */
}

#categories li {
    list-style: none;
    display: inline;
}
</pre>
<p></code></p>
<p>Then we tell text to go into center, add some padding to <code>ul</code> element and remove possibly inherited margins:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
    background: url(box-bottom.gif);
    text-indent: -9999px;
    overflow: hidden; /* with this rule
        the container doesn't stretch to the left */
}

#categories ul {
    text-align: center;
    padding: 1em 1.5em;
    margin: 0;
}

#categories li {
    list-style: none;
    display: inline;
}
</pre>
<p></code></p>
<p>And FINALLY add Comic Sans font to links:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
    background: url(box-bottom.gif);
    text-indent: -9999px;
    overflow: hidden; /* with this rule
        the container doesn't stretch to the left */
}

#categories ul {
    text-align: center;
    padding: 1em 1.5em;
    margin: 0;
}

#categories li {
    list-style: none;
    display: inline;
}

#categories li a {
    font-family: 'Comic Sans MS', sans-serif;
    text-decoration: none;
    color: #fff;
}
</pre>
<p></code></p>
<p>Links are now perhaps too crowded, so we tweak them with some right and left padding. Also don&#8217;t forget <code>:hover</code> and <code>:focus</code> states:</p>
<p><code>
<pre>#categories {
    width: 300px;
    padding-bottom: 275px;
    background: #000 url(box-top.gif) no-repeat 0 0;
    position: relative;
}

#categories h4 {
    position: absolute;
    height: 275px;
    width: 350px;
    left: 0;
    bottom: 0;
    background: url(box-bottom.gif);
    text-indent: -9999px;
    overflow: hidden; /* with this rule
        the container doesn't stretch to the left */
}

#categories ul {
    text-align: center;
    padding: 1em 1.5em;
    margin: 0;
}

#categories li {
    list-style: none;
    display: inline;
}

#categories li a {
    font-family: 'Comic Sans MS', sans-serif;
    text-decoration: none;
    color: #fff;
    padding: 0 .2em;
        /* equals to 2px if calculated font-size is 10px */
}

#categories li a:hover,
#categories li a:focus {
    text-decoration: underline;
}
</pre>
<p></code></p>
<p>Excellent! Here is <strong>the final <a href="http://webdesign.maratz.com/lab/environmental-friendly-css/">working example</a></strong>. Go ahead, resize the text in your browser, or add more items — it won&#8217;t break. Everything is done except&#8230;</p>
<h2>Different font sizes?</h2>
<p>We miss one more thing — the different font sizes. But, it&#8217;s not done in CSS file, but with some inline HTML attributes. Basically, it all comes down to two approaches:</p>
<ul>
<li>a set of distinctive class names or</li>
<li>inline styles.</li>
</ul>
<p>Either way, you&#8217;ll have to do it server side or with JavaScript (both methods coming-up early in 2009.).</p>
<h2>What have we learned?</h2>
<p><strong>With lean markup, but smart CSS, almost any design can be sliced to a high quality web interface.</strong> Not only that — we also managed to make it bullet-proof, so the various scenarios (text resize and different amounts of content) don&#8217;t break the layout.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/12/18/episode-four-create-bullet-proof-eco-friendly-css/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Episode Three: Mark it up!</title>
		<link>http://www.maratz.com/blog/archives/2008/12/11/episode-three-mark-it-up/</link>
		<comments>http://www.maratz.com/blog/archives/2008/12/11/episode-three-mark-it-up/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 11:54:21 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[CSS 101]]></category>
		<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=792</guid>
		<description><![CDATA[This is the third part of the series, “Environmental friendly CSS” In the previous episodes we’ve created a creative/technical brief and then mocked-up design in Photoshop. The next step in a process is creating solid XHTML markup. Let&#8217;s open it up with a question: How to markup category cloud? There are two simple approaches that [...]]]></description>
			<content:encoded><![CDATA[<div class="alignleft-pull pullquote">
<p>This is the third part of the series, “<a href="http://www.maratz.com/blog/archives/2008/11/23/environmental-friendly-css-the-series/">Environmental friendly CSS</a>”</p>
</div>
<p>In the previous episodes we’ve <a href="http://www.maratz.com/blog/archives/2008/11/27/episode-one-prepare-your-content-and-interface-copy/">created a creative/technical brief</a> and then <a href="http://www.maratz.com/blog/archives/2008/12/04/episode-two-visually-design-information-elements-and-user-interface/">mocked-up design</a> in Photoshop. The next step in a process is creating solid XHTML markup. Let&#8217;s open it up with a question:</p>
<h2>How to markup category cloud?</h2>
<p>There are two simple approaches that usually comes to mind at first: a paragraph and an unordered list.</p>
<p>If we use paragraph with links, we wouldn&#8217;t probably miss it in terms of the default presentation across the range of User Agents. The thing is — if one is marking-up a &#8216;cloud&#8217;, it&#8217;s natural that all the links are inline, one after another.</p>
<blockquote><p>— Let me think about it! Yea, I will just set <code>text-alignment: center</code> to that paragraph and I&#8217;m done. Great!</p></blockquote>
<p><span id="more-792"></span></p>
<div><code>
<pre>&#60;div id="category-cloud"&#62;
	&#60;h4&#62;Most popular joke types and categories&#60;/h4&#62;
	&#60;p&#62;
		&#60;a href="#"&#62;Political jokes&#60;/a&#62;
		&#60;a href="#"&#62;Professional humor&#60;/a&#62;
		&#60;a href="#"&#62;Mathematical jokes&#60;/a&#62;
		&#60;a href="#"&#62;Ethnic jokes&#60;/a&#62;
		&#60;a href="#"&#62;British tell jokes&#60;/a&#62;
		&#60;a href="#"&#62;Self-deprecating humor&#60;/a&#62;
		&#60;a href="#"&#62;Blonde jokes&#60;/a&#62;
		&#60;a href="#"&#62;Redneck jokes&#60;/a&#62;
	&#60;/p&#62;
&#60;/div&#62;</pre>
<p></code></div>
<p><strong>Not great!</strong> The above code is wrong. The &#8216;cloud&#8217; is a visual cue, not the structural element. The category cloud is — in its essence — a list of categories, so the more suitable XHTML element would be unordered list.</p>
<h2>It&#8217;s not a cloud, it&#8217;s a list</h2>
<p>Cloud as typography or XHTML element doesn&#8217;t exist. Tag or category <strong>cloud is a visual representation  of the list</strong> of categories. So let&#8217;s try semantically correct markup — an unordered list.</p>
<div><code>
<pre>&#60;div id="categories"&#62;
	&#60;h4&#62;Most popular joke types and categories&#60;/h4&#62;
	&#60;ul&#62;
		&#60;li&#62;&#60;a href="#"&#62;Political jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Professional humor&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Mathematical jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Ethnic jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;British tell jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Self-deprecating humor&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Blonde jokes&#60;/a&#62;&#60;/li&#62;
		&#60;li&#62;&#60;a href="#"&#62;Redneck jokes&#60;/a&#62;&#60;/li&#62;
	&#60;/ul&#62;
&#60;/div&#62;</pre>
<p></code></div>
<p>Some novice CSS developers in the past argued that they were having troubles with list-items in tag clouds. In the last article (coming up next week) we will explain it throughout. But, it&#8217;s very important to <strong>learn how to shift from visual/CSS mindset to semantic/contextual XHTML mindset</strong>.</p>
<h2>A little practice will get you there</h2>
<p>When deciding on the XHTML structure for any given element, <strong>try to ignore the design at first</strong>. You will easily modify markup later if you find no other way to accomplish layout only with CSS.</p>
<p>Instead, dive-in under the surface and check the bare-naked content and context to decide what markup should do the job.</p>
<p>If creating XHTML snippets is a second nature to you, please share how do <em>you</em> <strong>fight your thoughts about how it&#8217;s going to look</strong> when choosing appropriate markup?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/12/11/episode-three-mark-it-up/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Episode Two: Visually design information elements and user interface</title>
		<link>http://www.maratz.com/blog/archives/2008/12/04/episode-two-visually-design-information-elements-and-user-interface/</link>
		<comments>http://www.maratz.com/blog/archives/2008/12/04/episode-two-visually-design-information-elements-and-user-interface/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 08:01:24 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[photoshop]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=772</guid>
		<description><![CDATA[This is the second part of the series, “Environmental friendly CSS” In the previous episode we&#8217;ve created a creative/technical brief. In this article we are going to use that document to design the category cloud area. For all busy readers, here is the final result: The process Most of the time, you&#8217;d want to first [...]]]></description>
			<content:encoded><![CDATA[<div class="alignleft-pull pullquote">
<p>This is the second part of the series, “<a href="http://www.maratz.com/blog/archives/2008/11/23/environmental-friendly-css-the-series/">Environmental friendly CSS</a>”</p>
</div>
<p>In the <a href="http://www.maratz.com/blog/archives/2008/11/27/episode-one-prepare-your-content-and-interface-copy/">previous episode</a> we&#8217;ve created a creative/technical brief. In this article we are going to use that document to design the category cloud area. For all busy readers, here is the final result:</p>
<p><img src="http://www.maratz.com/img/2008/12-dec/environmental-friendly-css-final.gif" alt="Final image" width="420" height="500" /></p>
<h2>The process</h2>
<p>Most of the time, you&#8217;d want to first scribble some sketches, the old school way — pencil and paper. Yes, another Moleskine sucker.</p>
<p><img src="http://www.maratz.com/img/2008/12-dec/environmental-friendly-css-moleskine.jpg" alt="Final image" width="420" height="234" /></p>
<p>As you can see, it all comes down to some quick ideas and metaphors in order to get rid of the noise. This way you can rapidly test <a href="http://www.thinkvitamin.com/features/design/how-crap-is-your-site-design">proximity, contrast and alignment</a> and set the overall look-and-feel.</p>
<p>Before I fired-up Photoshop, I knew I was going to have a dialogue between two characters on a window, carelessly enjoying the force of the nature. As a contrast, I planed another character who&#8217;s experience wouldn&#8217;t be so pleasant and optimistic. <span id="more-772"></span></p>
<p>See some different/transitional design versions:</p>
<p><img src="http://www.maratz.com/img/2008/12-dec/environmental-friendly-css-01.gif" alt="ver. 01" width="420" height="500" /></p>
<p><img src="http://www.maratz.com/img/2008/12-dec/environmental-friendly-css-02.gif" alt="ver. 02" width="420" height="500" /></p>
<p><img src="http://www.maratz.com/img/2008/12-dec/environmental-friendly-css-03.gif" alt="ver. 03" width="420" height="500" /></p>
<p><img src="http://www.maratz.com/img/2008/12-dec/environmental-friendly-css-04.gif" alt="ver. 04" width="420" height="500" /></p>
<h2>Photoshop steps</h2>
<p>The approximate Photoshop process goes like this:</p>
<ul>
<li><strong>Rectangular marquee tool</strong>: for the dimensions (300px in width, random in height), set Guides</li>
<li><strong>Rounded rectangle tool</strong> (Shape layers toggled): draw main box (the window), set stroke</li>
<li><strong>Elliptical marquee tool</strong>: create random circles and ellipses by holding Shift to form the big cloud, fill selection with color.</li>
<li><strong>Pen tool</strong> (Shape layers toggled): draw lightning</li>
<li><strong>Type tool</strong>: write copy (tags and the label)</li>
<li><strong>Custom shape tool</strong> (Shape layers toggled): choose Talk 4 shape, draw dialog cloud, set stroke</li>
<li><strong>Elliptical marquee and Polygonal lasso tools</strong>: draw the character prototype using selections and then filling it with black.</li>
<li><strong>Duplicate</strong> the character and test downscaling, rotation and perspective (Edit &#8594; Transform).</li>
<li>Set the characters in place, modify the one that is going to be hit by the lightning (I used <strong>a combination of elliptical selections and brushes</strong> for the face).</li>
<li>Draw radiator with <strong>Pen tool</strong> (Paths toggled), then <strong>Make selection</strong>, and then <strong>Fill</strong>. If you draw the perspective freehand, it could take a couple of attempts to get it right.</li>
<li><strong>Pen tool</strong> (Paths toggled): draw a cable curve, then <strong>Stroke path with Brush</strong> (toggle simulate pressure checkbox).</li>
<li>Draw grills, color them red, make it all looks hot (as in hot temperature) with <strong>Outer Glow</strong>.</li>
<li>Select one of the inside character layer, then <strong>Select &#8594; Modify &#8594; Contract</strong> for about 2px, then create new <strong>Layer via Copy</strong> (Cmd/Ctrl + J), keep the selection toggled.</li>
<li><strong>Brush tool</strong>: set <strong>Opacity</strong> to very low, color: red, and gently draw the reflection on the character; repeat for the second one.</li>
<li><strong>Custom shape tool</strong> (Shape layers toggled): choose <strong>Heart card</strong> shape, draw a couple of hearts, variate size and opacity.</li>
<li><strong>Elliptical marquee tool</strong>: select some ellipses, fill with black, free-transform and lower the opacity.</li>
<li>Make final tweaks.</li>
</ul>
<h2>Deliverables</h2>
<p>To get a better picture about how it looks like in layers, <strong>download open source PSD file <a href="http://www.maratz.com/downloads/environmental-friendly-css/environmental-friendly-css.psd.zip">environmental-friendly-css.psd.zip (68 KB)</a></strong>.</p>
<h2>Movie anyone?</h2>
<p>I&#8217;m aware that the written steps and a PSD don&#8217;t get you as close as you might want to, so at the end of the series we&#8217;re going to deliver a screen-cast of the whole process.</p>
<p>In a mean-time, please share your thoughts: Would you do it in the similar fashion? Or would you take totally different approach?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/12/04/episode-two-visually-design-information-elements-and-user-interface/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Episode One: Prepare your content and interface copy</title>
		<link>http://www.maratz.com/blog/archives/2008/11/27/episode-one-prepare-your-content-and-interface-copy/</link>
		<comments>http://www.maratz.com/blog/archives/2008/11/27/episode-one-prepare-your-content-and-interface-copy/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 06:02:40 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=755</guid>
		<description><![CDATA[This is the first part of the series, “Environmental friendly CSS” We want to keep this simple. The example scenery is a fictitious blog with jokes and funny videos. Furthermore, the build part of the series will be based on the WordPress theme template, so you&#8217;d feel more comfortable following the code. Setup the context [...]]]></description>
			<content:encoded><![CDATA[<div class="alignleft-pull pullquote">
<p>This is the first part of the series, “<a href="http://www.maratz.com/blog/archives/2008/11/23/environmental-friendly-css-the-series/">Environmental friendly CSS</a>”</p>
</div>
<p>We want to keep this simple. The example scenery is a fictitious blog with jokes and funny videos. Furthermore, the build part of the series will be based on the <a href="http://wordpress.org/">WordPress</a> theme template, so you&#8217;d feel more comfortable following the code.</p>
<h2>Setup the context</h2>
<p>In this series, we are about to design and style the tag cloud for a sidebar.<br />
You&#8217;ve already seen those. If not, see <a href="http://www.coolinarika.com/recepti">the live example</a> (bottom right).</p>
<p>Additionally, we are going to reuse some common HTML snippets to add a little spice to interface design. More on that in the next episodes.<span id="more-755"></span></p>
<h2>The Content</h2>
<p>For the main content area, let&#8217;s use a random internet joke and a <a href="http://www.youtube.com/watch?v=h_vvI26NnwE">random video from Youtube</a>. We&#8217;ll also use some common blog navigation items and a search box.</p>
<p>For the tag cloud we have <a href="http://en.wikipedia.org/wiki/Joke#Types_of_jokes">types of jokes</a>: <em>Political jokes</em>, <em>Professional humor</em>, <em>Mathematical jokes</em>, <em>Ethnic jokes</em>, <em>British tell jokes</em>, <em>Self-deprecating humor</em>, <em>Blonde jokes</em>, <em>Redneck jokes</em> etc.</p>
<h2>User experience requirements</h2>
<p>Visitors of such a site would want to have a good laugh. The interface is supposed to support that, so we should invent some less formal labels and meta-titles to facilitate overall experience.</p>
<p>Instead of <q>&#8220;tag cloud&#8221;</q> we&#8217;re going with <q>&#8220;OMG, look at the storm!&#8221;</q>.</p>
<h2>Non-graphic User Agent requirements</h2>
<p>The web site should be accessible via mobile phones, so visitors can enjoy jokes while commuting or attending a boring meeting.</p>
<p>Regarding the later, the site should be easy to use with just one hand under the conference table — while you are pretending that you are participating in a meeting. Make it dead simple: linear with appropriate skip-to links.</p>
<p>The sentence <q>&#8220;OMG, look at the storm&#8221;</q> that we are using in full blown desktop browser is inadequate here. If we remove graphics, it&#8217;s silly to call a visitor to look at something that isn&#8217;t there. So we are going to name it something more clear and inline with the device. Read on.</p>
<h2>Search engines requirements</h2>
<p>Proper wording (keywords, phrases and labels) facilitate searching and getting the right search results. Users probably wouldn&#8217;t enter <q>&#8220;joke tags&#8221;</q> into Google search box, but they might search for <q>&#8220;joke categories&#8221;</q>, <q>&#8220;joke types&#8221;</q> or <q>&#8220;popular joke types&#8221;</q>.</p>
<p>Obviously, what is technically correct isn&#8217;t necessary user-friendly. Try to think about the phrases a random seeker would use to get to the content you are offering.</p>
<p>Said the above, let&#8217;s settle down with <q>&#8220;Most popular joke types and categories&#8221;</q>.</p>
<h2>Summary</h2>
<p>It&#8217;s always nice to create a short document which will outline your research in a form of Interface brief for the designer and/or front-end developer.</p>
<p>Don&#8217;t make it too fancy, stay focused, give a little background and then describe elements. See <a href="http://www.maratz.com/downloads/environmental-friendly-css/sample-interface-brief.pdf">sample Interface brief (17KB PDF)</a>.</p>
<p>In the next episode, we are going to deliver interface design mockup, based on the requirements outlined in this article.</p>
<p>Any Comments? Too basic, too advanced? Fire at will!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/11/27/episode-one-prepare-your-content-and-interface-copy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Backup2Mail v0.15</title>
		<link>http://www.maratz.com/blog/archives/2008/07/01/backup2mail-v015/</link>
		<comments>http://www.maratz.com/blog/archives/2008/07/01/backup2mail-v015/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 21:57:39 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=273</guid>
		<description><![CDATA[Important: This article is outdated. Backup2Mail is moved to its own web site — www.backup2mail.com. Quick intro for the first-timers: Backup2Mail automagically creates backup of your database and sends it to your mailbox with a little help of Cron. The script can now be tested without the Cron, prior to moving it to its permanent [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 1.8em 20px .1em; margin-bottom: 1.8em; background: #ffc;">
<p><strong>Important:</strong> This article is outdated. Backup2Mail is moved to its own web site — <a href="http://www.backup2mail.com/">www.backup2mail.com</a>.</p>
</div>
<p>Quick intro for the first-timers: <a href="http://www.maratz.com/blog/archives/2005/06/05/send-database-backup-to-your-mailbox-with-backup2mail/">Backup2Mail</a> automagically creates backup of your database and sends it to your mailbox with a little help of Cron.</p>
<p>The script can now be tested without the Cron, prior to moving it to its permanent location.</p>
<p>First, <del datetime="2009-01-11T10:05:21+00:00"><a href="/downloads/backup2mail/backup2mail.zip" onclick="javascript: pageTracker._trackPageview('/downloads/backup2mail/backup2mail.zip');">download the .ZIP</a></del> <ins datetime="2009-01-11T10:05:21+00:00"><a href="http://www.backup2mail.com/">visit Backup2Mail homepage</a>, download the latest build</ins>, unpack it, and change configuration settings.</p>
<p>Upload folder in your public web folder to test it. Open the file in your browser.</p>
<p>If you see the black page with green letters and there&#8217;s no errors, you are good to go. Move it to protected area (that means <strong>delete</strong> from public folder).</p>
<p>Have a nice backup.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/07/01/backup2mail-v015/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Happy birthday, show me your grid</title>
		<link>http://www.maratz.com/blog/archives/2008/05/21/happy-birthday-show-me-your-grid/</link>
		<comments>http://www.maratz.com/blog/archives/2008/05/21/happy-birthday-show-me-your-grid/#comments</comments>
		<pubDate>Wed, 21 May 2008 05:00:27 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=269</guid>
		<description><![CDATA[Today, May 21st 2008. &#8212; the Ezadar team is celebrating the first year of their online presence! Same time last year, web.burza crew ran for another winner, and now &#8212; one year later &#8212; it turns out that Ezadar really is one of the fastest growing news portals here in Croatia. They are showing off [...]]]></description>
			<content:encoded><![CDATA[<p>Today, May 21st 2008. &#8212; the <a href="http://www.ezadar.hr/">Ezadar</a> team is celebrating the first year of their online presence! Same time last year, <a href="http://web.burza.hr/">web.burza</a> crew ran for another winner, and now &#8212; one year later &#8212; it turns out that Ezadar really <em>is</em> one of the fastest growing news portals here in Croatia.</p>
<p>They are <a href="http://www.ezadar.hr/?grid=show">showing off their grid</a> and <a href="http://www.maratz.com/blog/?show=grid">maratz.com</a> joins the party.</p>
<p>For the geek in you, turn off JavaScript and reload the <a href="http://www.ezadar.hr/">Ezadar cover</a>.</p>
<div class="alignleft-pulllarge"><a href="http://www.flickr.com/photos/maratz/2508283182/"><img src="http://www.maratz.com/img/2008/may/maratz.com-20080520.gif" width="640" height="88" alt="" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/05/21/happy-birthday-show-me-your-grid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t blame the fonts, blame the designers</title>
		<link>http://www.maratz.com/blog/archives/2008/04/16/dont-blame-the-fonts-blame-the-designers/</link>
		<comments>http://www.maratz.com/blog/archives/2008/04/16/dont-blame-the-fonts-blame-the-designers/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 01:24:57 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=262</guid>
		<description><![CDATA[5 FONTS I WISH WOULD DIE. Reading that blog post was extremely sad to me. There are times when those so-called &#8220;ugly fonts&#8221; work extremely well. And if the target group loves Comic Sans, they are going to get the Comic Sans. Using particular font or avoiding it &#8212; based on a personal preference is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.3point7designs.com/blog/2008/04/14/5-fonts-i-wish-would-die/">5 FONTS I WISH WOULD DIE</a>.<br />
Reading that blog post was extremely sad to me.</p>
<p>There are times when those so-called &#8220;ugly fonts&#8221; work extremely well.</p>
<p>And if the target group loves Comic Sans, they are going to get the Comic Sans. Using particular font or avoiding it &#8212; based on a personal preference is utterly ridiculous. That is not designing, that is creating an artwork.</p>
<p>Use what your users love. Use what communicates best.<br />
Even if that&#8217;s Comic Sans. And try to live with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/04/16/dont-blame-the-fonts-blame-the-designers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>It&#8217;s CSS Dressed Day! Yay!</title>
		<link>http://www.maratz.com/blog/archives/2008/04/15/its-css-dressed-day-yay/</link>
		<comments>http://www.maratz.com/blog/archives/2008/04/15/its-css-dressed-day-yay/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 09:00:06 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=261</guid>
		<description><![CDATA[Watch out for the falling mortar! TODO (me): contact page about page favicon done. TODO (you) enjoy!]]></description>
			<content:encoded><![CDATA[<p>Watch out for the falling mortar!</p>
<h3>TODO (me):</h3>
<ul>
<li>contact page</li>
<li>about page</li>
<li><del datetime="2008-04-24T21:57:53+00:00">favicon</del> <ins datetime="2008-04-24T21:57:53+00:00">done.</ins></li>
</ul>
<h3>TODO (you)</h3>
<ul>
<li>enjoy!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/04/15/its-css-dressed-day-yay/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t ask&#8230; it&#8217;s CSS naked day week</title>
		<link>http://www.maratz.com/blog/archives/2008/04/09/css-naked-dayweek/</link>
		<comments>http://www.maratz.com/blog/archives/2008/04/09/css-naked-dayweek/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 05:45:18 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/?p=259</guid>
		<description><![CDATA[http://naked.dustindiaz.com/]]></description>
			<content:encoded><![CDATA[<p><a href="http://naked.dustindiaz.com/">http://naked.dustindiaz.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/04/09/css-naked-dayweek/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Captioning Sucks</title>
		<link>http://www.maratz.com/blog/archives/2008/04/01/captioning-sucks/</link>
		<comments>http://www.maratz.com/blog/archives/2008/04/01/captioning-sucks/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 06:19:05 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/archives/2008/04/01/captioning-sucks/</guid>
		<description><![CDATA[What? Where did you get that? The Accessibility Superhero Detective Joe Clark was hired to discover the truth about the subject. We all hoped the situation is not so dramatic, but boy &#8212; were we wrong!? Yea, but why exactly captioning sucks? Not enough of it They don&#8217;t listen It&#8217;s hard to read Deaf people [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://captioningsucks.com/"><img src="http://www.maratz.com/img/2008/apr/captioning-sucks.jpg" alt="Captioning Sucks! No shit, Sherlock! Now let&#8217;s fix it!" width="420" height="90" /></a></p>
<h2>What? Where did you get that?</h2>
<p>The Accessibility Superhero Detective <a href="http://joeclark.org/">Joe Clark</a> was <a href="http://joeclark.org/micro/">hired</a> to discover the truth about the subject. We all hoped the situation is not so dramatic, but boy &#8212; were we wrong!?</p>
<p>Yea, but why <em>exactly</em> <a href="http://captioningsucks.com/"><strong>captioning sucks</strong></a>?</p>
<ul>
<li><a href="http://captioningsucks.com/enough/">Not enough of it</a></li>
<li><a href="http://captioningsucks.com/ignored/">They don&#8217;t listen</a></li>
<li><a href="http://captioningsucks.com/fonts/">It&#8217;s hard to read</a></li>
<li><a href="http://captioningsucks.com/crumbs/">Deaf people settle for crumbs</a></li>
<li><a href="http://captioningsucks.com/wrongkind/">The wrong kind</a></li>
<li><a href="http://captioningsucks.com/fox/">The fox is watching the henhouse</a></li>
<li><a href="http://captioningsucks.com/standards/">There are no standards</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/04/01/captioning-sucks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>You’re Not a Programmer, We Won’t Pay You That Much</title>
		<link>http://www.maratz.com/blog/archives/2008/01/22/you-are-not-programmer/</link>
		<comments>http://www.maratz.com/blog/archives/2008/01/22/you-are-not-programmer/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 15:36:40 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[pricing]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[rfp]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/archives/2008/01/22/you-are-not-programmer/</guid>
		<description><![CDATA[Occasionally, people ask me to create XHTML/CSS template based on provided .PSDs. Most of the time, such projects are pretty straight-forward &#8212; I tell the hourly rate and the estimated hours. The prospective client then accepts the offer or not. It could be zillion reasons why clients reject offers and I&#8217;m used to some neutral [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/maratz/1745445879/" title="Archives by years by maratz, on Flickr"><img src="http://farm3.static.flickr.com/2077/1745445879_90a66b7c85.jpg" width="420" alt="Archives by years" /></a></p>
<p>Occasionally, people ask me to create XHTML/CSS template based on provided .PSDs. Most of the time, such projects are pretty straight-forward &#8212; I tell the hourly rate and the estimated hours. The prospective client then accepts the offer or not.</p>
<p>It could be zillion reasons why clients reject offers and I&#8217;m used to some neutral (read: polite) arguments, like <q>&#8220;It exceeds our budget&#8221;</q> or something like that. However, today I received an interesting response:</p>
<blockquote><p>&#8220;You are a little-bit too expensive, XXX is an hourly rate for a programmer.&#8221;</p>
</blockquote>
<p>Funny, huh? Or sad?</p>
<p>Why on Earth would anyone compare client-side coding with programming. What is it that people (or just this particular client) think some cog of the same engine should be valued more than others?</p>
<p>Is it because the work of accessibility consultant, CSS coder, SEO engineer or usability expert is not something you can point your finger at? Or is it &#8216;cause people tend to care for web standards in a way of questionably increased initial exposure on endless, but completely irrelevant CSS showcase lists?&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2008/01/22/you-are-not-programmer/feed/</wfw:commentRss>
		<slash:comments>64</slash:comments>
		</item>
		<item>
		<title>Tag based advertising?</title>
		<link>http://www.maratz.com/blog/archives/2007/11/18/tag-based-advertising/</link>
		<comments>http://www.maratz.com/blog/archives/2007/11/18/tag-based-advertising/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 14:11:06 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>
		<category><![CDATA[entertainment]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/archives/2007/11/18/tag-based-advertising/</guid>
		<description><![CDATA[The power of folksonomy.]]></description>
			<content:encoded><![CDATA[<p> How is the tag based advertising done at <a href="http://www.coolinarika.com/">Coolinarika.com</a>?</p>
<ol>
<li>users are tagging recipes</li>
<li>advertiser reserves a desired set of tags</li>
<li>in this case, the <del>company</del> <ins datetime="2007-10-21T15:18:2--1:00">brand</ins> &#8220;Eva sardine&#8221; reserved the following tags: <cite>fish</cite>, <cite>shrimps</cite>, <cite>main course</cite>, <cite>sea food</cite>, <cite>sea</cite>, &#8230; <cite>eva</cite> (the name of the <del>company</del> <ins datetime="2007-10-21T15:18:2--1:00">brand</ins>)</li>
<li>if the recipe is tagged with some of those preselected tags, there is a relevant ad displayed.</li>
</ol>
<p>Clever, huh? But the most interesting part is the following <a href="http://njava.coolinarika.com/slike/prikazi/14398">edge case</a>.</p>
<p><strong>Update</strong>: &#8220;Eva sardine&#8221; is actually a brand, not a company. Spotted and pointed to by <a href="http://flickr.com/photos/lekke/">lekke</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2007/11/18/tag-based-advertising/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduce advanced options wisely</title>
		<link>http://www.maratz.com/blog/archives/2007/10/10/introduce-advanced-options-wisely/</link>
		<comments>http://www.maratz.com/blog/archives/2007/10/10/introduce-advanced-options-wisely/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 06:40:50 +0000</pubDate>
		<dc:creator>Marko Dugonjić</dc:creator>
				<category><![CDATA[coding/design]]></category>

		<guid isPermaLink="false">http://www.maratz.com/blog/archives/2007/10/10/introduce-advanced-options-wisely/</guid>
		<description><![CDATA[Advanced options are a side dish, not the main course.]]></description>
			<content:encoded><![CDATA[<p>The default options are the ones, that the majority of users understand well. With defaults designed to facilitate the basic tasks, <em>all</em> users will be able to start using web app right away.</p>
<p><strong>Advanced features only make sense if they increase the accuracy and reduce time spent on a task</strong>. Advanced options made up-front, without real demand from the user-base are often only something glossy and shiny. Inviting users to learn a feature which main purpose is to be a <em>cool widget</em> that differentiate the application from the others  &#8212; will fail for one very simple reason.</p>
<p>The kind of users who would appreciate such a feature are often anxiously seeking for the next gadget once the master the current one. In most cases, those visitors are not here for the <em>content</em>, but for the <em>context</em>, most notably the <em>coolness factor</em>. Unless the coolness itself is your product, you are probably not targeting those users.</p>
<p>Add advanced feature when you are absolutely sure you need it and after you have real user&#8217;s feedback.</p>
<p><strong>Advanced feature should be gently introduced once the user is familiar with the basic functionality</strong>. In desktop applications such advanced options are often hidden in the &#8216;settings&#8217; or &#8216;preferences&#8217; panel. In web application those could be placed somewhere in &#8216;my profile&#8217; area. However you decide to do it technically, don&#8217;t create the interface noise by polluting the content.</p>
<p>With well known web services, like <a href="http://www.amazon.com/">Amazon</a>, the extensive loyal user base is a good excuse to place an advanced feature right up-front. With a new project which need yet to prove its&#8217; credibility, one has to be careful not to reject valuable first comers by unnecessary complicated interface.</p>
<h3>Related reading</h3>
<ul>
<li><a href="http://www.useit.com/alertbox/">Alertbox</a>: <a href="http://www.useit.com/alertbox/features.html">Feature Richness</a></li>
<li><a href="http://www.goodexperience.com/blog/archives/cat_bestof.php">Good Experience Best-of</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maratz.com/blog/archives/2007/10/10/introduce-advanced-options-wisely/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
