<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="FeedCreator 1.7.2" --><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>KvZ TechBlog</title>
        <description>Kevin van Zonneveld's techblog.</description>
        <link>http://kevin.vanzonneveld.net/</link>
        <lastBuildDate>Mon, 15 Mar 2010 15:20:02 +0100</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kvz" /><feedburner:info uri="kvz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><item>
            <title>CakePHP and Nginx</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/diXHE66NbwI/</link>
            <description>I still got sites running Apache, but all new projects are launched with
Nginx. I don't need many of the features that Apache offers, and the speed
gain of Nginx is just tremendous. Once you've experienced it, I doubt
you'll want to go back.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/diXHE66NbwI" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 24 Feb 2010 19:25:00 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/cakephp_and_nginx/</feedburner:origLink></item>
        <item>
            <title>CakePHP REST Plugin presentation</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ZrBPy0sOTR0/</link>
            <description>At our company we have a lot of uses for a solid API. We can use it to
distribute config files, have servers report in, let customers edit DNS
records using their own interface, etc. Now that I'm converting all of our
legacy code to a big CakePHP application, the API needed a revisit as well.
I chose to use REST as a standard, read about everything related to Cake
&amp;amp; REST, and started hacking on a reusable plugin. The idea is that you
can drop it in any application and unlock existing functionality to REST
with minimal changes to your code.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ZrBPy0sOTR0" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 13 Jan 2010 09:27:29 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/cakephp_rest_plugin_presentation/</feedburner:origLink></item>
        <item>
            <title>Run Node.js as a Service on Ubuntu Karmic</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/f3inLix6rI4/</link>
            <description>The core of our new project&amp;nbsp;runs on Node.js. With Node you can write
very fast JavaScript programs serverside. It's pretty easy to install Node,
code your program, and run it. But how do you make it run nicely in the
background like a true server?&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/f3inLix6rI4" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Tue, 15 Dec 2009 19:51:20 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/</feedburner:origLink></item>
        <item>
            <title>Git migration - Remove passwords from history</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/epPBUqWIN1g/</link>
            <description>When migrating projects over to GitHub, I found there were still some
passwords inside my SVN repositories. Obviously it's not good practice to
store your passwords in a code repository - let alone at a remote location,
so I wanted to replace all passwords. Not only in the current version, but
in all commits that have been made over the past 3 years. Luckily with Git
- you can.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/epPBUqWIN1g" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 08 Nov 2009 13:58:31 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/git_migration_remove_passwords_from_history/</feedburner:origLink></item>
        <item>
            <title>Generate HTML with PHP</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/cTZNbp1gaLY/</link>
            <description>Hi. Have you met KvzHTML? It's a standalone PHP Class for generating HTML.
It's been hiding deep inside the caverns of my secret GitHub repo: kvzlib -
a collection of code snippets too small or unfinished to deserve their own
repository. But I find working with this class so pleasant, I thought I'd
share the fun.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/cTZNbp1gaLY" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 11 Oct 2009 20:40:09 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/generate_html_with_php/</feedburner:origLink></item>
        <item>
            <title>Svn to Git</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/CoRlTfjRiw0/</link>
            <description>Today I've moved all of my SVN repositories over to GitHub. 5 private reps
and 4 public ones. Two of which you may know: PHP.JS and System_Daemon.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/CoRlTfjRiw0" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 03 Sep 2009 21:50:44 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/svn_to_git/</feedburner:origLink></item>
        <item>
            <title>Flush memcached using BASH</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/J4EAwxBnsOw/</link>
            <description>If you store application data in memcache, you may want to invalidate it
once you deploy a new version to avoid corruption or weird results. There
are several ways to do this but I recently tried one using nothing but
BASH, and I like it.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/J4EAwxBnsOw" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 19 Aug 2009 09:43:35 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/flush_memcached_using_bash/</feedburner:origLink></item>
        <item>
            <title>Prepare for PHP 5.3</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/wsLdFPHrGYY/</link>
            <description>PHP 5.3 is a big leap forward for PHP and brings of a lot of neat features.
However, big leaps can also mean big changes and potentially big breakage
when it comes to backwards compatibiltiy. 
I did some experimenting with running a big legacy application and a
CakePHP application on PHP 5.3 and would like to share my findings with
you. Here are a couple of tips to prepare your code for PHP 5.3&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/wsLdFPHrGYY" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 29 Jul 2009 18:53:20 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/prepare_for_php_53/</feedburner:origLink></item>
        <item>
            <title>Notes on CakeFest 3</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/8cq4IW9IsKY/</link>
            <description>Looking back at a great CakeFest in Berlin, I learned a lot about CakePHP
and met many nice and inspiring people. Here are some conference notes I
took that where particularly useful or new to me.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/8cq4IW9IsKY" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 15 Jul 2009 10:13:39 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/notes_on_cakefest_3/</feedburner:origLink></item>
        <item>
            <title>Create short IDs with PHP - Like Youtube or TinyURL</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/C0coeC8_Ido/</link>
            <description>IDs are often numbers. Unfortunately there are only 10 digits to work with,
