<?xml version="1.0" encoding="UTF-8"?>
<articles type="array">
  <article>
    <content>In what's been a rather shit week both work wise and personally (the later probably leading to the former), some good has come - the final payment has been made on my round the world ticket.

At this stage, the trip looks a little something like this:

&lt;img src=&quot;/images/travelmapwtext.png&quot; alt=&quot;Matt's travel plans on a map&quot; /&gt;

I'm hoping to lineup tours of Apple and Google while I'm over there - my mate Luke who works at Mountain View however is getting shipped back to work as part of the Maps team, so it's all very much up in the air at the moment!

All the bog standard tourist attractions will be sighted however including:

* Golden Gate bridge
* Alcatraz
* Washington Monument
* The outside of The White House (as I can't get inside without a local member of congress' assistance)
* The Capitol
* The International Spy Museum
* Times Square
* Central Park
* London Eye
* Big Ben
* Legoland Windsor

Just to name a few...I'm leaving some time in each city as I hope to catchup with some of the Ruby peeps that live there.

I'm also attending a conference (or maybe more - depends on what gets announced) while I'm gone, there hasn't been an official announcement yet, so I won't spill the beans on which one.

While getting excited about the trip I'm also a little nervous - it'll be my first international trip alone, but hey, it has to happen at some point! I'll be catching up with the family in Canterbury as Bec's over at that time playing hockey on a school tour and mum and dad are using it as an excuse to go back to the UK.

Duty free liquor and electronics here we come!

p.s. If you live in one of these cities - ping me some locations you think might be worth visiting - mattman @ gmail.com</content>
    <created-at type="datetime">2010-01-17T12:23:56Z</created-at>
    <id type="integer">4</id>
    <parsed>&lt;p&gt;In what's been a rather shit week both work wise and personally (the later probably leading to the former), some good has come - the final payment has been made on my round the world ticket.&lt;/p&gt;&lt;p&gt;At this stage, the trip looks a little something like this:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/images/travelmapwtext.png&quot; alt=&quot;Matt's travel plans on a map&quot;&gt;&lt;/p&gt;&lt;p&gt;I'm hoping to lineup tours of Apple and Google while I'm over there - my mate Luke who works at Mountain View however is getting shipped back to work as part of the Maps team, so it's all very much up in the air at the moment!&lt;/p&gt;&lt;p&gt;All the bog standard tourist attractions will be sighted however including:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Golden Gate bridge&lt;/li&gt;
&lt;li&gt;Alcatraz&lt;/li&gt;
&lt;li&gt;Washington Monument&lt;/li&gt;
&lt;li&gt;The outside of The White House (as I can't get inside without a local member of congress' assistance)&lt;/li&gt;
&lt;li&gt;The Capitol&lt;/li&gt;
&lt;li&gt;The International Spy Museum&lt;/li&gt;
&lt;li&gt;Times Square&lt;/li&gt;
&lt;li&gt;Central Park&lt;/li&gt;
&lt;li&gt;London Eye&lt;/li&gt;
&lt;li&gt;Big Ben&lt;/li&gt;
&lt;li&gt;Legoland Windsor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just to name a few...I'm leaving some time in each city as I hope to catchup with some of the Ruby peeps that live there.&lt;/p&gt;&lt;p&gt;I'm also attending a conference (or maybe more - depends on what gets announced) while I'm gone, there hasn't been an official announcement yet, so I won't spill the beans on which one.&lt;/p&gt;&lt;p&gt;While getting excited about the trip I'm also a little nervous - it'll be my first international trip alone, but hey, it has to happen at some point! I'll be catching up with the family in Canterbury as Bec's over at that time playing hockey on a school tour and mum and dad are using it as an excuse to go back to the UK.&lt;/p&gt;&lt;p&gt;Duty free liquor and electronics here we come!&lt;/p&gt;&lt;p&gt;p.s. If you live in one of these cities - ping me some locations you think might be worth visiting - mattman @ gmail.com&lt;/p&gt;</parsed>
    <slug>round-parts-of-the-world-in-42-days</slug>
    <title>Round (parts of) the world in 42 days</title>
    <updated-at type="datetime">2010-01-17T12:26:29Z</updated-at>
  </article>
  <article>
    <content>Over the years, I have had the great pleasure of working with the Midnite Youth Theatre Company on a number of their Perth based productions. Naturally, I decided they _had_ to have a website!

