<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Peter Breuls's Weblog &#187; Web development</title>
	<atom:link href="http://blog.breuls.org/category/tech/4/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.breuls.org</link>
	<description>Discoveries of a Dutch Developer</description>
	<lastBuildDate>Thu, 16 Jul 2009 12:16:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Drizzle instead of MySQL?</title>
		<link>http://blog.breuls.org/2009/07/12/drizzle-instead-of-mysql/</link>
		<comments>http://blog.breuls.org/2009/07/12/drizzle-instead-of-mysql/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 16:03:33 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[drizzle]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=83</guid>
		<description><![CDATA[Zend Developer Zone: &#8220;Drizzle is a new, lightweight fork of MySQL specifically designed for cloud applications. Although Drizzle is still under development, it&#8217;s attracting a lot of attention from developers around the world. This article introduces you to Drizzle and shows you how to use the Drizzle PHP extension to perform queries, retrieve result sets [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://devzone.zend.com/article/4793-Getting-Started-with-Drizzle-and-PHP">Zend Developer Zone</a>: &#8220;Drizzle is a new, lightweight fork of MySQL specifically designed for cloud applications. Although Drizzle is still under development, it&#8217;s attracting a lot of attention from developers around the world. This article introduces you to Drizzle and shows you how to use the Drizzle PHP extension to perform queries, retrieve result sets and handle errors in your Drizzle+PHP application.&#8221;</p>
<p>There&#8217;s been a lot of buzz about Drizzle lately. Need to check that out some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2009/07/12/drizzle-instead-of-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Lighttpd for exceptional performance</title>
		<link>http://blog.breuls.org/2008/12/18/using-lighttpd-for-exceptional-performance/</link>
		<comments>http://blog.breuls.org/2008/12/18/using-lighttpd-for-exceptional-performance/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 19:21:33 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[cherokee]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=77</guid>
		<description><![CDATA[To increase performance at the site I work for, we started separating static webfiles from dynamic pages using a separate hostname and web server for static files a while ago. For this, we placed almost all of the images, style sheets and Javascript files on a separate server and installed Cherokee for light and fast [...]]]></description>
			<content:encoded><![CDATA[<p>To increase performance at the <a href="http://fok.nl">site</a> I work for, we started separating static webfiles from dynamic pages using a separate hostname and web server for static files a while ago. For this, we placed almost all of the images, style sheets and Javascript files on a separate server and installed <a href="http://www.cherokee-project.com/">Cherokee</a> for light and fast web serving on that server. And it worked. Loading of images became easier, and we could apply some of the server-related suggestions from Yahoo!&#8217;s <a href="http://developer.yahoo.com/performance/">Exceptional Performance</a>.</p>
<p>However, Cherokee didn&#8217;t always try its hardest to serve us well: sometimes it decided to pull the server&#8217;s load to a performance-decreasing number, configuration of much needed features was &#8220;not yet implemented&#8221; or buggy and the software is overall not done yet. Also, the developers have, weirdly, decided to use exclamation marks as separators within the configuration, which is just plain annoying.</p>
<p>So we started looking towards other solutions. And we decided to go back to our other option before we chose Cherokee: <a href="http://www.lighttpd.net/">Lighttpd</a>. With Lighty, as it&#8217;s pronounced, we can apply these performance rules:</p>
<p>&raquo; <a href="http://developer.yahoo.net/blog/archives/2007/05/high_performanc_2.html">Add an Expires or a Cache-Control Header</a><br />
&raquo; <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_3.html">Gzip Components</a><br />
&raquo; <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html">Configure ETags</a></p>
<p>I&#8217;d like to show you which configuration options we used. The following applies to a default Lighttpd (version 1.4.19) as shipped with Ubuntu 8.10. If you&#8217;re using a different OS or if you&#8217;ve downloaded Lighttpd yourself, I assume you understand enough of it to translate the following to your own situation.</p>
<p><strong>Add an Expires or a Cache-Control Header</strong><br />
For this, we need mod_expire. With that module, we can instruct Lighttpd to include both the &#8220;Expires&#8221; and the &#8220;Cache-Control&#8221; headers in the response. To enable the module, we uncomment this line:</p>
<p><code># "mod_expire",</code></p>
<p>This line is mentioned in a list of modules at the top of lighttpd.conf. If it&#8217;s not, you should look for the list somewhere else in the file and uncomment the line or simply add it, but without the hash sign.</p>
<p>Next, look up a line that says &#8216;expire.url&#8217;. It should be there and commented by default. Uncomment it and configure it to do what you want it to do. For us, Lighttpd is entirely dedicated to serving static files, which all need to be cached by the client for a long time. Let say, for documentation&#8217;s sake, we choose two weeks as the caching time. This would then be our configuration:</p>
<p><code>expire.url = ("/" => "access plus 14 days")</code></p>
<p>This leads to these two headers when a URL from the Lighttpd-server is requested:</p>
<p><code>Expires: Thu, 25 Dec 2008 13:30:31 GMT<br />
Cache-Control: max-age=1209600</code></p>
<p>And that&#8217;s it! Enable the &#8216;expire&#8217; module, configure the expire time, and you&#8217;re done.</p>
<p><strong>Gzip Components</strong><br />
To apply gzip encoding of the repsonse body, we use mod_compress, which is enabled and confgured by default. However, not everything we want to compress is actually being compressed, so we change this:</p>
<p><code>compress.filetype           = ("text/plain", "text/html", "application/x-javascript", "text/css")</code></p>
<p>into this:</p>
<p><code>compress.filetype           = ("text/plain", "text/html", "application/x-javascript", "text/css" ,"image/jpeg","image/jpg", "image/gif","image/png")</code></p>
<p>Over time, we might add other mime-types we forgot to include, but the above covers most of the requests.</p>
<p>When requesting an image with any regular browser, it will be sent to us, gzip-encoded. If you&#8217;re using FireFox with the Live HTTP Headers extension, you can find these in the response headers:</p>
<p><code>Vary: Accept-Encoding<br />
Content-Encoding: gzip</code></p>
<p>This confirms that it&#8217;s working.</p>
<p><strong>Configure ETags</strong><br />
This is the easy one. In our default installation, a request to the server gave us this as one of the response headers:</p>
<p><code>ETag: "2832627283"<br />
Last-Modified: Wed, 10 Dec 2008 13:16:32 GMT<br />
Content-Length: 1395</code></p>
<p>Because we currently use one server for the static serving, this is all we want. So we&#8217;re done.</p>
<p>And that concludes the confguration of Lighttpd as the optimal static-files-webserver. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/12/18/using-lighttpd-for-exceptional-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google does dynamic</title>
		<link>http://blog.breuls.org/2008/09/25/google-does-dynamic/</link>
		<comments>http://blog.breuls.org/2008/09/25/google-does-dynamic/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 08:56:22 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[static urls]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=79</guid>
		<description><![CDATA[It&#8217;s one of those facts that you learn once and then always remember: if you want your URL&#8217;s to be properly indexed: don&#8217;t stuff them with querystring-data. Make them nice, like they&#8217;re static URL&#8217;s. That&#8217;s what I always knew. Like riding a bike, you never forget it. But Google says this isn&#8217;t exactly true; We&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s one of those facts that you learn once and then always remember: if you want your URL&#8217;s to be properly indexed: don&#8217;t stuff them with querystring-data. Make them nice, like they&#8217;re static URL&#8217;s. That&#8217;s what I always knew. Like riding a bike, you never forget it. But Google says this isn&#8217;t exactly true;</p>
<blockquote><p>We&#8217;ve come across many webmasters who, like our friend, believed that static or static-looking URLs were an advantage for indexing and ranking their sites. This is based on the presumption that search engines have issues with crawling and analyzing URLs that include session IDs or source trackers. However, as a matter of fact, we at Google have made some progress in both areas. While static URLs might have a slight advantage in terms of clickthrough rates because users can easily read the urls, the decision to use database-driven websites does not imply a significant disadvantage in terms of indexing and ranking. <strong>Providing search engines with dynamic URLs should be favored over hiding parameters to make them look static.</strong><br />
<a href="http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html">Google Webmaster Central Blog</a></p></blockquote>
<p>Not only does Googlebot read dynamic URL&#8217;s just fine (and now I think of it: why <em>wouldn&#8217;t</em> one of the largest tech companies make any progress in this area over all these years?), they actually favor it if a dynamic URL is the &#8216;original&#8217; of your URL scheme. Googlebot will figure out the parameters and do the indexing the right way.</p>
<p>Of course, static-looking URL&#8217;s are still nicer for a user to look at, and sometimes a URL that doesn&#8217;t have querystring-parameters can still be dynamic, but for Google&#8217;s sake: don&#8217;t rewrite it just for them. Good to know!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/09/25/google-does-dynamic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools of the trade</title>
		<link>http://blog.breuls.org/2008/07/02/tools-of-the-trade/</link>
		<comments>http://blog.breuls.org/2008/07/02/tools-of-the-trade/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 07:25:54 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=75</guid>
		<description><![CDATA[It&#8217;s always fun to compare tools. Who works with what and especially, why? Following the example of Flickr and some others, let me list my tools, see if you match: Working: Main machine: MacBook Pro. I have an Ubuntu PC, but that&#8217;s just &#8216;extra&#8217;. I do everything on my Mac, from working to living. Editors: [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s always fun to compare tools. Who works with what and especially, why? Following the <a href="http://code.flickr.com/blog/2008/06/30/trickr-or-humanising-the-developers-part-2/">example</a> of Flickr and some others, let me list my tools, see if you match:</p>
<p>Working:</p>
<ul>
<li>Main machine: MacBook Pro. I have an Ubuntu PC, but that&#8217;s just &#8216;extra&#8217;. I do everything on my Mac, from working to living.</li>
<li>Editors: Zend Studio 6 for all the main development tasks, completed by TextMate (and the handy &#8216;mate&#8217; cli-command) and vim for serveral minor things.</li>
<li>Transmit: used for access to (s)FTP code locations, and to manually check whether (s)FTP import applications do what they should</li>
<li>iTerm with usually about six tabs. I traverse folders, grep through them, use CVS/SVN commands and access MySQL from the commandline. And of course I connect to development and production servers using ssh, but that goes without saying.</li>
<li>MySQL Query Browser: I can usually do what I want by just using the commandline client, but every now and then I need a little more visual help.</li>
<li>Zend Core: used as an all-in-one package for Apache and PHP. I also use MAMP to run a good old PHP4 environment because at one of my employers we&#8217;re still in the midst of upgrading to PHP5 (I know, shut up).</li>
<li>Xdebug: I use it for profiling and I love the way it adapts var_dump() to a more usable way of displaying variables</li>
<li>FireFox and FireBug: very important indeed. I can&#8217;t image having to work without FireBug. I still remember trying to think really hard about my HTML/CSS and placing alerts in my JS as a way of doing some poor-mans-debugging. FireBug is a godsend.</li>
<li>YSlow: a man needs performance, and YSlow helps me determine what to do. Very nice!</li>
<li>CSSedit: editors for CSS don&#8217;t do a lot more than text editors, but they help a little and a little is enough.</li>
<li>OPML Editor: I keep my notes, todo&#8217;s and more in outlines. The best outline editor used to be the one from Radio UserLand, until Dave Winer took the tool and released it apart from the weblog editor.</li>
<li>VMWare Fusion: although I love working on my Mac, I&#8217;m still missing what I already <a href="http://blog.breuls.org/2008/04/19/wubi-the-new-way-of-dual-booting/">mentioned</a> before: the combination of Krusader and Kompare (and to a lesser degree, Cervisia) for development work. For that, I am trying out using an Ubuntu virtual machine which uses the three beforementioned apps and sshfs to mount the (development) servers I&#8217;m working on. Works like a charm!
</li>
</ul>
<p>Living and working:<br />
I take my Mac everywhere. I work on it at work, even though it is a private machine. At home, I use VLC to watch video&#8217;s and DVD&#8217;s, NetNewsWire for the daily read, Celtx for screenwriting, Mail.app for.. well duh, RealPlayer to listen to BBC Radio 1 or iTunes for my <a href="http://last.fm/user/breuls">music collection</a>, Twitterific for <a href="http://twitter.com/breuls">Twitter</a> and Unison to eh, browse newsgroups. </p>
<p>Well, that&#8217;s most of it. What about you?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/07/02/tools-of-the-trade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A day at the RAI: Dutch PHP Conference 2008</title>
		<link>http://blog.breuls.org/2008/06/18/a-day-at-the-rai-dutch-php-conference-2008/</link>
		<comments>http://blog.breuls.org/2008/06/18/a-day-at-the-rai-dutch-php-conference-2008/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 19:40:52 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[dpc08]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=72</guid>
		<description><![CDATA[I like conferences. They bring a combination of information, context, some discussion and all kinds of impressions to you in audible form. In a form that doesn&#8217;t require you to browse through blogs or magazine articles. Also, you can reflect on the subjects with others during the break times. Or just reflect on it by [...]]]></description>
			<content:encoded><![CDATA[<p>I like conferences. They bring a combination of information, context, some discussion and all kinds of impressions to you in audible form. In a form that doesn&#8217;t require you to browse through blogs or magazine articles. Also, you can reflect on the subjects with others during the break times. Or just reflect on it by yourself. In some way, it differs from just reading about the topics on weblogs or online manuals, it&#8217;s got a different vibe. One I like.</p>
<p>So last weekend I went to the <a href="http://www.phpconference.nl/schedule/">Dutch PHP Conference</a>. I went last year, and I liked it, so attending this year&#8217;s edition seems logical. But after a day of listening to some interesting talks I&#8217;m wondering: who is the indented audience for this conference? Am I even in it?</p>
<p>Let me explain by walking through the day. After <a href="http://twitter.com/ijansch">@ijansch</a>&#8216;s opening, we were welcomed into the history of PHP by <a href="http://suraski.net/blog/">Zeev Suraski</a>, one of the founders of Zend and with that, one of the people who made PHP what it is today. It&#8217;s nice to hear the story from someone first-hand, as opposed to reading it in the <a href="http://www.php.net/manual/en/history.php">PHP Manual</a>. </p>
<p>He gave his view on PHP today: it&#8217;s mostly done, and our focus as a community has been, and still is, shifting to frameworks. In a way that&#8217;s like saying &#8220;we&#8217;ve been building the car for a few years, now it has become time to do some driving&#8221;. And he&#8217;s right. PHP is never truly done, of course, but it is fairly done, and now it&#8217;s up to the frameworks to mature and become the highly useful, production-ready toolkits we all need (yes, need, even though some of us might not know it yet). In my view: some parts of frameworks wille eventually become more attached to the core of PHP, as often-used parts will grow into the extensions area.</p>
<p>After Zeev, <a href="http://mtabini.blogspot.com/">Marco Tabini</a>, publisher of <a href="http://www.phparch.com/">php|architect</a> (which I&#8217;m subscribed to), explained how important mayo is to the PHP world. No, wait, that wasn&#8217;t it. He wasn&#8217;t very PHP-specific, but his keynote was quite interesting nevertheless.</p>
<p>Lunch came and went, and the breakout sessions started. I attended the ones presented by Gaylord Aulke, Lorna Jane Mitchell and Ivo Jansch.</p>
<p>Gaylord talked about how you would go about creating, maintaining and using an infrastructure when you&#8217;re working in a team. He explained about development locations, version control management, test- and staging servers and deploying your work to a live server. This very much connected with <a href="http://www.lornajane.net/posts/2008/DPC-Talk-Review">Lorna&#8217;s talk</a>, which <a href="http://www.lornajane.net/posts/2008/Deployment-with-SVN-slides-Dutch-PHP-Conference">focused</a> on deployment in general, and on doing that with subversion in particular.</p>
<p>Both talks were interesting, but only small bits of it were giving me new information or a perspective I didn&#8217;t think of before. Both gave me the impression that the intended audience would not include people already working in teams, with version control already very much in place and several live projects to maintain. Those people would already have invented (and/or implemented) the proverbial wheel for their own situation. Which is the case for me: at both of my jobs, an infrastructure is in place and working nicely. Nevertheless, both talks were interesting, and some viewpoints offered, along with a nice feeling of confirmation, some food for though and/or Googling.</p>
<p>After the break, the choice was to be made between Stefan Priebsch&#8217;s session on the upcoming PHP releases, a session by Matthew Weier O&#8217;Phinney about best practices within Zend Framework (this description is not as accurate as it should be, but we&#8217;ll get to that) and Ivo Jansch&#8217;s presentation about Enterprise PHP.</p>
<p>Because information about PHP 5.3 and 6 can be found on the <a href="http://news.php.net/php.internals">mailing list</a>, <a href="http://wiki.php.net/todo/php60">wiki</a> pages, blogs and the slides Stefan <a href="http://inside.e-novative.de/archives/117-What-is-new-in-PHP-5.3-IPCDLW-2008-slides.html">posted</a> before the conference, that one was an easy choice: no need to attend. The session on Best practices within Zend Framework would only make sense if you were actively using ZF, I thought, so that would not be very practical at this very moment (I was wrong, as you can see by reading the actual <a href="http://www.phpconference.nl/schedule/bestpractices">description</a> on the site, it&#8217;s not &#8216;within&#8217; Zend Framework, but &#8216;inspired by&#8217; it, if I understand correctly). So I entered the room in which I would be very cautious about product placement (kidding).</p>
<p>Ivo&#8217;s session had &#8216;Enterprise PHP Development&#8217; as its title. Because I work in a couple of teams/environments where the label &#8216;enterprise&#8217; might, in some way, be a suitable one, I thought I&#8217;d attend this session. It&#8217;s always nice to get some tips, attention points and such. But, the session was basically about the same as Gaylord&#8217;s and Lorna&#8217;s. Not that he covered the same topics, but again I felt like I knew a lot of it already. He covered ten main points you need to be thoughtful of when working on your projects, of which some were very obvious, and others inspired some thinking while in itself not being new (to me, at least).</p>
<p>After all this, my colleagues and me were interviewed for a <a href="http://iljavandenberg.blogspot.com/2008/06/dutch-php-conference-08-interessant-en.html">Bachelor ICT video</a>, in which we expressed our concerns about the lack of depth in the sessions. <a href="http://terrychay.com/blog/">Terry Chay</a> had already started his keynote by that time, so after missing the beginning, we hurried in and stood in the back, while listening to a very interesting and nice keynote. Chay is a wise man, I said <a href="http://twitter.com/Breuls/statuses/834686044">to myself</a>.</p>
<p>Looking back at the day in its entirety, I think I expected more. I already called my feeling about the sessions a &#8216;lack of depth&#8217;. This of course isn&#8217;t necessarily a bad thing. A PHP Conference, especially one in a community that&#8217;s still growing and has a lot of people still learning how to be the best, should be aiming for a wide audience and not exclude beginners. However, if some f the sessions would last longer, maybe the contents could become more hands-on and give you more the feeling you&#8217;re walking away with lots of information to research in the days or weeks after the conference.</p>
<p>I&#8217;ll probably attend next year&#8217;s edition, but can I silently hope for some more advanced content?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/06/18/a-day-at-the-rai-dutch-php-conference-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Links for this week</title>
		<link>http://blog.breuls.org/2008/06/17/links-for-this-week/</link>
		<comments>http://blog.breuls.org/2008/06/17/links-for-this-week/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 11:45:00 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[dpc08]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=71</guid>
		<description><![CDATA[&#187; MacGDBp &#8211; a PHP debugger using XDebug &#187; Dutch PHP Conference 2008 &#8211; The Video &#8211; I was interviewed. Did I make the cut? &#187; DPC&#8217;08 review by Rick Buitenman &#187; It&#8217;s About Time You Learned Javascript (for real) &#8211; I think I&#8217;m gonna read that book &#187; The Top Ten Subversion Tips for [...]]]></description>
			<content:encoded><![CDATA[<p>&raquo; <a href="http://www.bluestatic.org/pr/">MacGDBp</a> &#8211; a PHP debugger using <a href="http://www.xdebug.org/">XDebug</a><br />
&raquo; <a href="http://iljavandenberg.blogspot.com/2008/06/dutch-php-conference-08-interessant-en.html">Dutch PHP Conference 2008  &#8211; The Video</a> &#8211; I was interviewed. Did I make the cut?<br />
&raquo; <a href="http://blog.meritos.nl/archives/37">DPC&#8217;08 review by Rick Buitenman</a><br />
&raquo; <a href="http://developer.yahoo.net/blog/archives/2008/06/javascript_the_good_parts_review.html">It&#8217;s About Time You Learned Javascript (for real)</a> &#8211; I think I&#8217;m gonna read that book<br />
&raquo; <a href="http://www.onlamp.com/pub/a/onlamp/2004/08/19/subversiontips.html">The Top Ten Subversion Tips for CVS Users</a><br />
&raquo; <a href="http://svnbook.red-bean.com/en/1.0/svn-book.html">The Subversion Book</a><br />
&raquo; <a href="http://codecontortionist.com/software/mac-osx-software/multifirefox/">Running multiple FireFoxes on your Mac</a><br />
&raquo; <a href="http://blog.digitalstruct.com/2008/06/18/php-performance-series-maximizing-your-mysql-database/">PHP Performance Series: Maximizing Your MySQL Database</a><br />
&raquo; <a href="http://www.webmonkey.com/blog/Clock_Browser_Speeds_with_Webmonkey_s_Stopwatch">Which is the fastest browser?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/06/17/links-for-this-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Todo&#8217;s for June 17</title>
		<link>http://blog.breuls.org/2008/06/16/todos-for-june-17/</link>
		<comments>http://blog.breuls.org/2008/06/16/todos-for-june-17/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 19:34:54 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[MacGDBp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=70</guid>
		<description><![CDATA[&#187; Download FireFox 3 and install it on my Mac (my Ubuntu machine switched to FF3 weeks ago) &#187; Download this possibly very interesting PHP Debug thingy for the Mac]]></description>
			<content:encoded><![CDATA[<p>&raquo; Download FireFox 3 and install it on my Mac (my Ubuntu machine switched to FF3 weeks ago)<br />
&raquo; Download this <a href="http://www.bluestatic.org/pr/">possibly very interesting PHP Debug thingy</a> for the Mac</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/06/16/todos-for-june-17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stuff I need to read</title>
		<link>http://blog.breuls.org/2008/06/13/stuff-i-need-to-read/</link>
		<comments>http://blog.breuls.org/2008/06/13/stuff-i-need-to-read/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 14:01:27 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Reading]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[food for reading]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=69</guid>
		<description><![CDATA[I&#8217;ve got lots of content in my RSS aggregator that I &#8220;want to read, but not right now&#8221;. And I keep skipping over it, making sure I don&#8217;t accidentally mark those items as read, and that is starting to annoy me. So I&#8217;ll just do what every sensible guy does: make a note of those [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got lots of content in my RSS aggregator that I &#8220;want to read, but not right now&#8221;. And I keep skipping over it, making sure I don&#8217;t accidentally mark those items as read, and that is starting to annoy me. So I&#8217;ll just do what every sensible guy does: make a note of those items and move on.</p>
<p>Adding to that, I thought I&#8217;d just share them with you, so here is my to-read list:<br />
&raquo; <a href="http://izoratti.blogspot.com/2008/06/q-and-recording-of-memcached-webinar.html">Q&#038;A and Recording of the Memcached Webinar</a><br />
&raquo; <a href="http://www.mysqlperformanceblog.com/2008/06/05/how-would-you-compress-your-mysql-backup/">How would you compress your MySQL Backup</a><br />
&raquo; <a href="http://www.codinghorror.com/blog/archives/001128.html">Please Give Us Your Email Password</a><br />
&raquo; <a href="http://feeds.feedburner.com/~r/ramsey/~3/304658056/">Give Your Site a Boost With Memcache</a><br />
&raquo; <a href="http://jan.kneschke.de/2008/6/3/mysql-proxy-debug-plugin">MySQL Proxy: debug plugin</a><br />
&raquo; <a href="http://www.xaprb.com/blog/2008/06/01/mysql-cacti-templates-100-released/">MySQL Cacti templates 1.0.0 released</a> (<a href="http://www.xaprb.com/blog/2008/05/25/screenshots-of-improved-mysql-cacti-templates/">screenshots</a>)<br />
&raquo; <a href="http://www.mysqlperformanceblog.com/2008/05/31/tools-to-use-for-mysql-performance-review/">Tools to use for MySQL Performance Review</a><br />
&raquo; <a href="http://www.codinghorror.com/blog/archives/001123.html">Designing For Evil</a><br />
&raquo; <a href="http://code.flickr.com/blog/2008/05/01/videos-in-the-flickr-api/">Videos in the Flickr API</a></p>
<p>There. Now I can clean out some items in my aggregator. I&#8217;m gonna do this more often, by the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/06/13/stuff-i-need-to-read/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wubi: the new way of dual-booting</title>
		<link>http://blog.breuls.org/2008/04/19/wubi-the-new-way-of-dual-booting/</link>
		<comments>http://blog.breuls.org/2008/04/19/wubi-the-new-way-of-dual-booting/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 12:23:07 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[kompare]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wubi]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=64</guid>
		<description><![CDATA[When I work, I usually use two computers: an Ubuntu-powered PC and my MacBook Pro. Of those, the Mac is my main machine: I have all my development tools and environments running on it, I use it for mail and documents, my music is on it (because I can&#8217;t work in silence), etcetera. It has [...]]]></description>
			<content:encoded><![CDATA[<p>When I work, I usually use two computers: an Ubuntu-powered PC and my MacBook Pro. Of those, the Mac is my main machine: I have all my development tools and environments running on it, I use it for mail and documents, my <a href="http://www.last.fm/user/Breuls/">music</a> is on it (because I can&#8217;t work in silence), etcetera. It has this value to me because I can carry it to wherever I need to, which means I can use it at both of my two jobs, plus on location if I ever need to (and sometimes I do).</p>
<p>But there&#8217;s one thing missing: although Mac OSX is a very nice OS, probably the best I&#8217;ve worked with, I still need Linux to complete my wishlist.  The combination of Krusader and Kompare, for instance, is a golden one if you need to organize your development projects. Krusader is a two-pane file manager, with the option to use FTP and SFTP or just local files. Whenever I need to examine the difference between two versions of the same file (and I need to do that a lot: before commiting my changes to version control, I want to know exactly what I&#8217;m doing), I set up Krusader to have a folder with one version of the project on the left and one version on the right. I then select the files I want to compare and the magic happens: Kompare starts.</p>
<p>Kompare is a frontend to the <code>diff</code> tool and as such not that special: if I just want to quickly see the difference between foo.php and it&#8217;s current state in CVS I can just use the built-in comparison tools from Zend Studio for Ecplise. But: Kompare is so much better! It has coloring to differentiate between additions, removals and changes, is more precise (due to the tried-and-tested <code>diff</code> being the backend) and has the ability to apply some of my changes to the other file, which enables me to be more exact in what I commit (you know, sometimes you have several changes in a file, but just a few of them belong to <em>that relevant bugfix</em> and the others are for <em>that new feature that&#8217;s still unfinished</em>, so you want to do a partly commit).</p>
<p>So, I need Linux next to Mac, because those tools don&#8217;t run on Mac OSX. When at home (for Job #1), that&#8217;s no problem. My only PC is an Ubuntu machine. But at work (at Job #2), I have an old PC which is kinda slow which I use for this. And the slow part, that&#8217;s annoying. Because whenever I need to use Kompare, I need five to ten minutes to boot the thing, and every action after that needs a lot of patience.</p>
<p>But, I share my desk with a colleague who sits there when I&#8217;m at Job #1. And he has his own PC, stalled under the desk next to mine. A new, fresh one, nice and fast, running Windows, and I already discussed making that one a dual-boot so we can share not just the desk, but the PC as well. But I don&#8217;t have the time to go and install Ubuntu next to Windows, carefully selecting partitions, making sure I don&#8217;t nuke his installation, and whatnot. So even months after &#8220;Hey, can I make that one a dual-boot?&#8221; &#8211; &#8220;Sure!&#8221; I&#8217;m still working on the slow machine.</p>
<p>Enter <a href="http://wubi-installer.org/">Wubi</a>.  Shipping with Ubuntu 8.04 next week, it&#8217;s an Ubuntu installer for Windows. And it does exactly (exactly!) what I need:</p>
<blockquote><p>When I rebooted my machine, an option to boot Ubuntu was added to my Windows boot list, and after selecting it, Ubuntu started loading just as it would if installed on a dedicated drive. I was even given the normal GRUB menu.<br />
(<a href="http://www.linux.com/feature/130713">Linux.com</a>)</p></blockquote>
<p>So now I can just boot my colleage&#8217;s machine, put in the Ubuntu CD, click through the installer and enjoy Ubuntu. No need for me to run the Ubuntu installer, carefully selecting drives, doing all kinds of stuff that costs me time. Just click-click-install, the Windows way. </p>
<p>Life really does get better with every Ubuntu release.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/04/19/wubi-the-new-way-of-dual-booting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP MySQL 2nd edition</title>
		<link>http://blog.breuls.org/2008/03/20/hp-mysql-2nd-edition/</link>
		<comments>http://blog.breuls.org/2008/03/20/hp-mysql-2nd-edition/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 15:40:04 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/2008/03/20/hp-mysql-2nd-edition/</guid>
		<description><![CDATA[According to Baron Schwarz the second edition of High Performance MySQL (the first edition being written by Jeremy Zawodny and Derek Bailing, which I read twice and still often use as reference) is in production, meaning that it&#8217;s written and being prepared for print. That&#8217;s good news! As a MySQL developer and DBA, I&#8217;m very [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xaprb.com/blog/2008/03/19/high-performance-mysql-2nd-edition-is-in-production/">According to Baron Schwarz</a> the second edition of <em>High Performance MySQL</em> (the first edition being written by Jeremy Zawodny and Derek Bailing, which I read twice and still often use as reference) is in production, meaning that it&#8217;s written and being prepared for print.</p>
<p>That&#8217;s good news! As a MySQL developer and DBA, I&#8217;m very interested in knowing every piece of information about how to make MySQL perform well, and as soon as I can, I&#8217;ll order a copy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/03/20/hp-mysql-2nd-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