so if you have a lot of records, IDs tend to get very lengthy. For
computers that's OK. But human beings like their IDs as short as possible.
So how can we make IDs shorter? Well, we could borrow characters from the
alphabet as have them pose as additional numbers.... Alphabet to the
rescue!&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/C0coeC8_Ido" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 10 Jun 2009 17:52:46 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/create_short_ids_with_php_like_youtube_or_tinyurl/</feedburner:origLink></item>
        <item>
            <title>Install the Best Coding Font</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/auksn2RrTM8/</link>
            <description>If you are in IT professionally (coding or sysadmin) you will be staring at
monospaced fonts for many many hours a day. So it's probably justified to
spend 2 minutes picking a very good one. It can make your work (typing ; )
just a little bit more pleasing.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/auksn2RrTM8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Mon, 25 May 2009 15:00:00 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/install_the_best_coding_font/</feedburner:origLink></item>
        <item>
            <title>Fix Flash Problems on Ubuntu</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/OyN05ycAxBY/</link>
            <description>I had some difficulties playing Flash videos lately. Problems ranged from
lagging sound, to ugliness, to idling black screens, to strange gray Play
buttons that didn't do anything. The following solved my Flash issues on
Ubuntu.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/OyN05ycAxBY" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 17 May 2009 13:30:05 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/fix_flash_problems_on_ubuntu/</feedburner:origLink></item>
        <item>
            <title>Have fun with Google Chart</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/FXWpWI9XPiE/</link>
            <description>Pictures say more than a thousand words. This is true for your data as
well. With Google Chart you can now easily generate charts of your data. No
expertise required. Just make sure you format your data correctly, add it
to the Google Chart URL, and it will return a nice graph.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/FXWpWI9XPiE" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 01 Apr 2009 13:20:22 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/have_fun_with_google_chart/</feedburner:origLink></item>
        <item>
            <title>Improve MySQL Insert Performance</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/kIxr_ETpdos/</link>
            <description>Sometimes MySQL needs to work hard. I've been working on an import script
that fires a lot of INSERTs. Normally our database server handles 1,000
inserts / sec. That wasn't enough. So I went looking for methods to improve
the speed of MySQL inserts and was finally able to increase this number to
28,000 inserts per second. Checkout my late night benchmarking adventures.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/kIxr_ETpdos" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Tue, 31 Mar 2009 16:36:58 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/improve_mysql_insert_performance/</feedburner:origLink></item>
        <item>
            <title>Boost MySQL Performance by 1200%</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/FhVC8BynazY/</link>
            <description>Sorry folks, this article was based on flawed benchmark results, I will
soon post an update!&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/FhVC8BynazY" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Mon, 30 Mar 2009 23:00:00 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/boost_mysql_performance_by_1200/</feedburner:origLink></item>
        <item>
            <title>SQL Formatting</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/3YRkKA7iFtg/</link>
            <description>With all the abstraction layers between code &amp;amp; database, and now with
my recent CakePHP adventures: The need for writing SQL statements
deminishes. But over the years I've developed my own way of formatting
them. And before I'll have to wave queries goodbye forever ;) I just want
to put it out there.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/3YRkKA7iFtg" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 04 Mar 2009 12:51:48 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/sql_formatting/</feedburner:origLink></item>
        <item>
            <title>7 Steps to better PEAR documentation</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/DIsndEQkk30/</link>
            <description>If you've written a PEAR package, it's probably a good idea to submit some
end user documentation. Here's how to do it.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/DIsndEQkk30" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 22 Feb 2009 21:00:52 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/7_steps_to_better_pear_documentation/</feedburner:origLink></item>
        <item>
            <title>Post flood</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/r7SPuP8mNBQ/</link>
            <description>Hello everyone. Two days ago Feedburner offered me to merge my account with
Google. I thought: why not. But apparently now the URL of my feeds changed.
This messed up my stats, and your RSS reader has marked all of my posts as
unread. I'm very sorry for the inconvenience.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/r7SPuP8mNBQ" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Tue, 03 Feb 2009 13:29:40 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/post_flood/</feedburner:origLink></item>
        <item>
            <title>A DRY piece of Cake</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/gxbeCFle6IA/</link>
            <description>So I've been learning CakePHP the last few days. Bit by bit I've been
trying to port a lecagy admininistration app to Cake. 'Secretly' linking
menuitems to finished Cake parts as we go. And I must say: I'm pretty
excited. I did run into a disturbing conclusion though. I estimated the
legacy app will have over 300 Models &amp;amp; Controllers once finished. That
could easily add up to (300 x 4 =) 1200 views. And here I am, creating a
maintenance hell while trying to solve one!&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/gxbeCFle6IA" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 30 Jan 2009 08:25:32 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/a_dry_piece_of_cake/</feedburner:origLink></item>
        <item>
            <title>Create daemons in PHP</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/7ohDklURQJs/</link>
            <description>Everyone knows PHP can be used to create websites. But it can also be used
to create desktop applications and commandline tools. And now with a class
called System_Daemon, you can even create daemons using nothing but PHP.
And did I mention it was easy?&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/7ohDklURQJs" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 09 Jan 2009 15:50:24 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/</feedburner:origLink></item>
        <item>
            <title>Customize a fresh Ubuntu Desktop</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/QgARJq27VDg/</link>
            <description>Following Alan Pope and Christer Edwards, I too felt the need to log