It started out in a Plone/Zope setup - it was a nightmare - documentation on theming was thin on the ground and getting people to maintain it was even harder as the backend UI wasn't that friendly for those not as technically savvy as the authors of the system.

The site died for a while - motivation was low after the initial failure - then about a year and a half later, we found a home in the Wordpress blogging platform. It was easy enough to tweak for more of a CMS feel, the backend UI made sense - things were on the up.

Thankfully, there's not a &quot;but&quot; at the end of that sentence! The site's had 9 or 10 redesigns since (we went through a phase of having a new theme each time a production was being performed - a management nightmare!) and visits to the site are slowly, but surely, on the increase.

We're slowly outgrowing Wordpress though - it's primary purpose is to be a blogging platform, not a full blown content management system that can incorporate a database of all Midnite's productions (with venue details, 8 different tiers of pricing to display etc), sell tickets (one day, one day....) etc, so it was time to move on.

What we're going to end up with (the bugs are still being ironed out) once the new site is live will be something more flexible and hopefully something that better caters for the needs of Midnite.

I couldn't help writing this post however to talk about the HTML and CSS we're using to build the thing - HTML5 and CSS3 are getting a workout on this project and it excites me (but, as you'll hear, also brought me to tears at points)

![Midnite Youth Theatre Company's new site](/images/redesigning-midnite/midnitepreview.png &quot;Midnite Youth Theatre Company's new site&quot;)

The thing I like most about working on the Midnite site pro-bono is that I get a lot of creative liberties - as I mentioned, this design iteration makes use of the new HTML5 and CSS3 specifications that are in development at the moment.

Let's step through some of the new parts of the spec I'm using on the site with the HTML and CSS to match:

## Rounded corners ##

&lt;img src=&quot;/images/redesigning-midnite/roundedcnr.png&quot; alt=&quot;Rounded corner example from the new MYTC website&quot; /&gt;

The CSS used to generate this looks a little like this:

@@@ css
-webkit-border-top-left-radius: 5px;
-moz-border-radius-topleft: 5px;
border-top-left-radius: 5px;
@@@

Yeah, the browser specific declarations are a little annoying, but hey, not having to do it with javascript or thousands of CSS lines dedicated to images for each corner has got to be a bonus!

## @font-face (or Font Embedding) ##

&lt;img src=&quot;/images/redesigning-midnite/font.png&quot; alt=&quot;Font embeding on the new Midnite Youth Theatre Company website&quot; /&gt;

Guess what  - it even works in IE 6 - sure, you have to use a strange format that only Microsoft care about, but it works!

@@@ css
@font-face {
  font-family: 'LeagueGothicRegular';
  src: url('../fonts/League_Gothic.eot');
  src: local('League Gothic Regular'), local('LeagueGothic'), url('../fonts/League_Gothic.otf') format('opentype'), url('../fonts/League_Gothic.svg#LeagueGothic') format('svg'); }
@@@

You have to use the .eot format for IE6 and have it on it's own line so it can be picked up and used, but there's a handy tool for generating all the right font files and the CSS markup to match that can be found over at &lt;a href=&quot;http://www.fontsquirrel.com/fontface/generator&quot;&gt;Font Squirrel&lt;/a&gt;.

Using the font you've just declared isn't hard either:

@@@ css
font-family: &quot;LeagueGothicRegular&quot;, Gill Sans, Verdana, sans-serif;
@@@

## Sprites ##

Image sprites aren't new news by any stretch of the imagination - there's talk they will make an appearance in the final &lt;a href=&quot;http://www.w3.org/TR/css3-images&quot;&gt;CSS3 spec&lt;/a&gt;, at the moment however, there's just a placeholder with a lot of discussion about whether sprites belong in the spec and if so, what the syntax should be.

The new Midnite site makes use of them in their current state though, as depicted below:

&lt;img src=&quot;/images/redesigning-midnite/hover.png&quot; alt=&quot;An example of CSS sprites from the Midnite website&quot; /&gt;

Once again, here's the CSS:

@@@ css
.season {
  // Unimportant bits left out
  background-image: url(&quot;../images/season2010.png&quot;);
  background-position: 0 0;
  height: 176px;
  width: 450px; }
@@@

And for the hover effect:

@@@ css
.season:hover {
  background-position: 0 -176px; }
@@@

Now, I mentioned earlier that there were tears - you've already had the rant about EOT files for @font-face declarations, but there's one for CSS sprites as well!

IE6 and below don't support the :hover selector on elements other that anchor &lt;code&gt;&lt;a&amp;gt;&lt;/code&gt; tags, which makes my CSS above somewhat useless in a browser that is only starting now to lose its stranglehold on the market.

Easy fix though - (1) &lt;a href=&quot;http://www.kavoir.com/wp-content/uploads/2009/01/csshover3.htc&quot;&gt;get this file&lt;/a&gt;; (2) put the following CSS in your pipe and make IE6 smoke it:
@@@ css
body {
  behavior:url(&quot;/styles/csshover3.htc&quot;); }
@@@

Hat-tip: make sure that path is absolute (i.e. falls off the root '/') as the URL is relative to the page, not the CSS file location.

Once you have that tiny hack in place, your sprites work in IE6+, FF and Webkit.

## RGBA ##

We're using RGBA for our navigation link hovers (so you can see the stars faintly behind even when you hover)

&lt;img src=&quot;/images/redesigning-midnite/rgba.png&quot; alt=&quot;RGBa example&quot; /&gt;

RGBA is the new kid on the block for declaring colours with their alpha, or transparency set. I'd talk about it here, but Drew McLellan explains it far better over at &lt;a href=&quot;http://24ways.org/2009/working-with-rgba-colour&quot;&gt;his 2009 24 ways article&lt;/a&gt;.

## HTML5 ##

So I've really only spoken about the CSS stuff we're doing to this point and frankly, the HTML5 stuff is more structure than eye candy, but the new &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;,  &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt; tags are getting a workout and I enjoy the semantics of the markup - it feels cleaner to me than having div's all over the place with ID's like #header and #footer.

I'd encourage you to read such good websites as &lt;a href=&quot;http://diveintohtml5.org&quot;&gt;Dive into HTML5&lt;/a&gt; and &lt;a href=&quot;http://html5doctor.com/&quot;&gt;HTML5 Doctor&lt;/a&gt; for more on getting started using HTML5 today - &lt;a href=&quot;http://smashingmagazine.com&quot;&gt;Smashing Magazine&lt;/a&gt; also have a couple of good articles, as do &lt;a href=&quot;http://24ways.org&quot;&gt;24 ways&lt;/a&gt;</content>
    <created-at type="datetime">2009-12-29T13:54:16Z</created-at>
    <id type="integer">3</id>
    <parsed>&lt;p&gt;Over the years, I have had the great pleasure of working with the Midnite Youth Theatre Company on a number of their Perth based productions. Naturally, I decided they &lt;em&gt;had&lt;/em&gt; to have a website!&lt;/p&gt;&lt;p&gt;It started out in a Plone/Zope setup - it was a nightmare - documentation on theming was thin on the ground and getting people to maintain it was even harder as the backend UI wasn't that friendly for those not as technically savvy as the authors of the system.&lt;/p&gt;&lt;p&gt;The site died for a while - motivation was low after the initial failure - then about a year and a half later, we found a home in the Wordpress blogging platform. It was easy enough to tweak for more of a CMS feel, the backend UI made sense - things were on the up.&lt;/p&gt;&lt;p&gt;Thankfully, there's not a &quot;but&quot; at the end of that sentence! The site's had 9 or 10 redesigns since (we went through a phase of having a new theme each time a production was being performed - a management nightmare!) and visits to the site are slowly, but surely, on the increase.&lt;/p&gt;&lt;p&gt;We're slowly outgrowing Wordpress though - it's primary purpose is to be a blogging platform, not a full blown content management system that can incorporate a database of all Midnite's productions (with venue details, 8 different tiers of pricing to display etc), sell tickets (one day, one day....) etc, so it was time to move on.&lt;/p&gt;&lt;p&gt;What we're going to end up with (the bugs are still being ironed out) once the new site is live will be something more flexible and hopefully something that better caters for the needs of Midnite.&lt;/p&gt;&lt;p&gt;I couldn't help writing this post however to talk about the HTML and CSS we're using to build the thing - HTML5 and CSS3 are getting a workout on this project and it excites me (but, as you'll hear, also brought me to tears at points)&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/images/redesigning-midnite/midnitepreview.png&quot; title=&quot;Midnite Youth Theatre Company's new site&quot; alt=&quot;Midnite Youth Theatre Company's new site&quot;&gt;&lt;/p&gt;&lt;p&gt;The thing I like most about working on the Midnite site pro-bono is that I get a lot of creative liberties - as I mentioned, this design iteration makes use of the new HTML5 and CSS3 specifications that are in development at the moment.&lt;/p&gt;&lt;p&gt;Let's step through some of the new parts of the spec I'm using on the site with the HTML and CSS to match:&lt;/p&gt;&lt;h2&gt;Rounded corners&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;/images/redesigning-midnite/roundedcnr.png&quot; alt=&quot;Rounded corner example from the new MYTC website&quot;&gt;&lt;/p&gt;&lt;p&gt;The CSS used to generate this looks a little like this:&lt;/p&gt;&lt;div class=&quot;highlight css code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;-webkit-border-top-left-radius&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-moz-border-radius-topleft&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;border-top-left-radius&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Yeah, the browser specific declarations are a little annoying, but hey, not having to do it with javascript or thousands of CSS lines dedicated to images for each corner has got to be a bonus!&lt;/p&gt;&lt;h2&gt;@font-face (or Font Embedding)&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;/images/redesigning-midnite/font.png&quot; alt=&quot;Font embeding on the new Midnite Youth Theatre Company website&quot;&gt;&lt;/p&gt;&lt;p&gt;Guess what  - it even works in IE 6 - sure, you have to use a strange format that only Microsoft care about, but it works!&lt;/p&gt;&lt;div class=&quot;highlight css code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'LeagueGothicRegular'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'../fonts/League_Gothic.eot'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'League Gothic Regular'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'LeagueGothic'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'../fonts/League_Gothic.otf'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'opentype'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'../fonts/League_Gothic.svg#LeagueGothic'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'svg'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You have to use the .eot format for IE6 and have it on it's own line so it can be picked up and used, but there's a handy tool for generating all the right font files and the CSS markup to match that can be found over at &lt;a href=&quot;http://www.fontsquirrel.com/fontface/generator&quot;&gt;Font Squirrel&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Using the font you've just declared isn't hard either:&lt;/p&gt;&lt;div class=&quot;highlight css code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;LeagueGothicRegular&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;Gill&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;Sans&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;Verdana&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;sans-serif&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;Sprites&lt;/h2&gt;&lt;p&gt;Image sprites aren't new news by any stretch of the imagination - there's talk they will make an appearance in the final &lt;a href=&quot;http://www.w3.org/TR/css3-images&quot;&gt;CSS3 spec&lt;/a&gt;, at the moment however, there's just a placeholder with a lot of discussion about whether sprites belong in the spec and if so, what the syntax should be.&lt;/p&gt;&lt;p&gt;The new Midnite site makes use of them in their current state though, as depicted below:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/images/redesigning-midnite/hover.png&quot; alt=&quot;An example of CSS sprites from the Midnite website&quot;&gt;&lt;/p&gt;&lt;p&gt;Once again, here's the CSS:&lt;/p&gt;&lt;div class=&quot;highlight css code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nc&quot;&gt;.season&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;//&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Unimportant&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;bits&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;left&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;out&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;url(&quot;../images/season2010.png&quot;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;176px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;450px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And for the hover effect:&lt;/p&gt;&lt;div class=&quot;highlight css code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nc&quot;&gt;.season&lt;/span&gt;&lt;span class=&quot;nd&quot;&gt;:hover&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;-176px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, I mentioned earlier that there were tears - you've already had the rant about EOT files for @font-face declarations, but there's one for CSS sprites as well!&lt;/p&gt;&lt;p&gt;IE6 and below don't support the :hover selector on elements other that anchor &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tags, which makes my CSS above somewhat useless in a browser that is only starting now to lose its stranglehold on the market.&lt;/p&gt;&lt;p&gt;Easy fix though - (1) &lt;a href=&quot;http://www.kavoir.com/wp-content/uploads/2009/01/csshover3.htc&quot;&gt;get this file&lt;/a&gt;; (2) put the following CSS in your pipe and make IE6 smoke it:
&lt;/p&gt;
&lt;div class=&quot;highlight css code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;behavior&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;sx&quot;&gt;url(&quot;/styles/csshover3.htc&quot;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hat-tip: make sure that path is absolute (i.e. falls off the root '/') as the URL is relative to the page, not the CSS file location.&lt;/p&gt;&lt;p&gt;Once you have that tiny hack in place, your sprites work in IE6+, FF and Webkit.&lt;/p&gt;&lt;h2&gt;RGBA&lt;/h2&gt;&lt;p&gt;We're using RGBA for our navigation link hovers (so you can see the stars faintly behind even when you hover)&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/images/redesigning-midnite/rgba.png&quot; alt=&quot;RGBa example&quot;&gt;&lt;/p&gt;&lt;p&gt;RGBA is the new kid on the block for declaring colours with their alpha, or transparency set. I'd talk about it here, but Drew McLellan explains it far better over at &lt;a href=&quot;http://24ways.org/2009/working-with-rgba-colour&quot;&gt;his 2009 24 ways article&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;HTML5&lt;/h2&gt;&lt;p&gt;So I've really only spoken about the CSS stuff we're doing to this point and frankly, the HTML5 stuff is more structure than eye candy, but the new &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;,  &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt; tags are getting a workout and I enjoy the semantics of the markup - it feels cleaner to me than having div's all over the place with ID's like #header and #footer.&lt;/p&gt;&lt;p&gt;I'd encourage you to read such good websites as &lt;a href=&quot;http://diveintohtml5.org&quot;&gt;Dive into HTML5&lt;/a&gt; and &lt;a href=&quot;http://html5doctor.com/&quot;&gt;HTML5 Doctor&lt;/a&gt; for more on getting started using HTML5 today - &lt;a href=&quot;http://smashingmagazine.com&quot;&gt;Smashing Magazine&lt;/a&gt; also have a couple of good articles, as do &lt;a href=&quot;http://24ways.org&quot;&gt;24 ways&lt;/a&gt;&lt;/p&gt;</parsed>
    <slug>redesigning-midnite</slug>
    <title>Redesigning Midnite</title>
    <updated-at type="datetime">2009-12-29T13:57:36Z</updated-at>
  </article>
  <article>
    <content>So you may have noticed that all the old content on this site is gone and it looks, once again, different.

After some mulling, I decided it was time to move on - the content the previously resided here was out of date or pointless.

I'm starting fresh, the results of which will be seen shortly with my post on scaling with rails (from a novice's perspective) - I'm hoping that over Christmas and into the new year I can generate some new and relevant content on Ruby, Rails, servers and also life.

