<?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>reven</title>
	<atom:link href="http://reven.co.nz/feed" rel="self" type="application/rss+xml" />
	<link>http://reven.co.nz</link>
	<description>we take care of the web</description>
	<lastBuildDate>Tue, 18 Oct 2011 00:24:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HTML5, CSS3 and Modernizr</title>
		<link>http://reven.co.nz/post/html5-css3-and-modernizr</link>
		<comments>http://reven.co.nz/post/html5-css3-and-modernizr#comments</comments>
		<pubDate>Sun, 24 Oct 2010 21:31:22 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Modernizr]]></category>

		<guid isPermaLink="false">http://reven.co.nz/?p=387</guid>
		<description><![CDATA[The newest internet buzz is HTML5 and CSS3.  But not all browsers support it, that&#8217;s where Modernizr comes in. HTML5 comes with a whole bunch of changes and updates to HTML4.  Most of them are just new elements to better &#8230; <a href="http://reven.co.nz/post/html5-css3-and-modernizr">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The newest internet buzz is HTML5 and CSS3.  But not all browsers support it, that&#8217;s where Modernizr comes in.</p>
<p><span id="more-387"></span></p>
<p>HTML5 comes with a whole bunch of changes and updates to HTML4.  Most of them are just new elements to better format your webpages, for example article, header, footer, nav etc.  But if Internet Explorer doesn&#8217;t know about an element, it simple will ignore it.  So if you place your menu inside a nav element, by default Internet Explorer will not show your menu.  But with a little piece of Javascript you can tell IE about these new element types and they will magically appear</p>
<pre class="brush: javascript">
document.createElement(&quot;nav&quot;);
</pre>
<p>Doing this for all the HTML5 element types would be tedious and you may miss a few, so by using <a href="http://www.modernizr.com/" target="_blank">modernizr</a> this is done for you.</p>
<p>So now you can begin to use HTML5 syntax and elements in your <em>web site designs</em>.</p>
<p>This is the <em>web page</em> skeleton code I&#8217;m currently using on <em>my web sites</em></p>
<pre class="brush: html">
&lt;!DOCTYPE html&gt;
&lt;!--[if lt IE 7 ]&gt; &lt;html class=&quot;ie ie6 lte9 lte8 lte7 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 7 ]&gt;    &lt;html class=&quot;ie ie7 lte9 lte8 lte7 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 8 ]&gt;    &lt;html class=&quot;ie ie8 lte9 lte8 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 9 ]&gt;    &lt;html class=&quot;ie ie9 lte9 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if (gt IE 9)|!(IE)]&gt;&lt;!--&gt; &lt;html class=&quot;notie no-js&quot;&gt; &lt;!--&lt;![endif]--&gt;
	&lt;head&gt;
		&lt;title&gt;Page Title&lt;/title&gt;
		&lt;script src=&quot;modernizr.js&quot;&gt;&lt;/script&gt;
		&lt;script src=&quot;http://code.jquery.com/jquery-1.4.3.min.js&quot;&gt;&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div id=&quot;wrapper&quot;&gt;
			&lt;header&gt;
				Site Name
				&lt;nav&gt;
					&lt;ul id=&quot;menu&quot;&gt;&lt;/ul&gt;
				&lt;/nav&gt;
			&lt;/header&gt;
			&lt;div id=&quot;main&quot;&gt;
				&lt;aside id=&quot;leftcontent&quot;&gt;
					left content, eg menu
				&lt;/aside&gt;
				&lt;div id=&quot;content&quot;&gt;
					the main site content
				&lt;/div&gt;
			&lt;/div&gt;
			&lt;footer&gt;
				Copyright information
			&lt;/footer&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>You&#8217;ll notice I&#8217;m still using div elements, you will still need them.  But I&#8217;m using aside, footer, header, nav where I can.  This will help <em>Search Engine Optimisation (SEO)</em> as it will structure your content better and <em>search bots</em> will better understand it.  You may also notice I&#8217;m still using a ul for the menu inside the nav, this is because nav is basically just the container, you still need the ul to list your menu items.  Also I&#8217;m using <a href="http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/" target="_blank">Paul Irish&#8217;s trick</a> to tell my CSS if the client is IE and if so what version it is, this removes the need for CSS hacks and will always work even if Javascript is disabled.  The &#8220;no-js&#8221; class is the default class you add for modernizr, which will be removed once it&#8217;s run.  It basically lets your CSS know if Javascript is disabled in the browser, and if it is you may format your document differently.</p>
<p>Modernizr won&#8217;t magically make a web browser support the new elements like video or canvas, but it will add classes to your document html tag so you can easily tell what works and what doesn&#8217;t work.  This is really helpful in your CSS and Javascript.  You can create custom rules for supported or non-supported features.  Modernizr also will detect if the browser supports most of the CSS3 features.  For example here is what your head may look like after modernizr has run.</p>
<pre class="brush: html">
&lt;html class=&quot;notie js canvas canvastext geolocation crosswindowmessaging no-websqldatabase no-indexeddb hashchange no-historymanagement draganddrop no-websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow opacity no-cssanimations csscolumns cssgradients no-cssreflections csstransforms no-csstransforms3d no-csstransitions  video audio localstorage sessionstorage webworkers applicationcache svg no-smil svgclippaths fontface&quot;&gt;
	&lt;head&gt;
	&lt;/head&gt;
	&lt;body&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>As you can see this particular browser supports canvas, geolocation, border radius, box shadow, opacity, video, RGBA and it does not support css transitions, 3d transforms and reflections among others.   These are extremely helpful to your CSS and your Javascript since all you need to do is check if the class is added to the html element to see if a feature you want to use is supported.  </p>