everything I that I setup right after an Ubuntu Desktop install. It ranges
from customizing the user interface to setting up a programmers IDE. It's
mainly for future reference by myself, but may bring you on a couple of
ideas as well.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/QgARJq27VDg" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sat, 13 Dec 2008 13:47:22 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/customize_a_fresh_ubuntu_desktop/</feedburner:origLink></item>
        <item>
            <title>My new IDE: NetBeans</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/vzhOwHl2UE8/</link>
            <description>&lt;p&gt;Writing code requires two important things: &lt;u&gt;creativity&lt;/u&gt; &amp;amp;
&lt;u&gt;discipline&lt;/u&gt;. The &lt;strong&gt;creativity&lt;/strong&gt; to create the unknown,
unexplored, exciting parts of software. And the &lt;strong&gt;discipline&lt;/strong&gt;
to create the dull &amp;amp; all-too-well-known parts of software /
documentation. &lt;br /&gt;
You may come up with new ways (or use frameworks) to reduce repetitive
work. Effectively beating discipline with creativity. But boring stuff will
still always be there in some form. And on days when creativity is low, you
may need to tap into that jar of discipline so you can still be productive,
by doing things you never feel like.&lt;br /&gt;
But every now &amp;amp; then, there is a day when bot...&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/vzhOwHl2UE8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Tue, 02 Dec 2008 15:55:37 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/my_new_ide_netbeans/</feedburner:origLink></item>
        <item>
            <title>Search for a package with apt-file</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/vYzJ49EcjSs/</link>
            <description>Recently I needed ogg123 on an Ubuntu server to convert some media.
Naturally, I wanted to use aptitude to install it, but I didn't know what
package it was in. Now, you can always google of course, but you can also
use system commands to find the package you need.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/vYzJ49EcjSs" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sat, 08 Nov 2008 15:22:19 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/search_for_a_package_with_aptfile/</feedburner:origLink></item>
        <item>
            <title>Introducing 2 new feeds</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/BdDtW_oH2nM/</link>
            <description>Hi there. I'm making use of RSS feeds more than I did before. This has to
do with Google Reader - which is very neat - and a lack of time. Having
sites keep ME up to date, is way more relaxed than scouring the web myself.
So I figured I might want to return the favor and make my blog a bit more
accessible by introducing two new feeds.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/BdDtW_oH2nM" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 26 Oct 2008 17:04:35 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/introducing_2_new_feeds/</feedburner:origLink></item>
        <item>
            <title>org.eclipse.emf.ecore.util.EcoreEMap</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/XTG1nI2Y2nw/</link>
            <description>One error that has bugged my Eclipse PDT for a long time, was
org.eclipse.emf.ecore.util.EcoreEMap $DelegateEObjectContainmentEList. A
vague error, not much to go on, not many hits on google either. Turned out
it had to do with the version of my Java Runtime Environment I was using.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/XTG1nI2Y2nw" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 16 Oct 2008 10:06:36 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/orgeclipseemfecoreutilecoreemap/</feedburner:origLink></item>
        <item>
            <title>Rescuing my messed up Eclipse</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/YMKRn9wOh58/</link>
            <description>Hi folks. As you may or may not know, I have a love/hate relationship with
my IDE: Eclipse PDT. For times and times we get along well. But once every
while it gets messed up, and it's a pain to straighten it out again. Or at
least, it was.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/YMKRn9wOh58" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Tue, 14 Oct 2008 15:21:13 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/rescuing_my_messed_up_eclipse/</feedburner:origLink></item>
        <item>
            <title>How virtualization will improve your code</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/_hTxT5P7alo/</link>
            <description>&lt;p&gt;Good testing will result in better code. If you have to wait endlessly
for on SVN commits, uploads or compile steps, you will simply produce less
inventive code. This has to do with: patience, creativity flow, will, and
of course time. Constantly being interrupted breaks concentration. If
there's one thing I've really learned, it's &lt;strong&gt;invest in a good
testing environment&lt;/strong&gt;. Rapid review of code results will pay off (I
promise).&lt;br /&gt;
So it's OK to spend some time on &lt;a
href="http://kevin.vanzonneveld.net/techblog/article/my_new_ide_netbeans/"&gt;learning
a good IDE&lt;/a&gt;, and another trick to improve the speed &amp;amp; quality of
development, is to virtualize your production pl...&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/_hTxT5P7alo" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Mon, 06 Oct 2008 12:06:44 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/how_virtualization_will_improve_your_code/</feedburner:origLink></item>
        <item>
            <title>PEAR Coding Standards Changed!</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/res6buz5G90/</link>
            <description>In another article I've told you about how I would like to see one rule
removed from the PEAR Coding Standards. This rule would allow developers a
bit more flexibility, while staying true to the convention.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/res6buz5G90" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 24 Sep 2008 21:39:05 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/pear_coding_standards_changed/</feedburner:origLink></item>
        <item>
            <title>Virtualization compared</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/-cGynz4oJ7s/</link>
            <description>Recently I've been experimenting with Virtual machines for my development
environment. The goal was to create a Virtual Machine that resembles our
main production server, and have that Virtual Machine mount my workspace
project directory as it's DocumenRoot. This way, my code could be served
&amp;amp; tested after every save in my IDE. So no more building / committing
delays. And all I could mess up was a Virtual Machine.