If you've reached here looking for something you consider to be of national importance, get in touch and I'll take a look at restoring it or overhauling it to be current.</content>
    <created-at type="datetime">2009-12-09T08:16:57Z</created-at>
    <id type="integer">1</id>
    <parsed>&lt;p&gt;So you may have noticed that all the old content on this site is gone and it looks, once again, different.&lt;/p&gt;&lt;p&gt;After some mulling, I decided it was time to move on - the content the previously resided here was out of date or pointless.&lt;/p&gt;&lt;p&gt;I'm starting fresh, the results of which will be seen shortly with my post on scaling with rails (from a novice's perspective) - I'm hoping that over Christmas and into the new year I can generate some new and relevant content on Ruby, Rails, servers and also life.&lt;/p&gt;&lt;p&gt;If you've reached here looking for something you consider to be of national importance, get in touch and I'll take a look at restoring it or overhauling it to be current.&lt;/p&gt;</parsed>
    <slug>time-for-a-change</slug>
    <title>Time for a change</title>
    <updated-at type="datetime">2009-12-12T07:49:14Z</updated-at>
  </article>
  <article>
    <content>I'm by no means a &quot;scaling expert&quot;, but I've recently been doing a lot of research into scaling web applications and the best ways to go about it.

What you see below is a rough guide based on what I've learnt - it's not scaling gospel or even an accurate or thorough discussion of all different techniques or schools of thought that can be applied to scaling.