<p>So in your CSS you may have</p>
<pre class="brush: css">
.multiplebgs div p {
  /* properties for browsers that
     support multiple backgrounds */
}
.no-multiplebgs div p {
  /* optional fallback properties
     for browsers that don&#039;t */
}
</pre>
<p>And in your Javascript you may have</p>
<pre class="brush: javascript">
if($(&quot;html.canvas&quot;)) {
// do something with a canvas
} else {
// fallback to another method of drawing
}
</pre>
<p>Like I said, modernizr doesn&#8217;t magically make a browser support HTML5 or CSS3, but it will make a browser render most of the elements (it won&#8217;t do canvas or video etc) and it will help you test in your CSS and Javascript if a feature is available in the browser.  </p>
<p>The only problem I have come across with modernizr, is when it&#8217;s working out if fonts are supported, it will make my webpage about 100px taller and my bottom background doesn&#8217;t stretch for a few seconds, once that is done, the document is shrunk again and my website looks fine.  Just a small problem.</p>
<p>For a 5KB download you really should start using this in your <em>web site designs</em> as the benefits clearly out way the small download.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/html5-css3-and-modernizr/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Do more with LESS</title>
		<link>http://reven.co.nz/post/do-more-with-less</link>
		<comments>http://reven.co.nz/post/do-more-with-less#comments</comments>
		<pubDate>Wed, 20 Oct 2010 05:57:58 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[LESS]]></category>

		<guid isPermaLink="false">http://reven.co.nz/?p=364</guid>
		<description><![CDATA[LESS extends CSS with variables, mixins, methods and nested rules. In short, it makes CSS a lot easier to work with, and speeds up your web design. CSS is a neat little language, but its pretty basic, and is missing &#8230; <a href="http://reven.co.nz/post/do-more-with-less">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>LESS extends CSS with variables, mixins, methods and nested rules.  In short, it makes CSS a lot easier to work with, and speeds up your <em>web design</em>.</p>
<p><span id="more-364"></span><br />
CSS is a neat little language, but its pretty basic, and is missing a lot.  With browsers using different syntax for selectors, you often find yourself repeating code, for example</p>
<pre class="brush: css">
.roundedelement
{
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius:5px;
    -khtml-border-radius:5px;
}
.otherroundedelement
{
    border-radius: 10px;
    -moz-border-radius: 10px;
    -webkit-border-radius:10px;
    -khtml-border-radius:10px;
}
</pre>
<h2>Mixins</h2>
<p>Each time you want to add a border radius to an element, you have to specify all variations for maximum browser support.  But with <a href="http://lesscss.org/" target="_blank">LESS</a> you can create a mixin to do this for you.</p>
<pre class="brush: css">
.rounded_corners(@borderradius: 5px)
{
    border-radius: @borderradius;
    -moz-border-radius: @borderradius;
    -webkit-border-radius:@borderradius;
    -khtml-border-radius:@borderradius;
}
.roundedelement
{
    .rounded_corners;
}
.otherroundedelement
{
    .rounded_corners(10px);
}
</pre>
<p>So we have basically added a method &#8220;rounded_corners&#8221; with a default radius of &#8220;5px&#8221; which we can then use by calling &#8220;.rounded_corners&#8221;.  No repeating the border radius code.  If that was the only feature, that would be enough of a reason to use LESS.</p>
<h2>Variables</h2>
<p>Variables are simply variables you can use in your LESS files, for example</p>
<pre class="brush: css">
@pageWidth = 720px;
.main
{
    width: @pageWidth;
}
</pre>
<h2>Nested Rules</h2>
<p>I really like this feature, it gives more structure to your css.  But you must be careful, if you overuse it you risk creating slow css selectors.  Which will have a big performance impact on your web site.  So remember when you are <em>designing a website</em> not to over use this, or make deeply nested rules.</p>
<pre class="brush: css">
#header
{
    a
    {
        color:red;
        :hover
        {
            color:orange;
        }
    }
}
#footer
{
    .copyright
    {
        a
        {
            color:#d3d3d3;
            text-decoration:none;
            :hover
            {
                color:#fff;
                text-decoration:underline;
            }
        }
    }
}
</pre>
<p>Which you can easily see groups things a lot better, and you don&#8217;t have to create long rules like</p>
<pre class="brush: css">
#footer .copyright a
{
    color:#d3d3d3;
    text-decoration:none;
}
#footer .copyright a:hover
{
    color:#fff;
    text-decoration:underline;
}
</pre>
<p>I found using nested rules I was able to simplify my rules and remove some redundant and duplicate ones.  Being able to easily add :hover to the nested rule is a really neat feature.</p>
<h2>Operations</h2>
<p>This feature is nice, but not one I would use often.   But the fact you can do operations on colours makes it useful.  You can easily create a colour scheme from a single theme colour.</p>
<pre class="brush: css">
@basecolor = #ff9900;
.main
{
    color:@basecolor * 3;
    border: 1px solid @basecolor * 2;
    background-color: (@basecolor + #333) * 1.5;
}
</pre>
<p>As you can see the operations can be quite complex, but not something you would use on a daily basis.</p>
<h2>Getting LESS</h2>
<p>There are a few ways you can start using this on your web sites:</p>
<ol>
<li>Compile your LESS files in production and deploying the compiled .css file
<ul>
<li>Solutions
<ul>
<li><a href="http://lesscss.org/" target="_blank">less</a> the homepage for LESS.  Download the offical Ruby gem from here.</li>
<li><a href="http://incident57.com/less/" target="_blank">less.app</a> a Mac OS X application for compiling your LESS files.</li>
</ul>
</li>
<li>Pros
<ul>
<li>Quickest delivery to client since it is already precompiled.</li>
<li>No need to install any extra software on server.</li>
<li>Guaranteed to produced desired CSS since testing will be done before deployment.</li>
</ul>
</li>
<li>Cons
<ul>
<li>You may run into problems update the file, what if someone changes the .css file without changing the master LESS file?  All those changes will be lost when you recompile.</li>
<li>Each change needs a manual recompile and deploy.</li>
</ul>
</li>
</ul>
</li>
<li>Compile on the server side
<ul>
<li>Solutions
<ul>
<li><a href="http://leafo.net/lessphp/" target="_blank">lessphp</a> a PHP port of the LESS engine as a single includable class.  This is the one I use <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://www.phpclasses.org/package/6482-PHP-Parse-and-process-Leaner-CSS-files.html#download" target="_blank">LESS.php</a> a PHP port of the LESS engine, split into 3 different files.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-less/" target="_blank">WP-LESS</a> a WordPress plugin for LESS.</li>
</ul>
</li>
<li>Pros
<ul>
<li>Easy to update and maintain, since there are no CSS files that may mistakenly be updated.</li>
<li>Quick delivery, with caching after the first compile of the LESS it will be just as quick as the precompiled solution.</li>
</ul>
</li>
<li>Cons
<ul>
<li>Requires software on the server, or code behind to do the compiling.</li>
<li>LESS might be incorrectly compiled and produced an invalid CSS file.</li>
</ul>
</li>
</ul>
</li>
<li>Compile on the client side
<ul>
<li>Solutions
<ul>
<li><a href="http://github.com/cloudhead/less.js" target="_blank">LESS.js</a> is a Javascript port of the LESS engine.</li>
</ul>
</li>
<li>Pros
<ul>
<li>Easy to update and maintain, since there are no CSS files that may mistakenly be updated.</li>
<li>Nothing required on the server, so will work on any host.</li>
</ul>
</li>
<li>Cons
<ul>
<li>Slowest solution, as the client needs to first download the LESS files and then compile on their machine in Javascript</li>
<li>Can&#8217;t guarantee compiled CSS will be expected CSS, unless you test every single browser under every single environment.</li>
<li>Dependent on Javascript, so if Javascript is disabled on the client your website won&#8217;t be rendered with CSS <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
</li>
</ul>
</li>
</ol>
<p>My favourite method is 2, compiling on server side, with caching to maximise speed.  I&#8217;ve implemented a custom WordPress plugin using lessphp to cache and compile my LESS code on the fly, only recompiling when a change to a LESS file is detected.  Also I combine all my LESS files into one, before compiling, and I have a global.less file which contains my main functions and variables.</p>
<p>In reality when your are designing a web site you might find yourself at times writing more code using LESS, but you will be repeating yourself less.</p>
<p>Go try it out, I&#8217;ve started using LESS in all my <em>web development</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/do-more-with-less/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Mobile Alpha Review</title>
		<link>http://reven.co.nz/post/jquery-mobile-alpha-review</link>
		<comments>http://reven.co.nz/post/jquery-mobile-alpha-review#comments</comments>
		<pubDate>Mon, 18 Oct 2010 05:07:24 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">https://reven.co.nz/?p=329</guid>
		<description><![CDATA[jQuery Mobile Alpha was released last week, and I just had to have a play. In short, it&#8217;s really amazing. I eagerly awaiting this release, in fact I was checking jQueryMobile.com every hour to see if it was online . &#8230; <a href="http://reven.co.nz/post/jquery-mobile-alpha-review">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>jQuery Mobile Alpha was released last week, and I just had to have a play. In short, it&#8217;s really amazing.</p>
<p><span id="more-329"></span></p>
<p>I eagerly awaiting this release, in fact I was checking <a href="http://jquerymobile.com" target="_blank">jQueryMobile.com</a> every hour to see if it was online <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . When I finally saw it online, I just had to play with it.  It&#8217;s very similar to <a href="http://jqtouch.com" target="_blank">jqTouch</a>, some parts are actually based on the work done in jqTouch, which I&#8217;ve used before, but a lot easier too use.</p>
<p>First, you don&#8217;t need to use any jQuery to use it.  It&#8217;s all based on the data attribute. For example to make a toolbar, all you need to do is create a div with the attribute data-role=&#8221;header&#8221;.</p>
<pre class="brush: html">
&lt;div data-type=&quot;header&quot;&gt;
    ...
&lt;/div&gt;
</pre>
<p>That&#8217;s it.  No jQuery anywhere.  That is nice, and simple, really simple.</p>
<p>To start using it all you need to do is include the CDN hosted JavaScript and CSS files. Remember you are creating a HTML5 document as well, so your header should look like this</p>
<pre class="brush: html">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
	&lt;title&gt;Page Title&lt;/title&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css&quot; /&gt;
	&lt;script src=&quot;http://code.jquery.com/jquery-1.4.3.min.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
</pre>
<p>The base HTML code you need to create your page is</p>
<pre class="brush: html">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
	&lt;title&gt;Page Title&lt;/title&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css&quot; /&gt;
	&lt;script src=&quot;http://code.jquery.com/jquery-1.4.3.min.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div data-role=&quot;page&quot;&gt;
		&lt;div data-role=&quot;header&quot;&gt;
			&lt;h1&gt;Page Title&lt;/h1&gt;
		&lt;/div&gt;&lt;!-- /header --&gt;
		&lt;div data-role=&quot;content&quot;&gt;
			&lt;p&gt;Page content goes here.&lt;/p&gt;
		&lt;/div&gt;&lt;!-- /content --&gt;
		&lt;div data-role=&quot;footer&quot;&gt;
			&lt;h4&gt;Page Footer&lt;/h4&gt;
		&lt;/div&gt;&lt;!-- /header --&gt;
	&lt;/div&gt;&lt;!-- /page --&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Which will produce a basic web page you can work from.</p>
<p><a href="http://reven.co.nz/post/jquery-mobile-alpha-review/skeleton-2" rel="attachment wp-att-347"><img src="http://reven.co.nz/wp-content/uploads/2010/10/skeleton1.jpg" alt="Basic Layout" title="skeleton" width="539" height="326" class="alignnone size-full wp-image-347" /></a></p>
<p>As you can see so far, its fairly basic and empty. But It doesn&#8217;t take a lot to bring it to life.</p>
<pre class="brush: html">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
	&lt;title&gt;Page Title&lt;/title&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css&quot; /&gt;
	&lt;script src=&quot;http://code.jquery.com/jquery-1.4.3.min.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div data-role=&quot;page&quot;&gt;
		&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;b&quot;&gt;
			&lt;a href=&quot;#&quot; data-icon=&quot;delete&quot; data-theme=&quot;b&quot;&gt;Cancel&lt;/a&gt;
			&lt;h1&gt;Super Heroes&lt;/h1&gt;
			&lt;a href=&quot;#&quot; data-icon=&quot;check&quot; data-theme=&quot;b&quot;&gt;Save&lt;/a&gt;
		&lt;/div&gt;&lt;!-- /header --&gt;
		&lt;div data-role=&quot;content&quot;&gt;
			&lt;ul data-role=&quot;listview&quot; data-theme=&quot;c&quot;&gt;
				&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Batman&lt;/a&gt;&lt;span class=&quot;ui-li-count&quot;&gt;12&lt;/span&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Superman&lt;/a&gt;&lt;span class=&quot;ui-li-count&quot;&gt;2&lt;/span&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Wonder Woman&lt;/a&gt;&lt;span class=&quot;ui-li-count&quot;&gt;6&lt;/span&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Robin&lt;/a&gt;&lt;span class=&quot;ui-li-count&quot;&gt;12&lt;/span&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Flash&lt;/a&gt;&lt;span class=&quot;ui-li-count&quot;&gt;2&lt;/span&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Green Lantern&lt;/a&gt;&lt;span class=&quot;ui-li-count&quot;&gt;6&lt;/span&gt;&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/div&gt;&lt;!-- /content --&gt;
		&lt;div data-role=&quot;footer&quot; class=&quot;ui-bar&quot;&gt;
			&lt;a href=&quot;#&quot; data-role=&quot;button&quot; data-icon=&quot;delete&quot;&gt;Remove&lt;/a&gt;
			&lt;a href=&quot;#&quot; data-role=&quot;button&quot; data-icon=&quot;plus&quot;&gt;Add&lt;/a&gt;
			&lt;a href=&quot;#&quot; data-role=&quot;button&quot; data-icon=&quot;arrow-u&quot;&gt;Up&lt;/a&gt;
			&lt;a href=&quot;#&quot; data-role=&quot;button&quot; data-icon=&quot;arrow-d&quot;&gt;Down&lt;/a&gt;
		&lt;/div&gt;&lt;!-- /footer --&gt;
	&lt;/div&gt;&lt;!-- /page --&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Which will create a basic list with a count bubble and buttons in the header and footer.<br />
<a href="http://reven.co.nz/post/jquery-mobile-alpha-review/list-2" rel="attachment wp-att-348"><img src="http://reven.co.nz/wp-content/uploads/2010/10/list1.jpg" alt="Basic List" title="list" width="539" height="442" class="alignnone size-full wp-image-348" /></a></p>
<p>And with a little bit more work, it took me about 30 minutes to whip this up (and that included learning time, so once skilled this could take you less than 10 minutes).</p>
<pre class="brush: html">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
	&lt;title&gt;Demo jQuery Mobile Mail App&lt;/title&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css&quot; /&gt;
	&lt;script src=&quot;http://code.jquery.com/jquery-1.4.3.min.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt; 

&lt;body&gt; 

&lt;!-- Start of first page --&gt;
&lt;div data-role=&quot;page&quot; id=&quot;foo&quot;&gt;

	&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-nobackbtn=&quot;true&quot;&gt;
		&lt;h1 style=&quot;text-align:left;margin-left:20px;&quot;&gt;Demo jQuery Mobile Mail App&lt;/h1&gt;
		&lt;div style=&quot;width:550px;position:absolute;right:20px;top:4px&quot;&gt;
		&lt;a href=&quot;#&quot; data-icon=&quot;new&quot;&gt;Compose Mail&lt;/a&gt;
		&lt;a href=&quot;index.html&quot; data-icon=&quot;refresh&quot;&gt;Refresh&lt;/a&gt;
		&lt;a href=&quot;index.html&quot; data-icon=&quot;gear&quot;&gt;Settings&lt;/a&gt;
		&lt;div style=&quot;width:220px;float:right;margin-right:10px;&quot;&gt;
			&lt;input type=&quot;search&quot; name=&quot;password&quot; id=&quot;search&quot; value=&quot;&quot; /&gt;
		&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;&lt;!-- /header --&gt;

		&lt;div class=&quot;ui-grid-a&quot; style=&quot;position:relative&quot;&gt;
			&lt;div style=&quot;position:absolute;left:0;width:20%;&quot; class=&quot;ui-block-a&quot;&gt;
				&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;b&quot;&gt;
					&lt;h1 style=&quot;margin-left:10px;margin-right:10px&quot;&gt;Folders&lt;/h1&gt;
				&lt;/div&gt;
				&lt;div data-role=&quot;content&quot;&gt;
					&lt;ul data-role=&quot;listview&quot; data-theme=&quot;c&quot;&gt;
						&lt;li&gt;&lt;a href=&quot;index.html&quot;&gt;Inbox&lt;/a&gt; &lt;span class=&quot;ui-li-count&quot;&gt;12&lt;/span&gt;&lt;/li&gt;
						&lt;li&gt;&lt;a href=&quot;index.html&quot;&gt;Outbox&lt;/a&gt; &lt;span class=&quot;ui-li-count&quot;&gt;0&lt;/span&gt;&lt;/li&gt;
						&lt;li&gt;&lt;a href=&quot;index.html&quot;&gt;Drafts&lt;/a&gt; &lt;span class=&quot;ui-li-count&quot;&gt;4&lt;/span&gt;&lt;/li&gt;
						&lt;li&gt;&lt;a href=&quot;index.html&quot;&gt;Sent&lt;/a&gt; &lt;span class=&quot;ui-li-count&quot;&gt;328&lt;/span&gt;&lt;/li&gt;
						&lt;li&gt;&lt;a href=&quot;index.html&quot;&gt;Trash&lt;/a&gt; &lt;span class=&quot;ui-li-count&quot;&gt;62&lt;/span&gt;&lt;/li&gt;
					&lt;/ul&gt;
				&lt;/div&gt;
			&lt;/div&gt;
			&lt;div class=&quot;ui-block-b&quot; style=&quot;margin-left:20%;width:80%;border-left:1px solid #c6c6c6&quot;&gt;
				&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;b&quot;&gt;
					&lt;div data-role=&quot;controlgroup&quot; data-type=&quot;horizontal&quot; style=&quot;position:absolute;top:0px;left:10px;&quot;&gt;
						&lt;a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;back&quot; data-iconpos=&quot;&quot; title=&quot;Reply&quot; data-theme=&quot;b&quot;&gt;
							Reply
						&lt;/a&gt;
						&lt;a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;forward&quot; data-iconpos=&quot;&quot; title=&quot;Forward&quot; data-theme=&quot;b&quot;&gt;
							Forward
						&lt;/a&gt;
						&lt;a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;delete&quot; data-iconpos=&quot;&quot; title=&quot;Delete&quot; data-theme=&quot;b&quot;&gt;
							Delete
						&lt;/a&gt;
					&lt;/div&gt;
					&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
					&lt;span style=&quot;position:absolute;top:10px;right:70px;text-align:right;width:200px&quot;&gt;Message 1 of 12&lt;/span&gt;
					&lt;div data-role=&quot;controlgroup&quot; data-type=&quot;horizontal&quot; style=&quot;position:absolute;top:0px;right:10px;&quot;&gt;
						&lt;a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;arrow-l&quot; data-iconpos=&quot;notext&quot; title=&quot;Up&quot; data-theme=&quot;b&quot;&gt;
							Previous
						&lt;/a&gt;
						&lt;a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;arrow-r&quot; data-iconpos=&quot;notext&quot; title=&quot;Down&quot; data-theme=&quot;b&quot;&gt;
							Next
						&lt;/a&gt;
					&lt;/div&gt;
				&lt;/div&gt;
					&lt;div data-role=&quot;header&quot; data-theme=&quot;c&quot;&gt;
						&lt;h2 style=&quot;text-align:left;margin-left:20px;font-size:1.3em;&quot;&gt;Message title&lt;/h2&gt;
						&lt;span style=&quot;font-weight:bold;margin-left:20px;font-size:0.9em;&quot;&gt;October 18, 2010&lt;/span&gt;
						&lt;span style=&quot;font-size:0.9em;&quot;&gt;11:31 a.m.&lt;/span&gt;
					&lt;/div&gt;
					&lt;div data-role=&quot;content&quot;&gt;
					&lt;p&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#039;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.&lt;/p&gt;

					&lt;p&gt;It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.&lt;/p&gt;

					&lt;p&gt;Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of &quot;de Finibus Bonorum et Malorum&quot; (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, &quot;Lorem ipsum dolor sit amet..&quot;, comes from a line in section 1.10.32.&lt;/p&gt;
					&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;&lt;!-- /grid-a --&gt;

	&lt;div data-role=&quot;footer&quot;&gt;
		&lt;h2&gt;Sample web app, nothing works but looks pretty good <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &lt;/h2&gt;
	&lt;/div&gt;&lt;!-- /header --&gt;
&lt;/div&gt;&lt;!-- /page --&gt;

&lt;!-- Start of second page --&gt;
&lt;div data-role=&quot;page&quot; id=&quot;bar&quot;&gt;

	&lt;div data-role=&quot;header&quot;&gt;
		&lt;h1&gt;Bar&lt;/h1&gt;
	&lt;/div&gt;&lt;!-- /header --&gt;

	&lt;div data-role=&quot;content&quot;&gt;
		&lt;p&gt;I&#039;m first in the source order so I&#039;m shown as the page.&lt;/p&gt;
		&lt;p&gt;&lt;a href=&quot;#foo&quot; data-transition=&quot;slide&quot;&gt;Back to foo&lt;/a&gt;&lt;/p&gt;
	&lt;/div&gt;&lt;!-- /content --&gt;

	&lt;div data-role=&quot;footer&quot;&gt;
		&lt;h4&gt;Page Footer&lt;/h4&gt;
	&lt;/div&gt;&lt;!-- /header --&gt;
&lt;/div&gt;&lt;!-- /page --&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><a href="http://reven.co.nz/post/jquery-mobile-alpha-review/jquerymobilewebmail-2" rel="attachment wp-att-349"><img src="http://reven.co.nz/wp-content/uploads/2010/10/jquerymobilewebmail1-e1287390703632.jpg" alt="jQuery Mobile Web Mail" title="jquerymobilewebmail" width="559" height="447" class="alignnone size-full wp-image-349" /></a></p>
<p>Also the alpha comes with 4 themes, a, b, c, d. Each theme looks the same, exact the colour scheme is different. And all you have to do to use these themes is to add attribute to your html element called data-theme. For example</p>
<pre class="brush: html">
&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;a&quot;&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;delete&quot; data-theme=&quot;a&quot;&gt;Cancel&lt;/a&gt;
    &lt;h1&gt;Edit Contact&lt;/h1&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;check&quot; data-theme=&quot;a&quot;&gt;Save&lt;/a&gt;
&lt;/div&gt;
&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;b&quot;&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;delete&quot; data-theme=&quot;b&quot;&gt;Cancel&lt;/a&gt;
    &lt;h1&gt;Edit Contact&lt;/h1&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;check&quot; data-theme=&quot;b&quot;&gt;Save&lt;/a&gt;
&lt;/div&gt;
&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;c&quot;&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;delete&quot; data-theme=&quot;c&quot;&gt;Cancel&lt;/a&gt;
    &lt;h1&gt;Edit Contact&lt;/h1&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;check&quot; data-theme=&quot;c&quot;&gt;Save&lt;/a&gt;
&lt;/div&gt;
&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;d&quot;&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;delete&quot; data-theme=&quot;d&quot;&gt;Cancel&lt;/a&gt;
    &lt;h1&gt;Edit Contact&lt;/h1&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;check&quot; data-theme=&quot;d&quot;&gt;Save&lt;/a&gt;
&lt;/div&gt;
</pre>
<p>Will produce the following<br />
<a href="http://reven.co.nz/post/jquery-mobile-alpha-review/themes-2" rel="attachment wp-att-350"><img src="http://reven.co.nz/wp-content/uploads/2010/10/themes1.jpg" alt="Themes" title="themes" width="539" height="261" class="alignnone size-full wp-image-350" /></a></p>
<p>And you can easily mix and match the themes between elements</p>
<pre class="brush: html">
&lt;div data-role=&quot;header&quot; data-position=&quot;inline&quot; data-theme=&quot;b&quot;&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;delete&quot; data-theme=&quot;a&quot;&gt;Cancel&lt;/a&gt;
    &lt;h1&gt;Edit Contact&lt;/h1&gt;
    &lt;a href=&quot;#&quot; data-icon=&quot;check&quot; data-theme=&quot;c&quot;&gt;Save&lt;/a&gt;
&lt;/div&gt;
</pre>
<p>Which results in<br />
<a href="http://reven.co.nz/post/jquery-mobile-alpha-review/themesmixed-2" rel="attachment wp-att-351"><img src="http://reven.co.nz/wp-content/uploads/2010/10/themesmixed1.jpg" alt="Themes Mixed" title="themesmixed" width="539" height="261" class="alignnone size-full wp-image-351" /></a></p>
<p>So although its the first alpha release, its really polished and I&#8217;m really impressed by it.  It&#8217;s missing too many key components for me to start using it, but I suspect the beta will be complete enough to start using.  </p>
<p>Can&#8217;t wait too see what they bring us next.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/jquery-mobile-alpha-review/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Migrating to WordPress</title>
		<link>http://reven.co.nz/post/migrating-to-wordpress</link>
		<comments>http://reven.co.nz/post/migrating-to-wordpress#comments</comments>
		<pubDate>Sun, 17 Oct 2010 03:43:46 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://reven.co.nz/?p=261</guid>
		<description><![CDATA[A recap of my trials and tribulations, troubles with tribbles?, moving reven.co.nz to a WordPress site. I decided to switch from a custom written website based on CodeIgniter, which I love and is my favourite PHP framework, to a full &#8230; <a href="http://reven.co.nz/post/migrating-to-wordpress">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A recap of my trials and tribulations, troubles with tribbles?, moving reven.co.nz to a WordPress site.</p>
<p><span id="more-261"></span></p>
<p>I decided to switch from a custom written website based on CodeIgniter, which I love and is my favourite PHP framework, to a full CMS.  I was having too much trouble trying to get my custom blog API working with all the editing software that was out there.</p>
<p>First I had issues with MarsEdit, and I basically had to trick it into thinking my site was a WordPress site, which it wasn’t at the time.  Then I had issues with a Blog writer iPad app, it just wouldn’t work.  For the life of me I just kept having issues with Code blocks in the my blog posts, formatting was forever screwed, and I was writing too much backend code to fix the editor issues.</p>
<p>So I began looking for a PHP CMS, Content Management Systems.</p>
<ol>
<li>Joomla<br />
I had used Joomla a few years ago for reven.co.nz and I was happy with it, integrated forums, easy editing, and back then version 1.5 was in beta, I think this was back in 2006/2007.  So I was excited to see what they had been doing in the past few years.  And to my surprise, all they seem to have done was release 1.5, and stopped.  Sure it might be really good, but it hasn’t progressed, this gave me the impression it lost its driving force, and future updates would be slow and far between.</li>
<li>WordPress<br />
I wasn’t keen on WordPress at first, I wasn’t impressed with the file system, too many files in the root folder, very little folder structuring going on.  And the default theme is ugly.  Also I found it hard to think of it as a CMS, it’s always been a Blog, so I played with it a little and moved on.</li>
<li>Drupal<br />
Now I was impressed with Drupal, it was a mature product, at version 6 with 7 coming along nicely.  Nice admin interface and slick features.  I spent a few weeks researching this and trying it out.  But version 6 was using an old version of jQuery and I didn’t want to use alpha software, most plugins didn’t work with it.  I was really interesting in the multisite feature, where you can run many sites off the one install of Drupal, but this wasn’t ready for real use.  Too many issues to actual sell this onto clients.  I do have custom CMS solution that is a multisite CMS, where all the sites run from the one install/database, and each site is basically a theme.  I wanted that. Sadly Drupal multisite wasn’t this.</li>
<li>ExpressionEngine<br />
This looked slick, written in CodeIgniter, great interface, regular updates, multisite which looked like it provided exactly what I wanted.  But the price, boy the price is expensive.  If I switched too this I would have to raise my rates to included licenses for ExpressionEngine.  As I wanted to learn one CMS, learn it really well, and be able to sell sites built on that so my clients could have an affordable and fully functional CMS.</li>
</ol>
<p>I thought all was lost, I couldn’t find anything I wanted, and was about to give up.  But I decided to give WordPress another shot, really try it out as a CMS.</p>
<p>I had some really strict requirements</p>
<ol>
<li>It had to be fast<br />
I wanted all my performance tweaks I had learnt over the years to be available.  That meant combing and minify the JavaScript and CSS easily.  I couldn’t find any plugin that did this how I liked it, lots of security issues with the plugins available.  So I wrote a plugin, called it Jay Garrick (the original Flash, as my plugin made your website fast <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).  And boom goes the dynamite, all my CSS and JavaScript files combined and minified on the fly into 2 files.</li>
<li>Look the same as CodeIgniter Site<br />
I wanted it to look the same as my current site, I love my site design, with the animated backgrounds, day/sunset/sunrise/night themes.  The animated “me” on the services page.  So I had to write a WordPress theme.  Made the theme HTML5, still needs a few improvements here, added Paul Irish’s class trick to my head</p>
<pre class="brush: html">
&lt;!--[if lt IE 7 ]&gt; &lt;html class=&quot;ie ie6 lte9 lte8 lte7 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 7 ]&gt;    &lt;html class=&quot;ie ie7 lte9 lte8 lte7 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 8 ]&gt;    &lt;html class=&quot;ie ie8 lte9 lte8 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 9 ]&gt;    &lt;html class=&quot;ie ie9 lte9 no-js&quot;&gt; &lt;![endif]--&gt;
&lt;!--[if (gt IE 9)|!(IE)]&gt;&lt;!--&gt;&lt;html class=&quot;no-js&quot;&gt;&lt;!--&lt;![endif]--&gt;
</pre>
<p>Add some fancy CSS3 effects, make sure you checkout my site in IE9, Chrome, Safari or Firefox.</li>
<li>Downloads and Demos for Posts<br />
I wanted to easily attach downloads and demos to posts.  I often blog about code and jQuery plugins.  So I wanted to attach demo that you could launch and downloads for you too&#8230;. err download.  The downloads are done, but I’m still working on the demos, but I’m confident I can achieve this, just researching the best way to do it.  Any tips would be welcomed</li>
<li>SEOed<br />
I needed to make sure that the new site still had full Search Engine Optimization.  I spent a long time getting my on site SEO rank up to the 98th percentile and I didn’t want  to lose this.  As today, October 17th 2010, I have it in the 90th percentile.  So I need to do some more work, but it’s achievable.</li>
<li>jQuery<br />
I use a lot of jQuery, and I really don’t want to have to use an old version of it.  I must use the latest, and it must be served from a CDN.  On Drupal I couldn’t get it from a CDN.  CDNs, Content Delivery Networks, have huge site performance impact and take the hosting of commonly used libraries, like jQuery, off your site and onto theirs.  For example Google and Microsoft both host jQuery.  By using a CDN you can deliver the resource from a server usually much closer to the user than your host, and they are likely to have already downloaded the resource from a different website.  So they won’t have to download it again.</li>
</ol>
<p>After running WordPress through its paces, I found it met all my goals.  It’s a mature and open platform, with commercial backing, and get’s regular updates.  My only grip is the plugins, searching for them can be difficult and its hard to sort out the good ones from the crap.  But all and all I’m happy with it, and expect to see some plugins appearing on this blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/migrating-to-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Whatever happened to xmlTVNZ?</title>
		<link>http://reven.co.nz/post/whatever-happened-to-xmltvnz</link>
		<comments>http://reven.co.nz/post/whatever-happened-to-xmltvnz#comments</comments>
		<pubDate>Sun, 17 Oct 2010 03:01:15 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[HTPC]]></category>
		<category><![CDATA[xmlTVNZ]]></category>
		<category><![CDATA[EPG]]></category>

		<guid isPermaLink="false">http://reven.co.nz/?p=253</guid>
		<description><![CDATA[Wondering where xmlTVNZ has gone? What happened to reven.co.nz? I won’t go into all the gory details, but a long story short, I had to take xmlTVNZ down. Sky Television New Zealand went on a rampage and served everyone providing &#8230; <a href="http://reven.co.nz/post/whatever-happened-to-xmltvnz">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wondering where xmlTVNZ has gone? What happened to reven.co.nz?</p>
<p><span id="more-253"></span></p>
<p>I won’t go into all the gory details, but a long story short, I had to take xmlTVNZ down.  Sky Television New Zealand went on a rampage and served everyone providing a free EPG/TV Guide, and some who weren’t provide one at all (Sub from <a href="http://gbpvr.com/" target="_blank">GB-PVR</a>), a take down order.</p>
<p>At first I tried to fight them on this, stating that xmlTVNZ wasn’t actually breaking any terms and conditions and wasn’t doing anything illegal.  In fact it wasn’t even doing anything with www.skytv.co.nz.  But they kept coming back through their big scary lawyers saying we will take legal action against you if you don’t take it down.  So in the end, I tucked my tail between my legs and backed down.  At the end of the day, I couldn’t afford to pursue this, lawyers are expensive you know.  I was also 6 weeks away from getting married, which are also expensive.</p>
<p>xmlTVNZ days were always numbered, not because of a take down order, but because of Freeview, and the fact <a href="http://code.google.com/p/mheg2xmltv/" target="_blank">you can now just fetch the EPG directly from that</a>.  But if you’re a Mac user, you’re out of luck.</p>
<p>There was a <a href="http://www.geekzone.co.nz/forums.asp?forumid=84&amp;topicid=58727" target="_blank">lengthy discussion about it over at GeekZone</a>, and I received great support from the community.  So thanks for everyone who supported me over the years and helped out with feedback and bug testing, but xmlTVNZ is gone and it’s not coming back.  Well I won’t be supporting it, or developing it.  The source code was online for a couple of weeks at Google code, so a few people might still have it.</p>
<p>Thanks for coming.</p>
<p>P.S. If you need a web designer/developer, I’m available <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/whatever-happened-to-xmltvnz/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IE9 Beta Impressions</title>
		<link>http://reven.co.nz/post/ie9-beta-impressions-2</link>
		<comments>http://reven.co.nz/post/ie9-beta-impressions-2#comments</comments>
		<pubDate>Fri, 17 Sep 2010 07:54:53 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[IE9]]></category>

		<guid isPermaLink="false">http://johnandrews.co/?p=180</guid>
		<description><![CDATA[So I&#8217;ve been playing with IE9 Beta for a day now and thought I&#8217;d share my thoughts on it, what I like and dislike etc. So I&#8217;ve been playing with IE9 Beta for a day now and thought I&#8217;d share &#8230; <a href="http://reven.co.nz/post/ie9-beta-impressions-2">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been playing with IE9 Beta for a day now and thought I&#8217;d share my thoughts on it, what I like and dislike etc.</p>
<p><span id="more-180"></span></p>
<p>So I&#8217;ve been playing with IE9 Beta for a day now and thought I&#8217;d share my thoughts on it, what I like and dislike etc.</p>
<p>The first thing I noticed was the redesigned address bar and the tab location.  As a heavy tab user, the first thing I thought was there wasn&#8217;t much room for the tabs.  But <a href="http://blogs.msdn.com/b/ie/archive/2010/09/15/ie9-beta-available-for-download.aspx" target="_blank">according to Microsoft</a> 97% of IE sessions have fewer than 5 tabs open at any one time.  But you can shrink the address bar to give your tabs more room.</p>
<p>The new icon, IE loves to change it&#8217;s icon, is very toyish.  It looks like it&#8217;s trying to be web 2.0 but it just doesn&#8217;t look write in the Windows taskbar.  I don&#8217;t mind it by itself, but once it&#8217;s in that taskbar, it kind of blurs into the background and I find it hard to see.</p>
<p><a rel="attachment wp-att-186" href="http://johnandrews.co/post/ie9-beta-impressions-2/ieicon"><img class="alignnone size-full wp-image-186" title="ieicon" src="http://johnandrews.co/wp-content/uploads/2010/10/ieicon.jpg" alt="" width="369" height="49" /></a></p>
<p>CSS3 seems to be fairly well implement, but there are some key features missing including background gradients, which I use a lot.  Also I can&#8217;t get the gradient filter to work correctly for some reason, forcing IE9 users to download a gradient image for this effect on my website.</p>
<p>HTML5 seems to coming along but they don&#8217;t support the new form elements, only Opera do this, and if IE doesn&#8217;t support these this will hang up the web and these won&#8217;t be used for years.  But I suppose its better they leave these out than implement them poorly.</p>
<p>The ability to pin a webpage to your taskbar in Windows 7 is a really nice touch.  It also will take the colours from your favico and use those in the back/forward button.</p>
<p><a rel="attachment wp-att-187" href="http://johnandrews.co/post/ie9-beta-impressions-2/jumplists"><img class="size-full wp-image-187 alignleft" title="jumplists" src="http://johnandrews.co/wp-content/uploads/2010/10/jumplists.jpg" alt="" width="336" height="353" /></a></p>
<p><a rel="attachment wp-att-188" href="http://johnandrews.co/post/ie9-beta-impressions-2/mediabuttons"><img class="size-full wp-image-188 alignleft" title="mediabuttons" src="http://johnandrews.co/wp-content/uploads/2010/10/mediabuttons.jpg" alt="" width="332" height="270" /></a></p>
<p><a rel="attachment wp-att-184" href="http://johnandrews.co/post/ie9-beta-impressions-2/customchrome"><img class="alignnone size-full wp-image-184" title="customchrome" src="http://johnandrews.co/wp-content/uploads/2010/10/customchrome.jpg" alt="" width="707" height="344" /></a></p>
<p>You just have to make sure your favico has a 32&#215;32 or 48&#215;48 ico image otherwise your 16&#215;16 won&#8217;t look very good.</p>
<p>Speed wise it seems fast, on par with Chrome.  The <a href="http://ie.microsoft.com/testdrive/" target="_blank">tests over at Microsoft</a> really show off the performance gain of hardware acceleration.  But until all the other browsers start supporting this, I don&#8217;t think you will be seeing too many sites take advantage of this.  Firefox 4 Beta has implemented hardware acceleration and it is a lot faster than Chrome 6, but still a great deal behind IE9.</p>
<p>IE9 has a score of 95% on the <a href="http://acid3.acidtests.org/" target="_blank">ACID3 test</a>, which is good, but I am hoping the final gets 100%.</p>
<p><a rel="attachment wp-att-182" href="http://johnandrews.co/post/ie9-beta-impressions-2/acid3"><img class="alignnone size-full wp-image-182" title="acid3" src="http://johnandrews.co/wp-content/uploads/2010/10/acid3.jpg" alt="" width="588" height="355" /></a></p>
<p>Over at <a href="http://html5test.com" target="_blank">html5test.com</a> IE9 Beta 1 only got a 96 out of 300.  Chrome 6 on the over hand gets a 217 and Opera 10.6 gets 159.</p>
<p><a rel="attachment wp-att-185" href="http://johnandrews.co/post/ie9-beta-impressions-2/htmltest"><img class="alignnone size-full wp-image-185" title="htmltest" src="http://johnandrews.co/wp-content/uploads/2010/10/htmltest.jpg" alt="" width="412" height="306" /></a></p>
<p>My worst complaint is the alert popup, that appears on the bottom of the screen.  Its very subtle and most of the time I miss it and it takes me a while to realise IE is trying to tell me something.  Chrome also place this on the bottom, but its a Blue and animated, which makes it stand out.</p>
<p><a rel="attachment wp-att-183" href="http://johnandrews.co/post/ie9-beta-impressions-2/alert"><img class="alignnone size-full wp-image-183" title="alert" src="http://johnandrews.co/wp-content/uploads/2010/10/alert.jpg" alt="" width="839" height="114" /></a></p>
<p>But overall I&#8217;m impressed with IE9, it&#8217;s the best IE beta I&#8217;ve tried (IE7 and IE8 constantly crashed, IE9 hasn&#8217;t crashed once).  And I would recommend IE fans to upgrade to it now, really there is no reason not too.  Just hope they implement more CSS3 features into the final release.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/ie9-beta-impressions-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rewarding Modern Browsers</title>
		<link>http://reven.co.nz/post/rewarding-modern-browsers</link>
		<comments>http://reven.co.nz/post/rewarding-modern-browsers#comments</comments>
		<pubDate>Fri, 17 Sep 2010 06:55:07 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://johnandrews.co/?p=147</guid>
		<description><![CDATA[It takes a lot of work to make a web site look good/the same in every brower.  Most of the time it will look the same in Firefox, Safari, Chrome and Opera.  But IE is a problem. It takes a &#8230; <a href="http://reven.co.nz/post/rewarding-modern-browsers">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It takes a lot of work to make a web site look good/the same in every brower.  Most of the time it will look the same in Firefox, Safari, Chrome and Opera.  But IE is a problem.</p>
<p><span id="more-147"></span></p>
<p>It takes a lot of work to make a web site look good/the same in every browser.  Most of the time it will look the same in Firefox, Safari, Chrome, and some extent Opera.  But Internet Explorer is a problem, a real problem.  As web developers/designers or my new favourite term “devigner” we have all had to deal with the devil that is IE.  It has gotten better over the years, but it still can’t handle CSS3 (IE9 will change this, it’s just not clear yet by how much).</p>
<p>As it takes so much extra work to make a site work in IE, especially in the hated IE6, I have a proposal, let’s punish those little bastards (insert evil laugh).</p>
<p>This is what I’ve started doing, well from the different perspective, rewarding the users of modern browsers.  CSS3 brings us a whole slew of improvements, including background gradients, rounded corners, better selectors etc.  Combined with HTML5’s new elements the web is becoming more powerful.</p>
<p>So instead of requiring users to download a gradient background or a rounded corners image, use CSS3 backgrounds and border radius; instead of a javascript date picker, use the HTML5 date form input etc.  And only deliver the backup images and javascript if their browser can’t handle the jandal.  Your users will still be experiencing basically the same web site, our goal is to still try and make web sites look the same across browsers, but just make them faster in modern browsers.  Sites are already faster in modern browsers due to the improvements in the JavaScript engines, but this approach also improves the download time of a page.</p>
<p>This might seem passive aggressive, it is, but if users are experiencing a slower web they might be more inclined to upgrade.  People are stilling hanging onto IE6 with dear life, sure a lot of those are business users who can’t upgrade due to company policy, or they are people still using Windows XP who don’t know how to upgrade, but there are still quite a few people (20% of users in some countries) that are using IE6.</p>
<p>Imagine a world without IE, ok that’s not going to happen.  How about a world were IE isn’t the top browser, thats actually very likely, it keeps loosing ground to Chrome and Firefox.  This may be a reality in the next 5 years.  So as web developers/designers/devigners we should be doing all we can to speed up this process, it will make the web a better place.</p>
<p>The tools you can use to help with this I’ll cover in another blog post, but the primary one is a little JavaScript file by the name of Modernizr.  Also if they have JavaScript disabled just serve them the non-css3 version, punish those who turn JavaScript off as well, really there is no need to in a modern browser.</p>
<p>I’d be interested to hear your thoughts on this matter.﻿</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/rewarding-modern-browsers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NZ TechEd 2010 HTML5 and CSS3</title>
		<link>http://reven.co.nz/post/nz-teched-2010-html5-and-css3</link>
		<comments>http://reven.co.nz/post/nz-teched-2010-html5-and-css3#comments</comments>
		<pubDate>Fri, 03 Sep 2010 07:02:25 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[TechEd]]></category>

		<guid isPermaLink="false">http://johnandrews.co/?p=154</guid>
		<description><![CDATA[A quick overview of what I learnt at TechEd 2010 New Zealand and what I found interesting. Mostly around HTML5 and CSS with a few tips and tricks I picked up. This year was the first time I attended TechEd. &#8230; <a href="http://reven.co.nz/post/nz-teched-2010-html5-and-css3">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A quick overview of what I learnt at TechEd 2010 New Zealand and what I found interesting.<br />
Mostly around HTML5 and CSS with a few tips and tricks I picked up.</p>
<p><span id="more-154"></span>This year was the first time I attended TechEd. I loved it. Sure there were a few boring talks, but on a whole I learnt a lot, met some interesting people and got a bunch of free shirts <img src='http://reven.co.nz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>The most fun I had was during the &#8220;Future of Web Apps&#8221; panel. Basically since it was a panel and not a presentation, there were no slides, and no demos. So they decided to put Twitter up on the big screen. About 2 minutes into the Twitter fail whale appeared on screen. Big laugh.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-3-154">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-11" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/ashoe.jpg" title=" " rel="lightbox[set_3]" >
								<img title="ashoe" alt="ashoe" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_ashoe.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-12" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/failwhale.jpg" title=" " rel="lightbox[set_3]" >
								<img title="failwhale" alt="failwhale" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_failwhale.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-13" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/failwhale2.jpg" title=" " rel="lightbox[set_3]" >
								<img title="failwhale2" alt="failwhale2" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_failwhale2.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-14" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/ibrokeit.jpg" title=" " rel="lightbox[set_3]" >
								<img title="ibrokeit" alt="ibrokeit" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_ibrokeit.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-15" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/lookitsamac.jpg" title=" " rel="lightbox[set_3]" >
								<img title="lookitsamac" alt="lookitsamac" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_lookitsamac.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-16" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/microsoftsurface.jpg" title=" " rel="lightbox[set_3]" >
								<img title="microsoftsurface" alt="microsoftsurface" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_microsoftsurface.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-17" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/modelskytower.jpg" title=" " rel="lightbox[set_3]" >
								<img title="modelskytower" alt="modelskytower" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_modelskytower.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-18" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/techfest01.jpg" title=" " rel="lightbox[set_3]" >
								<img title="techfest01" alt="techfest01" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_techfest01.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-19" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/techfest02.jpg" title=" " rel="lightbox[set_3]" >
								<img title="techfest02" alt="techfest02" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_techfest02.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-20" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://reven.co.nz/wp-content/gallery/teched2010/techfest03.jpg" title=" " rel="lightbox[set_3]" >
								<img title="techfest03" alt="techfest03" src="http://reven.co.nz/wp-content/gallery/teched2010/thumbs/thumbs_techfest03.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p>Then they put up a Twitter client and followed #tenz (the TechEd hash tag). About 10 of us were twittering all together, and about 5 were tweeting jokes. Imagine 5 geeks trying to get a room of 300+ nerds laughing. It was actually really simple. A lot of Flash mocking. I kept mocking Silverlight and praising Apple, fan boy and all.</p>
<p>My favourite speaker was <a href="http://twitter.com/darren" target="_blank">Darren Wood</a>. He&#8217;s a self proclaimed &#8220;Standards Nerd&#8221;. Big supporter of HTML5 and CSS3, hence my like of him. He did a really good overview of whats new in HTML5 and CSS3 and how we can use it now. The key to it basically is a little JavaScript script (is that redundant?) called Modernizr. What Modernizr does it creates the elements for IE6 so the new HTML5 elements are displayed (IE6 will ignore any elements it doesn&#8217;t know and not show them), and it also adds classes to the &lt;html&gt; element of a document saying what this browser supports and doesn&#8217;t. For example</p>
<p>So with that you can then make your CSS show one thing if support and a fail safe if not. For example</p>
<pre lang="css">.multiplebgs div p{  /* properties for browsers which support multiple backgrounds */ }
.no-multiplebgs div p {  /* properties for browsers which don’t support multiple backgrounds */ }</pre>
<p>Also Darren talked about the new HTML5 inputs such as datetime, datetime-local, url, range, number, email etc.</p>
<p>The really useful ones will be datetime, number and range. As a datetime shows a Date Time picker and will correctly set the Time Zone, Range is a slider, Number is a spinner control. Email will be less useful since the validation error I&#8217;ve seen on this is extremely ugly. Currently only Opera and nightly builds of Webkit supports these. But with Modernizr you can do a simple check before creating your own jQuery controls.</p>
<pre lang="javascript">if (!Modernizr.inputtypes.date) {  createDatepicker(); }</pre>
<p>The new layout elements for HTML &lt;article&gt;, &lt;nav&gt;, &lt;aside&gt;, &lt;header&gt;, &lt;footer&gt; etc will come in use and give our web page more meaning. A great reduction of the &lt;div&gt; tag.</p>
<p>I plan to start implementing these into this site in the coming weeks, especially the HTML5 layout elements and Modernizr.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/nz-teched-2010-html5-and-css3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My “No Flash” Rant</title>
		<link>http://reven.co.nz/post/my-no-flash-rant</link>
		<comments>http://reven.co.nz/post/my-no-flash-rant#comments</comments>
		<pubDate>Tue, 08 Jun 2010 07:20:01 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://johnandrews.co/?p=165</guid>
		<description><![CDATA[This is my rant about why I don&#8217;t believe Flash should be used on the majority of websites and definitely not a means to add a &#8220;wow&#8221; factor. Ok so it&#8217;s time for me to do my &#8220;I hate Flash&#8221; &#8230; <a href="http://reven.co.nz/post/my-no-flash-rant">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is my rant about why I don&#8217;t believe Flash should be used on the majority of websites and definitely not a means to add a &#8220;wow&#8221; factor.</p>
<p><span id="more-165"></span>Ok so it&#8217;s time for me to do my &#8220;I hate Flash&#8221; rant.</p>
<p>Truth is, I don&#8217;t actually hate it. Flash does have it&#8217;s place. I do believe that HTML5 will replace it, but I know that won&#8217;t happen any time soon. So for now, its here, and it&#8217;s not going anywhere.</p>
<p>Its a great platform for videos on the web, e.g. YouTube (even though they now have a HTML5 player). It can be used to make some fantastic file upload controls.</p>
<p>But for the most part, you don&#8217;t actually need it. And more importantly you shouldn&#8217;t use it.</p>
<ol>
<li>Load Times.<br />
Flash needs to be completely downloaded before it will run, and people are still using dial up internet, and by using a large Flash animation as the main content of you webpage will likely drive off these potential customers. With HTML, CSS and JavaScript, which are all text files, they can be compressed and downloaded quickly loading your website much faster.</li>
<li>Printing with Flash.<br />
Most of the time you can&#8217;t print it. If you do want to print it, you need a &#8220;Print&#8221; button inside the Flash application. Breaking the browser standard Print button. Now you might think the same with HTML, you sometimes seen &#8220;Printer Friendly&#8221; buttons on a website, but those are just poorly coded. CSS has a &#8220;media&#8221; attribute, which means you can apply a &#8220;Printer Friendly&#8221; style to all pages of your website and hide this from the end user. So when a user does print from their browser, what gets printed out is specially formatted for the printer.</li>
<li>Breaks Browser Behaviour<br />
Flash does not work as a normal webpage should. It doesn&#8217;t use the history of your browser. You cannot directly link to a page within Flash, only to the main Flash page. And you can not use the browsers built in &#8220;Find&#8221; function with Flash. It simple won&#8217;t find anything in it and it become pretty useless. Also the browser can&#8217;t adjust the text size for visually impaired users.</li>
<li>Search Engines<br />
Search engines don&#8217;t know how to crawl and index Flash.</li>
<li>Not a standard and it&#8217;s not open<br />
Adobe own it, its not an standard, and it&#8217;s not open source. Now not being open source isn&#8217;t really a bad thing, but the fact its not a standard and people have to download a player (and update it as well) can annoy users. Albeit most people already would have Flash installed, for those few users that don&#8217;t it&#8217;s annoying they have to download and install something to view your website.</li>
</ol>
<p>Now for the most part, people don&#8217;t want full Flash websites, so not all these problems apply. But if all you want to add some &#8220;wow&#8221; factor to your site and want a &#8220;pretty&#8221; animation. You can do this with some JavaScript and CSS. In fact by doing this with JavaScript and CSS you will be dramatically reducing page loads time and improving your sites performance.</p>
<p>I should mention this goes the same for SIlverlight. But I do prefer SIlverlight, the fact its using the .NET Framework gives it some impressive power. It so far doesn&#8217;t appear to be as misused as Flash (most likely due to popularity) it could easily become so.</p>
<p>So here&#8217;s were my little rant ends, Flash does have it place, I&#8217;ll still use it for videos on the internet, and maybe for a file upload control but that&#8217;s about it. Everything else you can achieve faster and better with a little JavaScript and CSS.</p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/my-no-flash-rant/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Portfolio Plugin</title>
		<link>http://reven.co.nz/post/jquery-portfolio-plugin</link>
		<comments>http://reven.co.nz/post/jquery-portfolio-plugin#comments</comments>
		<pubDate>Tue, 08 Jun 2010 07:11:17 +0000</pubDate>
		<dc:creator>reven</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery Plugin]]></category>

		<guid isPermaLink="false">http://johnandrews.co/?p=227</guid>
		<description><![CDATA[A jQuery plugin for displaying a portfolio in a grid. Can mouse over elements to show a larger preview and a detailed description of the item inside the grid. Download I saw this nifty little portfolio and thought I&#8217;d like &#8230; <a href="http://reven.co.nz/post/jquery-portfolio-plugin">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A jQuery plugin for displaying a portfolio in a grid. Can mouse over elements to show a larger preview and a detailed description of the item inside the grid.</p>
<p><span id="more-227"></span></p>
<ul>
<li><a rel="attachment wp-att-248" href="http://johnandrews.co/post/jquery-portfolio-plugin/portfolio-2">Download</a></li>
</ul>
<p>I saw this nifty little portfolio and thought I&#8217;d like to use that. So I coded it.</p>
<h4 style="font-size: 1em;">Step 1 &#8211; HTML</h4>
<p>First you need to make a &lt;ul&gt; list with the elements you want to display.</p>
<p>For example</p>
<pre lang="html4strict">
<ul>
<li title="Project 1"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 2"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 3"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 4"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 5"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 6"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 7"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 8"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 9"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 10"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 11"><img src="smallimage.jpg" alt="" /></li>
<li title="Project 12"><img src="smallimage.jpg" alt="" /></li>
</ul>

﻿</pre>
<p>Each &lt;li&gt; needs the following</p>
<ul>
<li>title attribute &#8211; this is the Title that will be displayed in the rollover description</li>
<li>description attribute &#8211; this is the detailed Description that will be displayed in the rollover</li>
<li>preview attribute &#8211; this is the larger image that will be shown during a rollover</li>
<li>a child img &#8211; this is the thumbnail you will rollover</li>
</ul>
<h4 style="font-size: 1em;">Step 2 &#8211; The CSS</h4>
<pre lang="css">ul.portfolio
{
	margin:10px 20px;
	padding:0px;
	position:relative;
}
ul.portfolio &gt; li
{
	width:208px;
	height:144px;
	clear:none;
	float:left;
	margin:0px;
	list-style:none;
}
ul.portfolio &gt; li &gt; img
{
	border:1px solid #d3d3d3;
}
ul.portfolio &gt; li, ul.portfolio div.description
{
	padding:4px;
}
ul.portfolio div.description
{
	border:solid 1px #d3d3d3;
	background:#333;
	opacity:0.90;
	-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
	filter: alpha(opacity=90);
	color:White;
	font-size:small;
}
ul.portfolio div.description label
{
	display:block;
	clear:both;
	font-weight:bold;
}
ul.portfolio div.description-right
{
	border-top-left-radius:5px;
	-moz-border-radius-topleft:5px;
	-webkit-border-top-left-radius:5px;
	border-bottom-left-radius:5px;
	-moz-border-radius-bottomleft:5px;
	-webkit-border-bottom-left-radius:5px;
}
ul.portfolio div.description-left
{
	border-top-right-radius:5px;
	-moz-border-radius-topright:5px;
	-webkit-border-top-right-radius:5px;
	border-bottom-right-radius:5px;
	-moz-border-radius-bottomright:5px;
	-webkit-border-bottom-right-radius:5px;
}
ul.portfolio div.preview-right
{
	border-top-right-radius:5px;
	-moz-border-radius-topright:5px;
	-webkit-border-top-right-radius:5px;
	border-bottom-right-radius:5px;
	-moz-border-radius-bottomright:5px;
	-webkit-border-bottom-right-radius:5px;
}
ul.portfolio div.preview-left
{
	border-top-left-radius:5px;
	-moz-border-radius-topleft:5px;
	-webkit-border-top-left-radius:5px;
	border-bottom-left-radius:5px;
	-moz-border-radius-bottomleft:5px;
	-webkit-border-bottom-left-radius:5px;
}
ul.portfolio div.preview-down
{
	border-bottom-left-radius:5px;
	-moz-border-radius-bottomleft:5px;
	-webkit-border-bottom-left-radius:5px;
	border-bottom-right-radius:5px;
	-moz-border-radius-bottomright:5px;
	-webkit-border-bottom-right-radius:5px;
}
ul.portfolio div.preview-up
{
	border-top-left-radius:5px;
	-moz-border-radius-topleft:5px;
	-webkit-border-top-left-radius:5px;
	border-top-right-radius:5px;
	-moz-border-radius-topright:5px;
	-webkit-border-top-right-radius:5px;
}
ul.portfolio div.preview
{
	border:solid 1px #d3d3d3;
	background:#333;
	opacity:0.90;
	-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
	filter: alpha(opacity=90);
}
ul.portfolio div.preview img
{
	margin:12px;
}</pre>
<h4 style="font-size: 1em;">Step 3 &#8211; The JQuery.</h4>
<p>The JQuery required, is pretty simple. It just attaches a hover event to each li, and fades in/out the description.</p>
<pre lang="javascript">$.fn.portfolio = function (cfg) {
    // support mutltiple elements
    if (this.length &gt; 1) {
        this.each(function () {
            $(this).portfolio(cfg)
        });
        return this;
    }
    var defaults = {
        columns: 4,
        rows: 0
    };
    var cfg = $.extend(defaults, cfg);
    var ul = $(this);
    ul.css({
        position: 'relative'
    });
    cfg.rows = ul.children('li').length / cfg.columns;
    var li = ul.children('li:first');
    var li2nd = ul.children('li:first');
    var liNextRow = ul.children('li:nth(' + cfg.columns + ')');
    var liWidth = li.width();
    var liHeight = li.height();
    var previewwidth = li.outerWidth(true) * 2;
    var previewheight = li.outerHeight(true) * 2;
    ul.children('li').css({
        position: 'relative'
    });
    ul.hover(function () {
        $(this).find('li &gt; img').fadeTo(500, 0.5);
    }, function () {
        $(this).find('li &gt; img').fadeTo(500, 1);
    });
    var left = liWidth;
    var top = 0;
    $.each($(this).children('li'), function (i, ele) {
        var row = i / cfg.columns;
        var col = i % cfg.columns;
        var $ele = $(ele);
        $ele.append('
<div class="description" style="display: none; position: absolute; z-index: 11;"><label>' + $ele.attr('title') + '</label><span>' + $ele.attr('description') + '</span></div>

');
        ul.prepend('
<div class="preview" style="display: none; position: absolute; z-index: 10;"><img src="' + $ele.attr('preview') + '" alt="" /></div>

');
        var divDescription = $ele.find('div.description[portfolio=' + i + ']');
        var pos = $ele.position();
        divDescription.css({
            top: '0px',
            left: '0px',
            width: liWidth,
            height: liHeight
        });
        var divPreview = ul.find('div.preview[portfolio=' + i + ']');
        divPreview.css({
            top: top,
            height: previewheight + 'px',
            width: previewwidth + 'px'
        });
        var elePosition = $ele.position();
        if ((col / (cfg.columns / 2)) % 2 &lt; 1) {
            divPreview.css({
                left: (elePosition.left + $ele.outerWidth(true)) + 'px'
            });
            divDescription.css({
                borderRight: 'none'
            });
            divPreview.addClass('preview-right');
            divDescription.addClass('description-right');
        }
        else {
            divPreview.css({
                left: (elePosition.left - divPreview.outerWidth(true) + 1)
            });
            divDescription.css({
                borderLeft: 'none'
            });
            divPreview.addClass('preview-left');
            divDescription.addClass('description-left');
        }
        if (row &lt; cfg.rows - 1) // show the preview going downwards         {             divPreview.css({                 top: elePosition.top             });             divPreview.addClass('preview-down');             divDescription.addClass('description-down');         }         else // show the preview spanning upwards         {             divPreview.css({                 top: (elePosition.top - $ele.outerHeight(true)) + 'px'             });             divPreview.addClass('preview-up');             divDescription.addClass('description-up');         }         $ele.hover(function () {             // hover in             divDescription.css({                 zIndex: 11             }).fadeIn();             divPreview.css({                 zIndex: 10             }).fadeIn();         }, function () {             // hover out / blur             divDescription.css({                 zIndex: 9             }).fadeOut();             divPreview.css({                 zIndex: 8             }).fadeOut();         });         left += liWidth;         if (left &gt;= (cfg.columns / 2) * liWidth) left -= liWidth;
        if (left &lt; 0) left = 0;
        if ((i + 1) % cfg.columns == 0) top += liHeight;
    });
    return this;
};</pre>
<p>The only configuration is how many columns there are (rows is automatically calculated).</p>
<p>To use the plugin just run this code</p>
<pre lang="html4strict"><script lang="javascript"><!--mce:0--></script></pre>
<p>And there you have it.</p>
<p><a rel="attachment wp-att-233" href="http://johnandrews.co/post/jquery-portfolio-plugin/5be29c3f-789a-8ca4-cdc9-2235bb3e1dbb"><img class="alignnone size-full wp-image-233" title="5be29c3f-789a-8ca4-cdc9-2235bb3e1dbb" src="http://johnandrews.co/wp-content/uploads/2010/06/5be29c3f-789a-8ca4-cdc9-2235bb3e1dbb-e1287214491711.png" alt="" width="600" height="323" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://reven.co.nz/post/jquery-portfolio-plugin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