I didn't know what software to start with and just tried the bunch. Here's
my ever so subjective comparison 'chart' on Virtual Machine software.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/-cGynz4oJ7s" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sat, 13 Sep 2008 15:44:17 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/virtualization_compared/</feedburner:origLink></item>
        <item>
            <title>PHP Recursive str_replace: replaceTree</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/tGmPcXnigpU/</link>
            <description>Working with trees
When working with tree data structures you often need to craft them in
different ways. PHP offers a lot of functions to change the shape of
arrays, but often they only go 1 level deep. Trees can count an almost
infinite number of levels. Hence we need recursive replacements for our
beloved array &amp;amp; string functions.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/tGmPcXnigpU" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 05 Sep 2008 21:16:43 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/php_recursive_str_replace_replacetree/</feedburner:origLink></item>
        <item>
            <title>PHP Recursive ksort: ksortTree</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/VHOMRPkTPeg/</link>
            <description>Working with trees
When working with tree data structures you often need to craft them in
different ways. PHP offers a lot of functions to change the shape of
arrays, but often they only go 1 level deep. Trees can count an almost
infinite number of levels. Hence we need recursive replacements for our
beloved array functions.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/VHOMRPkTPeg" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 05 Sep 2008 21:08:50 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/php_recursive_ksort_ksorttree/</feedburner:origLink></item>
        <item>
            <title>PEAR Coding Standards Change?</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ovgPIcH0aak/</link>
            <description>&lt;p&gt;Since a couple of months now, I've been involved with &lt;a
href="http://pear.php.net"&gt;PEAR&lt;/a&gt; as a &lt;a
href="http://pear.php.net/package/System_Daemon"&gt;contributor&lt;/a&gt;.
Contributing to PEAR means adhering to the &lt;a
href="http://pear.php.net/manual/en/standards.php"&gt;PEAR Coding
Standards&lt;/a&gt;. Their standards have actually been thought over, and using
them for projects (also outside of PEAR), leads to consistency, and makes
it easier for many developers to understand each other's code. &lt;br /&gt;
&lt;br /&gt;
Code can be scanned and checked for conformity using the &lt;a
href="http://pear.php.net/package/PHP_CodeSniffer"&gt;PHP CodeSniffer&lt;/a&gt;
package.&lt;br /&gt;
&lt;br /&gt;
It took me a while to get rid...&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ovgPIcH0aak" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 22 Aug 2008 11:21:59 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/pear_coding_standards_change/</feedburner:origLink></item>
        <item>
            <title>Enhance PHP session management</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/MckVxG84Lc8/</link>
            <description>In PHP, sessions can keep track of authenticated in users. They are an
essential building block in today's websites with big communities and a lot
of user activity. Without sessions, everyone would be an anonymous
visitor.
In system terms, PHP sessions are little files, stored on the server's
disk. But on high traffic sites, the disk I/O involved, and not being able
to share sessions between multiple webservers make this default system far
from ideal. This is how to enhance PHP session management in terms of
performance and shareability.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/MckVxG84Lc8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 22 Jun 2008 11:44:12 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/enhance_php_session_management/</feedburner:origLink></item>
        <item>
            <title>My new IDE: Eclipse PDT</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/jl60gwtaL9I/</link>
            <description>I've been programming a lot with Quanta which is a leightweight kdevelop
based IDE. It did the trick for quite some time, but recent developments in
my coding life like SVN brought me on a Quest for my new ultimate PHP IDE.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/jl60gwtaL9I" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 11 Apr 2008 13:08:24 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/my_new_ide_eclipse_pdt/</feedburner:origLink></item>
        <item>
            <title>Better performance with mod_deflate</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/FnmNBRZ8RB4/</link>
            <description>I used to use Dean Edwards Javascript Packer a lot to compress my
Javascript sources. Libraries of 100kB could easily shrink to 30kB and that
saves load times &amp;amp; bandwidth. A good writeup by Julien Lecompte made me
realize that there were better ways.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/FnmNBRZ8RB4" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sat, 29 Mar 2008 10:58:58 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/better_performance_with_mod_deflate/</feedburner:origLink></item>
        <item>
            <title>Determine SID of Windows user</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/7Q3Mk2PvQ8I/</link>
            <description>Sometimes when digging real deep into Windows like I recently had to, you
need to have the Windows SID (Security Identifier) of a local user. I
wasn't able to find any standard way of obtaining this info, so I wrote
this little VBScript. Might help some people, might not. Putting this
online anyway ;)&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/7Q3Mk2PvQ8I" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 26 Mar 2008 18:37:31 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/determine_sid_of_windows_user/</feedburner:origLink></item>
        <item>
            <title>Allow Windows users to restart service</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ojmqo4I0g0w/</link>
            <description>Let's say you want your local restricted users to be able to restart
specific services. On linux you'd probably type visudo. In Windows I found,
you have to dig a little deeper into the system and really do your
research. I needed several sites, programs and articles. So I thought it
might be useful to others if I'd bundle all the required information in one
place. Here it is.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ojmqo4I0g0w" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 26 Mar 2008 18:16:15 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/allow_windows_users_to_restart_service/</feedburner:origLink></item>
        <item>
            <title>Class 'Imagick' not found</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/_7AkuDAtTKo/</link>
            <description>I tried to do some Image Magick with PHP recently on an Ubuntu Feisty