So, what does this series of posts cover?

* What scaling is;
* When/who you should think about scaling;
* The web server (two parts: the box and the software);
* The static assets;
* The database;
* The Rails code; and
* Caching

## What scaling is ##

&gt; In telecommunications and software engineering, scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner or to be readily enlarged. For example, it can refer to the capability of a system to increase total throughput under an increased load when resources (typically hardware) are added. An analogous meaning is implied when the word is used in a commercial context, where scalability of a company implies that the underlying business model offers the potential for economic growth within the company.
&lt;cite&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Scaling&quot;&gt;http://en.wikipedia.org/wiki/Scaling&lt;/a&gt;&lt;/cite&gt;

## When to scale ##

Generally, the consensus seems to be that if your a start-up, fresh out of the oven, scaling is a waste of your time. Get some users first and build your product!

Scaling is generally something you consider when your current server setup is getting hammered and the growth of your applications warrants taking things to the next level.

## The web server ##

### The box ###

If you're going to be doing high traffic sites, you'd be stupid (in my opinion) not to get your own hardware - the cost of entry for some relatively good gear isn't that high and in the long run, the flexibility and power that comes with having your own hardware outweighs the hassle.

I'm running a Dell PowerEdge 1850 which is housed in a datacentre here in Perth (which makes sense for what I'm hosting on it) - it's not new, but it doesn't need to be - the only reason it was being disposed of by the company I bought it off was because the three year warranty had run out - during the three years however, it hadn't failed once and had been the primary domain controller for the organisation in question.

