<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.1" -->
<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/"
	>

<channel>
	<title>Math Jazz</title>
	<link>http://mathiasbynens.be</link>
	<description>A Bad Ass Approach to the Galaxy of Web Standards</description>
	<pubDate>Wed, 25 Jun 2008 10:06:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.1</generator>
	<language>en</language>
			<item>
		<title>What’s wrong with my IRI scheme</title>
		<link>http://mathiasbynens.be/archive/2006/03/iri-redesign</link>
		<comments>http://mathiasbynens.be/archive/2006/03/iri-redesign#comments</comments>
		<pubDate>Sun, 05 Mar 2006 17:32:19 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2006-03-05:archive/2006/03/iri-redesign</guid>
		<description><![CDATA[<p>Every single post I add to this blog, gets a unique <acronym title="Internationalized Resource Identifier">IRI</acronym> of the form <code>http://mathiasbynens.be/archive/<var>yyyy</var>/<var>mm</var>/<var>post-slug</var></code>. Though I used to be satisfied with that scheme — after all, it’s cruft-free — I lately began to think it doesn’t suit this site’s needs.</p>]]></description>
			<content:encoded><![CDATA[<p>Every single post I add to this blog, gets a unique <acronym title="Internationalized Resource Identifier">IRI</acronym> of the form <code>http://mathiasbynens.be/archive/<var>yyyy</var>/<var>mm</var>/<var>post-slug</var></code>. Though I used to be satisfied with that scheme — after all, it’s cruft-free — I lately began to think it doesn’t suit this site’s needs.</p>

<p>How frequently do I make a new blog entry? Like, once a month? And then, what do I blog about? Web development related shizzle… (Except for the occasional meme, that is; I honestly can’t help being tagged all the time. Bastards!) Who gives a damn about <em>when</em> such an article is written if it’s not related to any date-tied events? The only thing that really matters, the true essence of a post, is its title. So much for the <code><var>yyyy</var>/<var>mm</var>/</code> part.</p>

<p>That other bit, <code>/archive</code>, doesn’t add much value to the whole <acronym title="Internationalized Resource Identifier">IRI</acronym> either. Though, it brings home to the more savvy users that the requested page is a blog entry, and not a <q>static</q> page (<abbr title="exempli gratia">e.g.</abbr> a colophon). Somehow I feel like <code>/articles</code> would be a much better choice in this case.<br />
Ideally though, every post would have its own <acronym title="Internationalized Resource Identifier">IRI</acronym> base, depending on the categories it belongs to. How much better is <code>/javascript/number-format</code> compared to something like <code>/archive/2006/01/js-number-format</code>?</p>

<p>That’s what I’ve been <em>thinking</em>. However, I don’t know of an easy way of creating such an <acronym title="Internationalized Resource Identifier">IRI</acronym>  scheme in <a href="http://wordpress.org/">WordPress</a> easily. I could of course change all posts into <a href="http://codex.wordpress.org/Pages" title="WordPress Codex: Pages">pages</a> with their own <acronym title="Internationalized Resource Identifier">IRI</acronym>s, but that would affect the home page, the syndication feeds, et cetera.</p>

<p>It comes down to this: I just can’t be bothered at the moment.</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2006/03/iri-redesign/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Alive and kickin’</title>
		<link>http://mathiasbynens.be/archive/2006/03/an-update</link>
		<comments>http://mathiasbynens.be/archive/2006/03/an-update#comments</comments>
		<pubDate>Sat, 04 Mar 2006 18:46:45 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2006-03-04:archive/2006/03/an-update</guid>
		<description><![CDATA[<p>Hell, I even did some work for <a href="http://procurementservices.nl/">Procurement Services</a>. Some notes:</p>

<ul>
<li><a href="http://krijnhoetmer.nl/">Krijn</a> is a wonderful person to work with.</li>
<li><a href="http://qontent.nl/"><acronym title="Qontent Management System">QMS</acronym></a> rocks.</li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Hell, I even did some work for <a href="http://www.procurementservices.nl/">Procurement Services</a>. Some notes:</p>

<ul>
<li><a href="http://krijnhoetmer.nl/">Krijn</a> is a wonderful person to work with.</li>
<li><a href="http://qontent.nl/"><acronym title="Qontent Management System">QMS</acronym></a> rocks.</li>
</ul>

<p>Nuff said. This site needs an update. Not only the design, but also the <acronym title="Internationalized Resource Identifier">IRI</acronym> scheme doesn’t make any sense anymore.</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2006/03/an-update/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Four things</title>
		<link>http://mathiasbynens.be/archive/2006/01/four-things</link>
		<comments>http://mathiasbynens.be/archive/2006/01/four-things#comments</comments>
		<pubDate>Sun, 29 Jan 2006 16:31:20 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category>Memes</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2006-01-29:archive/2006/01/four-things</guid>
		<description><![CDATA[<p>Burn in eternal damnation, <a href="http://turnipspatch.com/" title="Jonathan fuckin’ Leighton">you</a>! Oh well, at least it gets me posting again…</p>]]></description>
			<content:encoded><![CDATA[<p>Burn in eternal damnation, <a href="http://turnipspatch.com/" title="Jonathan fuckin’ Leighton">you</a>! Oh well, at least it gets me posting again…</p>

<dl class="definition-list">

<dt>Four jobs I’ve had in my life</dt>
<dd>Slave</dd>
<dd>Waiter</dd>
<dd>Singer–songwriter</dd>
<dd>Model</dd>
<dt>Four movies <del>I can watch over and over</del> <ins>really like</ins></dt>
<dd><a href="http://imdb.com/title/tt0284837/" title="IMDb: Ali G Indahouse"><cite>Ali G Indahouse</cite></a></dd>
<dd><a href="http://imdb.com/title/tt0259711/" title="IMDb: Vanilla Sky"><cite>Vanilla Sky</cite></a></dd>
<dd><a href="http://imdb.com/title/tt0387564/" title="IMDb: Saw"><cite>Saw</cite></a></dd>
<dd><a href="http://imdb.com/title/tt0295178/" title="IMDb: Austin Powers in Goldmember"><cite>Austin Powers in Goldmember</cite></a></dd>
<dt>Four places I have lived</dt>
<dd><cite>Eksaarde</cite></dd>
<dd><cite>Grembergen</cite></dd>
<dd><cite>Middelkerke</cite> (during the holidays)</dd>
<dd><cite>Burkina Faso</cite></dd>
<dt>Four television shows I love to watch</dt>
<dd><cite>Lost</cite></dd>
<dd><cite>Trigger Happy</cite></dd>
<dd><cite>The Simpsons</cite></dd>
<dd><cite>Fawlty Towers</cite> — oh well…</dd>
<dt>Four places I have been on vacation</dt>
<dd><cite>De Haan</cite></dd>
<dd><cite>Westende</cite></dd>
<dd><cite>Middelkerke</cite> — see, this is my life</dd>
<dd>One of the rare times we spend our holidays abroad, we went to a sleepy little French town called <cite>Colombières Sur Orb</cite>. I managed to spend three weeks there with both my wrists plaster-casted. Fun!</dd>
<dt>Four of my favourite dishes</dt>
<dd>French fries</dd>
<dd>French fries</dd>
<dd>French fries</dd>
<dd>Everything with french fries, really</dd>
<dt>Four websites I visit daily</dt>
<dd><a href="http://mail.google.com/mail"><cite>Gmail</cite></a></dd>
<dd><a href="http://www.tibia.com/">The <cite>Tibia</cite> site</a>, especially the pages with player statistics</dd>
<dd><a href="http://flickr.com/"><cite>Flickr</cite></a></dd>
<dd>This one, of course</dd>
<dt>Four places I would rather be right now</dt>
<dd>In bed</dd>
<dd>In someone elses proverbial shoes</dd>
<dd>One year from now</dd>
<dd><cite><a href="http://www.bobbejaanland.be/en/">Bobbejaanland</a></cite> — not!</dd>
<dt>Four bloggers I am tagging</dt>
<dd>No way. There’s quite enough hate in this world already.</dd>
</dl>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2006/01/four-things/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Formatting a number with grouped thousands</title>
		<link>http://mathiasbynens.be/archive/2006/01/js-number-format</link>
		<comments>http://mathiasbynens.be/archive/2006/01/js-number-format#comments</comments>
		<pubDate>Sun, 08 Jan 2006 12:53:43 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category>JavaScript</category>
	<category><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2006-01-08:archive/2006/01/js-number-format</guid>
		<description><![CDATA[In <acronym title="PHP: Hypertext Preprocessor">PHP</acronym>, formatting a number with grouped thousands can easily peasily be done through the <a href="http://php.net/number_format" title="PHP: number_format()"><code>number_format()</code></a> function. It’s a shame JavaScript doesn’t have such a function.]]></description>
			<content:encoded><![CDATA[<p>In <acronym title="PHP: Hypertext Preprocessor">PHP</acronym>, formatting a number with grouped thousands can easily peasily be done through the <a href="http://php.net/number_format" title="PHP: number_format()"><code>number_format()</code></a> function. It’s a shame JavaScript doesn’t have such a function.</p>

<p>That’s where this script comes in handy. It has the same syntax as <a href="http://php.net/number_format" title="PHP: number_format()">the <acronym title="PHP: Hypertext Preprocessor">PHP</acronym> function it’s spoofing</a>, but adds two more parameters.</p>

<pre class="js"><code>function number_format(a, b, c, d) {
 // number_format(number, decimals, comma, formatSeparator)
 var k = '';
 if(a.indexOf('-') == 0) {
  k = '-';
  a = a * -1;
 }
 a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
 var e = a + '';
 var f = e.split('.');
 if(!f[0]) f[0] = '0';
 if(!f[1]) f[1] = '';
 if(f[1].length &lt; b){
  var g = f[1];
  for(var i = f[1].length + 1; i &lt;= b; i++) {
   g += '0';
  }
  f[1] = g;
 }
 if(d != '' &amp;&amp; f[0].length &gt; 3) {
  var h = f[0];
  f[0] = '';
  for(var j = 3; j &lt; h.length; j += 3) {
   i = h.slice(h.length - j, h.length - j + 3);
   f[0] = d + i +  f[0] + '';
  }
  j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
  f[0] = j + f[0];
 }
 c = (b &lt;= 0) ? '': c;
 return k + f[0] + c + f[1];
}</code></pre>

<p>These two examples should illustrate how it works. And if they don’t — here’s <a href="http://krijnhoetmer.nl/stuff/javascript/number-format/" title="Krijn Hoetmer: JavaScript: Formatting a number with grouped thousands">a nice test suite annex demo page of the script in action</a>.</p>

<ul>
<li><code>number_format(1234567890, 0, '.', ',')</code> would return <samp>1,234,567,890</samp>.</li>
<li><code>number_format(1234567890.119, 2, ',', '.')</code> would return <samp>1.234.567.890,12</samp>.</li>
</ul>

<p class="update"><strong>Update:</strong> Thanks to Alessandro Lia for pointing out <a href="#comment-8">a bug regarding negative numbers</a>. This is fixed now.</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2006/01/js-number-format/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The Anatomy Lecture of Dr. Nicolaes Tulp, as seen by Filip Van Herpe</title>
		<link>http://mathiasbynens.be/archive/2005/12/anatomy-lecture</link>
		<comments>http://mathiasbynens.be/archive/2005/12/anatomy-lecture#comments</comments>
		<pubDate>Fri, 02 Dec 2005 22:17:59 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category>Fun</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2005-12-02:archive/2005/12/anatomy-lecture</guid>
		<description><![CDATA[<dl class="image"><dt><img src="/images/anatomy-lecture.jpg" alt="The Anatomy Lecture of Dr. Nicolaes Tulp" width="500" height="375" /></dt>
<dd><cite>The Anatomy Lecture of Dr. Nicolaes Tulp</cite> by <cite>Rembrandt van Rijn</cite></dd>
</dl>]]></description>
			<content:encoded><![CDATA[<dl class="image">

<dt><a href="/images/large/anatomy-lecture.jpg" title="View this image in a larger size"><img src="/images/anatomy-lecture.jpg" alt="The Anatomy Lecture of Dr. Nicolaes Tulp" width="500" height="375" /></a></dt>
<dd><cite>The Anatomy Lecture of Dr. Nicolaes Tulp</cite> by <cite>Rembrandt van Rijn</cite></dd>
</dl>

<p>It was on a cold winter evening that a group of friends, as they did every week, gathered in the local pub to discuss matters such as science, religion, and the meaning of life. That night, after they all had agreed on some scientific facts — like the fact that it would probably take about 48 pints of beer to knock an average man of 75 kilos out — one of them, Nicolaes, brought up a different subject. <q>It is a common superstition that one could read the future out of the palm of a hand or the organs of an animal, but after a very long and hard study I have discovered that someone’s future can be read from his muscles, particularly the ones in his forearm.</q> Immediately, a heated discussion started between Nicolaes and one of his friends, Gerard, who didn’t believe him. <q>Well then, Nicolaes,</q> he yelled, <q>if you think you can predict the future, go ahead — read my arm.</q> <q>I will, I will, let me just get a knife to cut away your skin so we can have a closer look.</q> <q>Won’t that hurt a lot?</q> <q>Everything for science, Gerard. You weigh about 75 kilos, right? If you drink 47 pints of beer, that would stun you enough not to feel the pain while not losing consciousness.</q> So Gerard began to drink, and after 47 pints of beer he indeed was quite stunned. <q>Alright,</q> said Nicolaes, <q>lay him on the table and I will commence the experiment.</q> With great concentration, Nicolaes began to cut away the skin from Gerard’s forearm and poked a bit in the muscles. <q>I see, I see water, lots of water, I… Damned Gerard, couldn’t you have been to the bathroom before we started?</q> Gerard only burped in response. <q>Anyhow, let’s continue. Oh, this doesn’t look good, it says that you won’t get much older than 38 years. That’s odd, wasn’t it your 38<sup>th</sup> birthday last week? Gerard? Gerard?</q></p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2005/12/anatomy-lecture/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>301</title>
		<link>http://mathiasbynens.be/archive/2005/11/new-domain</link>
		<comments>http://mathiasbynens.be/archive/2005/11/new-domain#comments</comments>
		<pubDate>Thu, 17 Nov 2005 17:49:24 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category>Site News</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2005-11-17:archive/2005/11/new-domain</guid>
		<description><![CDATA[Welcome to the new domain! I now this makes the header image look stupid; I guess I’ll have to redesign soon. Anyway, all old stuff is redirected, but please feel free to update your bookmarks, links and whatchamacallit. Lots of stuff still has to be updated/fixed (*cough* contact form *cough*), but I’ll get by. Also, massive respect to <a href="http://krijnhoetmer.nl/" title="Krijn Hoetmer">Krijn</a> — who recently switched domains as well — for the excellent new hosting.]]></description>
			<content:encoded><![CDATA[<p>Welcome to the new domain! I now this makes the header image look stupid; I guess I’ll have to redesign soon. Anyway, all old stuff is redirected, but please feel free to update your bookmarks, links and whatchamacallit. Lots of stuff still has to be updated/fixed (*cough* contact form *cough*), but I’ll get by. Also, massive respect to <a href="http://krijnhoetmer.nl/" title="Krijn Hoetmer">Krijn</a> — who recently switched domains as well — for the excellent new hosting.</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2005/11/new-domain/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Spotted: HTML at NOTP</title>
		<link>http://mathiasbynens.be/archive/2005/11/notp-html</link>
		<comments>http://mathiasbynens.be/archive/2005/11/notp-html#comments</comments>
		<pubDate>Fri, 11 Nov 2005 22:01:19 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category>Life</category>
	<category>General</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2005-11-11:archive/2005/11/notp-html</guid>
		<description><![CDATA[The crazy <cite>Safri Duo</cite> dudes seem to think it’s cool to use <acronym title="HyperText Markup Language">HTML</acronym> soup in their decor whilst performing. Really, I had never needed to have a camera available as much as I did yesterday, when I saw something like <q><code>&#60;H2&#62;&#60;font size=2&#62;&#60;CENTER&#62;&#60;NOTP + AUDIENCE = MUSIC + APPLAUSE&#62;&#60;A href=&#34;/5get/results.asp?q=2342&#34;&#62;</code></q> appearing on their background screens.]]></description>
			<content:encoded><![CDATA[<p>The crazy <cite>Safri Duo</cite> dudes seem to think it’s cool to use <acronym title="HyperText Markup Language">HTML</acronym> soup in their decor whilst performing. Really, I had never needed to have a camera available as much as I did yesterday, when I saw something like <q><code>&#60;H2&#62;&#60;font size=2&#62;&#60;CENTER&#62;&#60;NOTP + AUDIENCE = MUSIC + APPLAUSE&#62;&#60;A href=&#34;/5get/results.asp?q=2342&#34;&#62;</code></q> appearing on their background screens.</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2005/11/notp-html/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The basics of becoming a browser nazi</title>
		<link>http://mathiasbynens.be/archive/2005/10/browser-nazi</link>
		<comments>http://mathiasbynens.be/archive/2005/10/browser-nazi#comments</comments>
		<pubDate>Fri, 28 Oct 2005 21:36:02 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category>JavaScript</category>
	<category><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></category>
	<category><acronym title="Cascading Style Sheets">CSS</acronym></category>
	<category><acronym title="(eXtensible) HyperText Markup Language"</category>
	<category><acronym title="HyperText Transfer Protocol">HTTP</acro</category>
	<category>General</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2005-10-28:archive/2005/10/browser-nazi</guid>
		<description><![CDATA[On in what ways the world of web developers would be a better place if only <acronym title="Internet Explorer">IE</acronym> wasn’t shit.]]></description>
			<content:encoded><![CDATA[<ul>
<li>Make proper use of web standards.</li>
<li>Serve your files with the correct <acronym title="Multipurpose Internet Mail Extensions">MIME</acronym> type. Don’t worry about <code>application/javascript</code> and <code>application/xhtml+xml</code>. Don’t even consider using <a href="http://mathiasbynens.be/archive/2005/04/php-xhtml-content-negotiation" title="XHTML content negotiation through PHP">long-winded <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> content negation scripts</a>.</li>
<li>Use Apache’s excellent MultiViews, and never type extensions when linking to files on your server again.</li>
<li><a href="http://krijnhoetmer.nl/stuff/css/linking-with-http-headers/" title="CSS: Linking to style sheets with HTTP headers">Use <acronym title="HyperText Transfer Protocol">HTTP</acronym> headers to link to stylesheets</a>.</li>
<li>Use <code>id="tags"</code>.</li>
<li>Use gzip compression for all text-based documents, such as whatever<acronym title="Markup Language">ML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym>, <acronym title="JavaScript">JS</acronym> and plenty other documents.</li>
</ul>

<p>Thank you.</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2005/10/browser-nazi/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Using WordPress as a blogroll manager</title>
		<link>http://mathiasbynens.be/archive/2005/10/wp-blogroll</link>
		<comments>http://mathiasbynens.be/archive/2005/10/wp-blogroll#comments</comments>
		<pubDate>Fri, 07 Oct 2005 16:29:24 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></category>
	<category><acronym title="(eXtensible) HyperText Markup Language"</category>
	<category><acronym title="HyperText Transfer Protocol">HTTP</acro</category>
	<category>WordPress</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2005-10-07:archive/2005/10/wp-blogroll</guid>
		<description><![CDATA[After <a href="http://blo.gs/">blo.gs</a> started to <q>temporarily</q> disable their search feature, I got pissed. It’s been months since the last time I was able to add a site to my own feckin’ blogroll. That’s right, I was using <a href="http://rebelpixel.com/projects/rp-blogroll/" title="rp–blogroll (blo.gs blogroll)">a <acronym title="WordPress">WP</acronym> plugin</a> to fetch my links from the rather slow blo.gs server every hour or so and cache the list locally.]]></description>
			<content:encoded><![CDATA[<p>After <a href="http://blo.gs/">blo.gs</a> started to <q>temporarily</q> disable their search feature, I got pissed. It’s been months since the last time I was able to add a site to my own feckin’ blogroll. That’s right, I was using <a href="http://rebelpixel.com/projects/rp-blogroll/" title="rp–blogroll (blo.gs blogroll)">a <acronym title="WordPress">WP</acronym> plugin</a> to fetch my links from the rather slow blo.gs server every hour or so and cache the list locally.</p>

<p>You might be interested in knowing that, as of version 1.5, <a href="http://wordpress.org/">WordPress</a> comes with a built-in link updater, which you can use periodically to check the latest updated time of the links in your blogroll. Every time <code>/wp-admin/update-links.php</code> is run, <acronym title="WordPress">WP</acronym> queries <a href="http://pingomatic.com/">Ping-o-Matic</a>, which returns a list of links and update times. Your links database, which happens to include a <code>link_updated</code> field, can then be updated.</p>

<p>Sounds great eh? It <em>is</em> great. The only problem is that obviously it’s impossible to visit the link updater every time you want your blogroll to be updated.</p>

<p>Here, you have two possible options; you can set up a cron job, or you can use some plugins to <em>fake</em> a cron job ;) The latter is the only method that works on every WordPress installation (this of course depends on server setup), so here goes.</p>

<ol>
<li>Go to the <cite>Link Manager</cite> in your <acronym title="WordPress">WP</acronym> admin section (<code>/wp-admin/link-manager.php</code>), and enter the links for your blogroll in a new category, for which you set the <cite>sort order</cite> to <q>updated</q>. If you’ve already got an account over at an online service such as <a href="http://blo.gs/">blo.gs</a> or <a href="http://blogrolling.com/">blogrolling.com</a>, you can quickly import your ’roll using the <acronym title="Outline Processor Markup Language">OPML</acronym> file containing the link data using the <cite>Blogroll Importer</cite> (located at <code>/wp-admin/link-import.php</code>). Obviously, this is much faster than manually entering the links one by one.</li>
<li>Install and activate <a href="http://dev.wp-plugins.org/file/wp-cron/trunk/wp-cron.php?format=raw">the <cite><acronym title="WordPress">WP</acronym>-Cron plugin</cite></a> if you haven’t already.</li>
<li>Go to <cite>Miscellaneous Options</cite> (<code>/wp-admin/options-misc.php</code>) and make sure the <q>Track Links’ Update Times</q> checkbox is ticked on.</li>
<li>Install and activate <a href="http://dev.wp-plugins.org/file/wp-cron/trunk/wp-cron-update-links.php?format=raw">the <cite><acronym title="WordPress">WP</acronym>-Cron Update Links</cite> plugin</a>.</li>
</ol>

<p>This will cause your blogroll to be updated every fifteen minutes (and one second). The great advantage of using <acronym title="WordPress">WP</acronym>’s own link manager over a fancy feed-fetchin’ plugin is that you now have full control over how your links are displayed. Say goodbye to <a href="http://noscope.com/journal/2005/10/blogroll-spam">blogroll spam</a>!</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2005/10/wp-blogroll/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Online CSS compressors</title>
		<link>http://mathiasbynens.be/archive/2005/09/css-compressors</link>
		<comments>http://mathiasbynens.be/archive/2005/09/css-compressors#comments</comments>
		<pubDate>Sun, 18 Sep 2005 12:51:03 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
	<category><abbr title="PHP: Hypertext Preprocessor">PHP</abbr></category>
	<category><acronym title="Cascading Style Sheets">CSS</acronym></category>
	<category><acronym title="HyperText Transfer Protocol">HTTP</acro</category>
		<guid isPermaLink="false">tag:mathiasbynens.be,2005-09-18:archive/2005/09/css-compressors</guid>
		<description><![CDATA[<a href="http://mezzoblue.com/" title="Dave Shea">Dave</a> <a href="http://mezzoblue.com/archives/2005/09/16/css_optimiza/" title="mezzoblue: CSS Optimization">writes in on <acronym title="Cascading Style Sheets">CSS</acronym> optimization</a>. I won’t get into <a href="http://mezzoblue.com/archives/2005/09/16/css_optimiza/comments/" title="Comments on “CSS Optimization”">the discussion</a> on whether the <del>optimization</del> <ins>compression</ins> of <acronym title="Cascading Style Sheets">CSS</acronym> files is actually worth the effort or not; instead I’ll try to make a comparison of online tools that do this. The article I linked to (well, more the comments on it) contains some good links. I went and used my current <acronym title="Cascading Style Sheets">CSS</acronym> as a <a href="http://mathiasbynens.be/examples/css-compressors/original.css" title="Go see the CSS I used for this test">10,241-byte test file</a>. Most tools allow you to set some options, such as readability (<abbr title="id est">i.e.</abbr> compression rate) and whether or not long hex codes should be shortened if possible. I didn’t enable options just for the sake of it — only those I would use in a real-life situation.]]></description>
			<content:encoded><![CDATA[<p><a href="http://mezzoblue.com/" title="Dave Shea">Dave</a> <a href="http://mezzoblue.com/archives/2005/09/16/css_optimiza/" title="mezzoblue: CSS Optimization">writes in on <acronym title="Cascading Style Sheets">CSS</acronym> optimization</a>. I won’t get into <a href="http://mezzoblue.com/archives/2005/09/16/css_optimiza/comments/" title="Comments on “CSS Optimization”">the discussion</a> on whether the <del>optimization</del> <ins>compression</ins> of <acronym title="Cascading Style Sheets">CSS</acronym> files is actually worth the effort or not; instead I’ll try to make a comparison of online tools that do this. The article I linked to (well, more the comments on it) contains some good links. I went and used my current <acronym title="Cascading Style Sheets">CSS</acronym> as a <a href="http://mathiasbynens.be/examples/css-compressors/original.css" title="Go see the CSS I used for this test">10,241-byte test file</a>. Most tools allow you to set some options, such as readability (<abbr title="id est">i.e.</abbr> compression rate) and whether or not long hex codes should be shortened if possible. I didn’t enable options just for the sake of it — only those I would use in a real-life situation.</p>

<table>

<caption>Comparison of online <acronym title="Cascading Style Sheets">CSS</acronym> optimization tools</caption>
<thead>
<tr class="row-header">
<th scope="col">Tool</th>
<th scope="col">Compressed file</th>
<th scope="col">Size (bytes)</th>
<th scope="col">Compression rate</th>
<th scope="col"><acronym title="Unicode Transformation Format, 8-bit encoding form">UTF-8</acronym> support</th>
<th scope="col">Extras</th>
</tr>

</thead>

<tbody>

<tr>
<th scope="row"><a href="http://flumpcakes.co.uk/css/optimiser/">Flump’s Online <acronym title="Cascading Style Sheets">CSS</acronym> Optimizer</a></th>
<td><a href="http://mathiasbynens.be/examples/css-compressors/optimized/flump-css-optimizer.css"><code>flump-css-optimizer.css</code></a></td>
<td>8,926</td>
<td>12.84%</td>
<td>Yes</td>
<td>Option to convert absolute values (<code>px</code> &#38; <code>pt</code>) into relative values (<code>em</code>)</td>
</tr>

<tr>
<th scope="row"><a href="http://cssoptimiser.com/"><acronym title="Cascading Style Sheets">CSS</acronym> Optimizer</a></th>
<td><a href="http://mathiasbynens.be/examples/css-compressors/optimized/css-optimizer.css"><code>css-optimizer.css</code></a></td>
<td>7,716</td>
<td>24.66%</td>
<td>No!</td>
<td>None, except for the lack of user-friendliness</td>
</tr>

<tr>
<th scope="row"><a href="http://cdburnerxp.se/cssparse/css_optimiser.php"><acronym title="Cascading Style Sheets">CSS</acronym> Formatter and Optimizer</a></th>
<td><a href="http://mathiasbynens.be/examples/css-compressors/optimized/formatter-optimizer.css"><code>formatter-optimizer.css</code></a></td>
<td>7,548</td>
<td>26.30%</td>
<td>Yes</td>
<td>Option to reorder file alphabetically by selectors and properties</td>
</tr>

<tr>
<th scope="row"><a href="http://iceyboard.no-ip.org/projects/css_compressor">Icey’s <acronym title="Cascading Style Sheets">CSS</acronym> Compressor</a></th>
<td><a href="http://mathiasbynens.be/examples/css-compressors/optimized/icey-css-compressor.css"><code>icey-css-compressor.css</code></a></td>
<td>5,800</td>
<td>43.36%</td>
<td>Yes</td>
<td>Compression statistics galore!</td>
</tr>

</tbody>

</table>
<p>When someday I’ll decide to <q>optimize</q> my <acronym title="Cascading Style Sheets">CSS</acronym>, I’ll probably first sort the file alphabetically by selector names, and then run it through <a href="http://iceyboard.no-ip.org/">Icey</a>’s <a href="http://iceyboard.no-ip.org/projects/css_compressor">compressor</a>, which turns out to be the very best. However, every tool has its pros and cons, as you can see. That is, except for the <a href="http://cssoptimiser.com/"><acronym title="Cascading Style Sheets">CSS</acronym> Optimizer</a>, which doesn’t quite have any pros. And the fact that it doesn’t handle <acronym title="Unicode Transformation Format, 8-bit encoding form">UTF-8</acronym> characters properly<sup><a href="#note-1" title="Go read note #1">[1]</a></sup> is remarkable, to say the least. In my opinion it could use an update.</p>

<p>If you know of another online <acronym title="Cascading Style Sheets">CSS</acronym> compressor to add to the list, please do let me know.</p>

<p class="note" id="note-1"><strong>Note:</strong> Does anyone know how to read a file line by line through <a href="http://php.net/fgets"><code>fgets()</code></a> in <acronym title="PHP: Hypertext Preprocessor">PHP</acronym> without messing up special <acronym title="Unicode Transformation Format, 8-bit encoding form">UTF-8</acronym> chars? Because that’s where this tool fails…</p>]]></content:encoded>
			<wfw:commentRSS>http://mathiasbynens.be/archive/2005/09/css-compressors/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