machine, and even though I had the required package: 'php5-imagick'
installed, and I updated my php.ini with imagick.so, I kept getting the
error Class 'Imagick' not found. This is how I eventually fixed it.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/_7AkuDAtTKo" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 27 Feb 2008 21:13:15 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/class_imagick_not_found/</feedburner:origLink></item>
        <item>
            <title>PHP: tiff2pdf</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/-NmJcWY3X3A/</link>
            <description>Or: How to convert multipage TIFF to PDF in PHP.
Let's say you have a fax with multiple pages that has been stored as a
TIFF and you want to convert it to PDF using PHP for digital document flow.
In this article I will show you a tiff2pdf function for PHP, because it
cannot be done directly with ImageMagick.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/-NmJcWY3X3A" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 28 Nov 2007 17:36:39 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/php_tiff2pdf/</feedburner:origLink></item>
        <item>
            <title>Tranfer all MySQL databases to another server</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/d8krqJuWOrA/</link>
            <description>Recently I had to migrate all MySQL databases from one server to another.
This was a one time only operation, so setting up replication wasn't an
option. And restoring a backup on the new server involved more downtime
than strictly necessary. I figured the most ideal way would be to dump the
active MySQL directly into the new MySQL instance. And that's what I did.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/d8krqJuWOrA" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 22 Nov 2007 02:46:37 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/tranfer_all_mysql_databases_to_another_server/</feedburner:origLink></item>
        <item>
            <title>Disable snapping windows in compiz-fusion</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/30jnfL3tqXw/</link>
            <description>Running compiz-fusion for some time, one thing started to annoy me.
Snapping windows. The first thing I obviously looked for was the Snapping
Windows Plugin. But that was already disabled.
I'm blogging the setting that controls this behavior because it took me
some time to find it, I think other people may find it contra productive as
well.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/30jnfL3tqXw" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 18 Oct 2007 19:12:41 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/disable_snapping_windows_in_compizfusion/</feedburner:origLink></item>
        <item>
            <title>Upgrade to Ubuntu Gutsy with Compiz-Fusion</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/n1yr_OhRjvs/</link>
            <description>&lt;p&gt;&lt;img src="../../../docs/dump/compiz-fusion.png" alt="" align="left" /&gt;In
Ubuntu Feisty I've been using compiz-fusion from Trevi&amp;ntilde;o&amp;rsquo;s
Ubuntu Repository in combination with a nVidia driver provided by Envy &lt;a
href="../../article/enable_compizfusion_in_ubuntu_feisty/"&gt;like in this
how-to&lt;/a&gt;. Running those cutting edge Feisty versions allowed me to have
all the nice features that were being developed and lose some bugs that
persisted in stable versions, like black windows &amp;amp; strange borders.&lt;br
/&gt; &lt;br /&gt; But two months ago I upgraded to Gutsy and you will be happy to
know that Ubuntu Gutsy has got every awesome feature &amp;amp; bugfix in it's
own standard software. So t...&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/n1yr_OhRjvs" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 17 Oct 2007 20:06:40 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/upgrade_to_ubuntu_gutsy_with_compizfusion/</feedburner:origLink></item>
        <item>
            <title>Upgrade any version of Ubuntu Desktop</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/QXy_iIYf8Wo/</link>
            <description>I often hear about people who want to upgrade their version of Ubuntu with
tools like apt-get, but if you run a desktop version of Ubuntu, there is a
much better tool called update-manager. There are a lot of ways to upgrade
Ubuntu. But this one is the best.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/QXy_iIYf8Wo" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 14 Oct 2007 20:18:17 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/upgrade_any_version_of_ubuntu_desktop/</feedburner:origLink></item>
        <item>
            <title>Convert anything to Tree Structures in PHP</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/Dnpfvd1rDgk/</link>
            <description>I recently faced a programming challenge that almost broke my brain. I
needed to create a function that could explode any single-dimensional array
into a full blown tree structure, based on the delimiters found in it's
keys. Tricky part was size of the tree could be infinite. I called the
function: explodeTree. And maybe it's best to first look at an example.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/Dnpfvd1rDgk" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 03 Oct 2007 21:49:06 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/convert_anything_to_tree_structures_in_php/</feedburner:origLink></item>
        <item>
            <title>Change more display settings in Ubuntu</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/Mfgii6MeLI8/</link>
            <description>It's no secret I like Ubuntu the best. But what strikes me as odd, is that
it does not come standard with a good tool to change the display settings.
Sure, you can change the Screen Resolution, but what about cloning to
another device, extending the desktop to a second screen, changing the
driver, or adjusting the refresh rates to enable more resolutions? There
currently is no graphical way to do this in GNOME, so for this you had to
manually change the X config file, or run a third party tool like
nvidia-settings. But now I found a great GTK tool that can do it for you.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/Mfgii6MeLI8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Mon, 24 Sep 2007 17:09:51 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/change_more_display_settings_in_ubuntu/</feedburner:origLink></item>
        <item>
            <title>Get an article's Digg count in PHP</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/XmmsJGE9D1U/</link>
            <description>If you're like me and you're interested in the stats of your website or