Something to consider carefully is location and if your site is targeted at an international audience, then you'll certainly want to pick a location to keep that new server of yours in a DC where there's good international pipes available (Perth isn't really blessed in this particular area).

When picking a datacentre, look for something with n+1 redundancy, diverse entry points for both data carriers and power (preferably off completely different feeds) and good security - taking a look at what carriers provide feeds into the facility is also a must.

### The software ###

For the operating system, I'm a fan of Ubuntu server edition - I'll admit, I've not tried much else (FreeBSD and Debian) and I always come back to Ubuntu - I think that's mainly because my first experiences with Linux were on an Ubuntu box. I keep the install down to the bear minimums - build_essential, iptables, fail2ban, denyhosts, mysql, nginx and a local postfix instance are all that are running (there's probably some other things, but you get the idea - no need for fruit)

Personally, I use the nginx (/engine-x/) web server - it's fast at serving static assets and it knows when to get out of the way if I want to pass things off to my Rails app. High profile websites including Wordpress.com and Github are using nginx with great success when it comes to high traffic scenarios.

Another part of my setup is Unicorn. Unicorn is written to make use of a number of existing system elements (threads, balancing, etc) which makes it stupidly efficient. For more, see this article by &lt;a href=&quot;http://tomayko.com&quot;&gt;Ryan Tomayko&lt;/a&gt; called &quot;&lt;a href='http://tomayko.com/writings/unicorn-is-unix'&gt;I like Unicorn because it's Unix&lt;/a&gt;&quot;.

Here's my config file:

@@@ nginx
upstream unicorn {
      server unix:/var/www/example/current/tmp/sockets/unicorn.sock;
} 

server {
  listen 80;
  server_name  example.org www.example.org;

  access_log  /var/log/nginx/example.access.log;

  location / {
        root /var/www/example/current/public/;
        if (-f $request_filename) {
          expires 60h;
          break;        # Static asset
        } if (-f $document_root/system/maintenance.html) {
          return 503;   # Temporarily unavailable
        } if (!-f $document_root/system/maintenance.html) {
         # error_page 500 501 502 503 504 /500.html;
          proxy_pass              http://unicorn;
        }

        proxy_set_header        Host $host;       
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size    10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout   90;
        proxy_send_timeout      90;
        proxy_read_timeout      90;
        proxy_buffer_size       16k;
        proxy_buffers           32 16k;
        proxy_busy_buffers_size 64k;
  }

  # output compression saves bandwidth 
  gzip              on;
  gzip_http_version 1.0;
  gzip_comp_level   2;
  gzip_proxied      any;
  gzip_types        text/plain text/html text/javascript text/css text/xml application/x-javascript application/atom+xml;
}
@@@

I also use Passenger from the gang over at Phusion - it's fantastic for getting things going straight away and doesn't require too much hassle - it's what I use on my development box and for smaller sites where I don't need to fiddle with things in the same way.

That's a long enough post, hopefully I'll get the next section on static assets and the database up soon.

It's important to remember that this is just my opinion, based on my experiences to date (which are somewhat limited given my age) - take everything with a grain of salt and always do your research before diving into something this big.</content>
    <created-at type="datetime">2009-12-09T08:32:35Z</created-at>
    <id type="integer">2</id>
    <parsed>&lt;p&gt;I'm by no means a &quot;scaling expert&quot;, but I've recently been doing a lot of research into scaling web applications and the best ways to go about it.&lt;/p&gt;&lt;p&gt;What you see below is a rough guide based on what I've learnt - it's not scaling gospel or even an accurate or thorough discussion of all different techniques or schools of thought that can be applied to scaling.&lt;/p&gt;&lt;p&gt;So, what does this series of posts cover?&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;What scaling is;&lt;/li&gt;
&lt;li&gt;When/who you should think about scaling;&lt;/li&gt;
&lt;li&gt;The web server (two parts: the box and the software);&lt;/li&gt;
&lt;li&gt;The static assets;&lt;/li&gt;
&lt;li&gt;The database;&lt;/li&gt;
&lt;li&gt;The Rails code; and&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What scaling is&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;In telecommunications and software engineering, scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner or to be readily enlarged. For example, it can refer to the capability of a system to increase total throughput under an increased load when resources (typically hardware) are added. An analogous meaning is implied when the word is used in a commercial context, where scalability of a company implies that the underlying business model offers the potential for economic growth within the company.
&lt;cite&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Scaling&quot;&gt;http://en.wikipedia.org/wiki/Scaling&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;When to scale&lt;/h2&gt;&lt;p&gt;Generally, the consensus seems to be that if your a start-up, fresh out of the oven, scaling is a waste of your time. Get some users first and build your product!&lt;/p&gt;&lt;p&gt;Scaling is generally something you consider when your current server setup is getting hammered and the growth of your applications warrants taking things to the next level.&lt;/p&gt;&lt;h2&gt;The web server&lt;/h2&gt;&lt;h3&gt;The box&lt;/h3&gt;&lt;p&gt;If you're going to be doing high traffic sites, you'd be stupid (in my opinion) not to get your own hardware - the cost of entry for some relatively good gear isn't that high and in the long run, the flexibility and power that comes with having your own hardware outweighs the hassle.&lt;/p&gt;&lt;p&gt;I'm running a Dell PowerEdge 1850 which is housed in a datacentre here in Perth (which makes sense for what I'm hosting on it) - it's not new, but it doesn't need to be - the only reason it was being disposed of by the company I bought it off was because the three year warranty had run out - during the three years however, it hadn't failed once and had been the primary domain controller for the organisation in question.&lt;/p&gt;&lt;p&gt;Something to consider carefully is location and if your site is targeted at an international audience, then you'll certainly want to pick a location to keep that new server of yours in a DC where there's good international pipes available (Perth isn't really blessed in this particular area).&lt;/p&gt;&lt;p&gt;When picking a datacentre, look for something with n+1 redundancy, diverse entry points for both data carriers and power (preferably off completely different feeds) and good security - taking a look at what carriers provide feeds into the facility is also a must.&lt;/p&gt;&lt;h3&gt;The software&lt;/h3&gt;&lt;p&gt;For the operating system, I'm a fan of Ubuntu server edition - I'll admit, I've not tried much else (FreeBSD and Debian) and I always come back to Ubuntu - I think that's mainly because my first experiences with Linux were on an Ubuntu box. I keep the install down to the bear minimums - build_essential, iptables, fail2ban, denyhosts, mysql, nginx and a local postfix instance are all that are running (there's probably some other things, but you get the idea - no need for fruit)&lt;/p&gt;&lt;p&gt;Personally, I use the nginx (/engine-x/) web server - it's fast at serving static assets and it knows when to get out of the way if I want to pass things off to my Rails app. High profile websites including Wordpress.com and Github are using nginx with great success when it comes to high traffic scenarios.&lt;/p&gt;&lt;p&gt;Another part of my setup is Unicorn. Unicorn is written to make use of a number of existing system elements (threads, balancing, etc) which makes it stupidly efficient. For more, see this article by &lt;a href=&quot;http://tomayko.com&quot;&gt;Ryan Tomayko&lt;/a&gt; called &quot;&lt;a href=&quot;http://tomayko.com/writings/unicorn-is-unix&quot;&gt;I like Unicorn because it's Unix&lt;/a&gt;&quot;.&lt;/p&gt;&lt;p&gt;Here's my config file:&lt;/p&gt;&lt;div class=&quot;highlight nginx code highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;upstream&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;unicorn&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;unix:/var/www/example/current/tmp/sockets/unicorn.sock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;listen&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;server_name&lt;/span&gt;  &lt;span class=&quot;s&quot;&gt;example.org&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;www.example.org&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;access_log&lt;/span&gt;  &lt;span class=&quot;s&quot;&gt;/var/log/nginx/example.access.log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;location&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/var/www/example/current/public/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;(-f&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$request_filename&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;kn&quot;&gt;expires&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;60h&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kn&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;        &lt;span class=&quot;c1&quot;&gt;# Static asset&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;(-f&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$document_root/system/maintenance.html&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;kn&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;503&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;c1&quot;&gt;# Temporarily unavailable&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;(!-f&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$document_root/system/maintenance.html&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
     &lt;span class=&quot;c1&quot;&gt;# error_page 500 501 502 503 504 /500.html;&lt;/span&gt;
      &lt;span class=&quot;kn&quot;&gt;proxy_pass&lt;/span&gt;              &lt;span class=&quot;s&quot;&gt;http://unicorn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_set_header&lt;/span&gt;        &lt;span class=&quot;s&quot;&gt;Host&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;       
    &lt;span class=&quot;kn&quot;&gt;proxy_set_header&lt;/span&gt;        &lt;span class=&quot;s&quot;&gt;X-Real-IP&lt;/span&gt;       &lt;span class=&quot;nv&quot;&gt;$remote_addr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_set_header&lt;/span&gt;        &lt;span class=&quot;s&quot;&gt;X-Forwarded-For&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;client_max_body_size&lt;/span&gt;    &lt;span class=&quot;mi&quot;&gt;10m&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;client_body_buffer_size&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;128k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_connect_timeout&lt;/span&gt;   &lt;span class=&quot;mi&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_send_timeout&lt;/span&gt;      &lt;span class=&quot;mi&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_read_timeout&lt;/span&gt;      &lt;span class=&quot;mi&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_buffer_size&lt;/span&gt;       &lt;span class=&quot;mi&quot;&gt;16k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_buffers&lt;/span&gt;           &lt;span class=&quot;mi&quot;&gt;32&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;16k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;proxy_busy_buffers_size&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;64k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# output compression saves bandwidth&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;gzip&lt;/span&gt;              &lt;span class=&quot;no&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;gzip_http_version&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;gzip_comp_level&lt;/span&gt;   &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;gzip_proxied&lt;/span&gt;      &lt;span class=&quot;s&quot;&gt;any&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kn&quot;&gt;gzip_types&lt;/span&gt;        &lt;span class=&quot;s&quot;&gt;text/plain&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;text/html&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;text/javascript&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;text/css&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;text/xml&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;application/x-javascript&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;application/atom+xml&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I also use Passenger from the gang over at Phusion - it's fantastic for getting things going straight away and doesn't require too much hassle - it's what I use on my development box and for smaller sites where I don't need to fiddle with things in the same way.&lt;/p&gt;&lt;p&gt;That's a long enough post, hopefully I'll get the next section on static assets and the database up soon.&lt;/p&gt;&lt;p&gt;It's important to remember that this is just my opinion, based on my experiences to date (which are somewhat limited given my age) - take everything with a grain of salt and always do your research before diving into something this big.&lt;/p&gt;</parsed>
    <slug>scaling-a-rails-application-part-1</slug>
    <title>Scaling a Rails application - Part 1</title>
    <updated-at type="datetime">2009-12-12T07:49:14Z</updated-at>
  </article>
</articles>