blog, you might also want to know how many Diggs all of your articles have
received. But that can become quite a pain when you have more and more
articles, pages or blog posts. So why not let PHP retrieve the Digg count
of your articles so you can use it in graphs or other statistic tools?&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/XmmsJGE9D1U" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 13 Sep 2007 12:31:12 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/get_an_articles_digg_count_in_php/</feedburner:origLink></item>
        <item>
            <title>Create your own screencast</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/IW7oJvL6RF4/</link>
            <description>Recently I've seen a lot of screencasts in the Planet Ubuntu RSS feed. A
screencast is an embeded flash video of your desktop, often used in
tutorials instead of screenshots. I wondered if I could make these online
flash videos myself; turns out, it's pretty easy! So in this article I will
cover how to install the video capturing tool, how to use it, how to
convert the video to a flash video (flv) file, and finally how to embed a
flash player in your site just like YouTube. Create your own screencasts in
5 easy steps!&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/IW7oJvL6RF4" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 05 Sep 2007 20:26:43 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/create_your_own_screencast/</feedburner:origLink></item>
        <item>
            <title>Fit more on one screen using DPI</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/dlhIUmSaziA/</link>
            <description>A couple of years ago when everyone still had giant CRT monitors,
resolutions of 1600x1200 were pretty common. Nowadays however 19&amp;quot; TFT
monitors often cannot scale higher than 1280x1024. So how can we still fit
more on one screen? DPI can help!&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/dlhIUmSaziA" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 29 Aug 2007 20:35:23 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/fit_more_on_one_screen_using_dpi/</feedburner:origLink></item>
        <item>
            <title>Login automatically with SSH keys</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/NVEpDwMPxoI/</link>
            <description>With SSH you can securely login to any Linux server and execute commands
remotely. You can even use SSH to transfer and synchronize files from one
server to another. Automating these tasks can make your life easier, but
normally SSH prevents that because it requires you to login every time.
Well, not anymore, in this article I will show you how to connect to SSH
without a password.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/NVEpDwMPxoI" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 19 Aug 2007 10:42:32 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/login_automatically_with_ssh_keys/</feedburner:origLink></item>
        <item>
            <title>Synchronize files with rsync</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/8Zlsqnczjmg/</link>
            <description>Synchronizing files from one server to another is quite awesome. You can
use it for backups, for keeping web servers in sync, and much more. It's
fast and it doesn't take up as much bandwidth as normal copying would. And
the best thing is, it can be done with only 1 command. Welcome to the
wonderful world of rsync.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/8Zlsqnczjmg" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 16 Aug 2007 15:25:31 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/synchronize_files_with_rsync/</feedburner:origLink></item>
        <item>
            <title>List of social bookmarking sites</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/SjZfMHJryu8/</link>
            <description>A good way for sites or articles to get known is submitting to social
bookmarking sites, so submitting should be as easy as possible for your
visitors. But gathering information on the best social bookmarking sites,
their icons, submission URLs, and ranking is quite a pain. And so I did it
for you. I'll also give you a PHP example of how to integrate social
bookmarking sites in your website.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/SjZfMHJryu8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 05 Aug 2007 20:09:06 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/list_of_social_bookmarking_sites/</feedburner:origLink></item>
        <item>
            <title>Delete files securely with shred</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/WFquH6x_KXc/</link>
            <description>Deleting a file or reformatting a disk does not destroy your sensitive
data. The data can easily be undeleted. That's a good thing if you
accidentally throw something away, but what if your trying to destroy
financial data, bank account passwords, or classified company information.
What if you want to clean your computer before selling it for instance?&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/WFquH6x_KXc" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 03 Aug 2007 22:40:59 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/delete_files_securely_with_shred/</feedburner:origLink></item>
        <item>
            <title>Restore packages using dselect-upgrade</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/29htTOgW9wM/</link>
            <description>It's always a good idea to backup important data. Your files and settings
can easily be archived. But how can you backup &amp;amp; restore all
applications that you've installed over the last couple of years? Here's an
easy trick that works for both desktops &amp;amp; servers, and that can also be
used to synchronize installed packages in a web cluster, making all the
servers run the same software.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/29htTOgW9wM" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 03 Aug 2007 14:04:25 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/restore_packages_using_dselectupgrade/</feedburner:origLink></item>
        <item>
            <title>Survive heavy traffic with your webserver</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/DmXBYGMZQNw/</link>
            <description>Recently two of my articles reached the Digg frontpage at the same day. My
web server isn't state of the art and it had to handle gigantic amounts of
traffic. But still it served pages to visitors swiftly thanks to a lot of
optimizations. This is how you can prevent heavy traffic from killing your
server.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/DmXBYGMZQNw" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 01 Aug 2007 20:29:30 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/survive_heavy_traffic_with_your_webserver/</feedburner:origLink></item>
        <item>
            <title>Speedup your website with Cache_Lite</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/vdATedUs5V0/</link>
            <description>Every time a request hits your server, PHP has to do a lot of processing,
all of your code has to be compiled &amp;amp; executed for every single visit.
Even though the outcome of all this processing is often identical for both
visitor 21600 and 21601. So why not save the flat HTML generated for
visitor 21600, and serve that to 21601 as well? This will relieve resources
of your web server and database server because less PHP often means less
queries.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/vdATedUs5V0" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 01 Aug 2007 17:01:51 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/speedup_your_website_with_cache_lite/</feedburner:origLink></item>
        <item>
            <title>Make ISO images on Linux</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/AhAf1knVGWM/</link>
            <description>CDs and DVDs don't have the eternal life, so you might want to back them up
as ISO images. All the files and properties of the original disc, stored in
a single file. You can also create ISO images and store them on your
network for easy distribution of software installations. Here's how to
create and mount ISO images on Linux.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/AhAf1knVGWM" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 01 Aug 2007 09:52:25 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/make_iso_images_on_linux/</feedburner:origLink></item>
        <item>
            <title>Schedule automatic updates on Ubuntu</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/8lE6SjOpOMM/</link>
            <description>Making sure your system is up to date is a key attribute to it's security.
Furthermore Ubuntu releases updates pretty often and you probably don't
want to miss out on added stability and features. You could run updated
manually, but why not schedule the updates in the background to make sure
you are always running the latest stable versions, without ever having to
worry about it.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/8lE6SjOpOMM" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 29 Jul 2007 19:44:47 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/schedule_automatic_updates_on_ubuntu/</feedburner:origLink></item>
        <item>
            <title>Schedule tasks on Linux using crontab</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/Ba_pMFdtW3U/</link>
            <description>If you've got a website that's heavy on your web server, you might want to
run some processes like generating thumbnails or enriching data in the
background. This way it can not interfere with the user interface. Linux
has a great program for this called cron. It allows tasks to be
automatically run in the background at regular intervals. You could also
use it to automatically create backups, synchronize files, schedule
updates, and much more. Welcome to the wonderful world of crontab.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/Ba_pMFdtW3U" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 29 Jul 2007 18:00:28 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/schedule_tasks_on_linux_using_crontab/</feedburner:origLink></item>
        <item>
            <title>Enable compiz-fusion in Ubuntu Feisty</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/GfIf83USr04/</link>
            <description>Warning. This article is meant for Ubuntu Feisty only and is therefore
deprecated! Compiz-fusion comes standard in more recent Ubuntu versions, so
don't use this article anymore! I would have taken this article offline if
it wasn't for the fact that there are still some Feisty users out there who
find this useful.  If you're in the midst of upgrading from Feisty to
Gutsy, read howto upgrade to Ubuntu Gutsy without breaking compiz-fusion!&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/GfIf83USr04" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 29 Jul 2007 13:02:29 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/enable_compizfusion_in_ubuntu_feisty/</feedburner:origLink></item>
        <item>
            <title>Block brute force attacks with iptables</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/Wl5PDr7e9tk/</link>
            <description>Since 2005 there has been an immense increase in brute force SSH attacks
and though Linux is pretty secure by default, it does not stop evil
programs from indefinitely trying to login with different passwords.
Without proper protection your server is a sitting duck waiting for a bot
to guess the right combination and hit the jackpot. But with just 2
commands we can stop that.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/Wl5PDr7e9tk" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sat, 28 Jul 2007 21:36:47 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/block_brute_force_attacks_with_iptables/</feedburner:origLink></item>
        <item>
            <title>Dell expands linux offerings</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/aqVuwoumARY/</link>
            <description>According to Mark Shuttleworth, founder of the Linux distribution Ubuntu,
Dell is pleased with the demand for Ubuntu computers. The company has been
distributing computers with Ubuntu since May this year and is planning to
expand the Linux offerings.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/aqVuwoumARY" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 27 Jul 2007 12:53:12 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/dell_expands_linux_offerings/</feedburner:origLink></item>
        <item>
            <title>Make SSH connections with PHP</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ut7Ok1xXZKE/</link>
            <description>Not everyone knows about PHP's capabilities of making SSH connections and
executing remote commands, but it can be very useful. I've been using it a
lot in PHP CLI applications that I run from cronjobs, but initially it was
a pain to get it to work. The PHP manual on Secure Shell2 Functions is not
very practicle or thorough for that matter, so I would like to share my
knowledge in this how to, to make it a little less time consuming setting
this up.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ut7Ok1xXZKE" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Tue, 24 Jul 2007 20:15:36 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/</feedburner:origLink></item>
        <item>
            <title>Upgrade to Ubuntu Gutsy Tribe 3 ALPHA</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/SriE2fEbTvk/</link>
            <description>The stable version of the newest Ubuntu version Gutsy Gibbon will be
released in October 2007. I could not wait that long however. And since the
third alpha of Ubuntu 7.10 was recently released, I figured let's give it a
shot. Testing alpha releases (especially from Ubuntu ) is like looking into
the crystal ball of technology. This is how I upgraded and got compiz
working again.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/SriE2fEbTvk" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 20 Jul 2007 12:10:51 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/upgrade_to_ubuntu_gutsy_tribe_3_alpha/</feedburner:origLink></item>
        <item>
            <title>Top 5 ways to get on the Digg FrontPage</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ZwquRVknVG8/</link>
            <description>When you've written an article that benefits other surfers, you want them
to know, right? One way to go about this is to publish your article at
Digg. Making it to their FrontPage would be totally awesome. Good content
is the main thing there, but there are some other tips that can help you. I
did quite a bit of research - so you don't have to -&amp;nbsp; and this is my
top 5.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ZwquRVknVG8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 19 Jul 2007 12:04:15 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/top_5_ways_to_get_on_the_digg_frontpage/</feedburner:origLink></item>
        <item>
            <title>Create turbocharged storage using tmpfs</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/gskyjMC3EIc/</link>
            <description>Everyone knows that RAM is so much faster than a hard disk. To illustrate,
while a current SATA disk has peak transfer rates of 375 MB/s, current RAM
can do a mind blowing 12,500 MB/s! Normally only the system itself makes
use of this ultra fast storage, but we can also access this space directly.
And that opens a great window of opportunity.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/gskyjMC3EIc" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 18 Jul 2007 20:45:44 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/create_turbocharged_storage_using_tmpfs/</feedburner:origLink></item>
        <item>
            <title>Control cache expire dates using htaccess</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/l4gPStC-T_U/</link>
            <description>If you're running Squid to cache your website, you can use an htaccess file
to  control what kind of files should be cached, and for how long.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/l4gPStC-T_U" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Mon, 16 Jul 2007 09:05:40 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/control_cache_expire_dates_using_htaccess/</feedburner:origLink></item>
        <item>
            <title>Install Squid &amp; Apache on 1 server</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/0COMzYjwohI/</link>
            <description>Let's say your site is becoming a big success and as a result it's becoming
slower and slower. There are several things you do without buying
additional hardware.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/0COMzYjwohI" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 15 Jul 2007 21:11:28 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/install_squid_apache_on_1_server/</feedburner:origLink></item>
        <item>
            <title>PHP 4 R.I.P.</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/mz8q2pEK-d8/</link>
            <description>Last friday, PHP announced the end of life of version 4 of their popuplair
scripting language.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/mz8q2pEK-d8" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Sun, 15 Jul 2007 15:13:33 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/php_4_rip/</feedburner:origLink></item>
        <item>
            <title>Top 5 ways to increase PageRank</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/TSv527KSVZc/</link>
            <description>I scourged the web today looking for the very best (and free) tips on
increasing a site's PageRank, and I figure it basically comes down to these
simple tips.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/TSv527KSVZc" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Fri, 13 Jul 2007 15:06:55 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/top_5_ways_to_increase_pagerank/</feedburner:origLink></item>
        <item>
            <title>Use PEAR with open_basedir and safe_mode restrictions</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/7AQIMd1fQcA/</link>
            <description>You want your website to be as safe as possible. So you'll typically want
Open Basedir and Safe Mode to be on. When you're in a shared hosting
environment, you'll find that any server administrator with a good sense of
security will also have these restrictions in place. However security
pretty much always limits functionality and this case is no different.
Because what if you are caged in a restricted environment, and you would
still like to use shared libraries like the ones provided by PEAR?&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/7AQIMd1fQcA" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Thu, 12 Jul 2007 13:48:24 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/use_pear_with_open_basedir_and_safe_mode_restricti/</feedburner:origLink></item>
        <item>
            <title>Cat a file, without the comments</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ctHtBhUZfVc/</link>
            <description>I recently had to install a couple of squid servers to act as reverse
proxies for a webcluster. You can teach the squid server to stand in
between in the end users and the webservers, and to store all the static
content ( .jpg .flv .css .htm for example ) in the RAM. This saves a lot of
I/O and bandwidth on the webservers, and it can really speeds up a site.
And the end of the road the webservers' load dropped with 92%. But before
all this worked, I had to run through a massive config file and since the
squid config file is their manual at the same time, it's about 5000 lines
long. So I had to find out a way to filter only the important settings from
the config file.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ctHtBhUZfVc" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 11 Jul 2007 20:43:24 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/cat_a_file_without_the_comments/</feedburner:origLink></item>
        <item>
            <title>What's the deal with php_value, php_admin_flag, etc</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/KiGhqSL7HUI/</link>
            <description>I ran accross php value, php flag, php admin value and php admin flag in a
couple of .htaccess files, and I've used them sometimes as well by just
pasting an example, but I've never really understood why there was such a
great diversity. Couldn't php_setting X Y just handle it, and if not, what
do the admin, value and flag attributes mean?&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/KiGhqSL7HUI" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 11 Jul 2007 20:28:58 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/whats_the_deal_with_php_value_php_admin_flag_etc/</feedburner:origLink></item>
        <item>
            <title>Change the default editor</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/jOyGjdG3V_A/</link>
            <description>Ever wanted to change the crontab of a server, but got an editor on screen
that you're totally unfamiliar with? There are a lot of causes for this
annoyance, but one is that somebody recently installed or used midnight
commander (mc) which for whatever reason seams to overrule your session's
default editor.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/jOyGjdG3V_A" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 11 Jul 2007 20:15:57 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/change_the_default_editor/</feedburner:origLink></item>
        <item>
            <title>Beautify URLs</title>
            <link>http://feedproxy.google.com/~r/kvz/~3/ScB5ReNAwj4/</link>
            <description>Readable URLs are nice. A well made website will have a logical layout,
with intelligent folder and file names, and as few technical details as
possible. In the most well designed sites, readers can guess at filenames
with a high level of success. Clean URLs are great because they.&lt;img src="http://feeds.feedburner.com/~r/kvz/~4/ScB5ReNAwj4" height="1" width="1"/&gt;</description>
            <author>Kevin van Zonneveld</author>
            <pubDate>Wed, 11 Jul 2007 19:05:52 +0100</pubDate>
        <feedburner:origLink>http://kevin.vanzonneveld.net/techblog/article/beautify_urls/</feedburner:origLink></item>
    </channel>
</rss>
