<?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</title>
	<atom:link href="http://blog.breuls.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.breuls.org</link>
	<description>Discoveries of a Dutch Developer</description>
	<lastBuildDate>Sun, 18 Nov 2012 08:38:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Namespaces in PHP</title>
		<link>http://blog.breuls.org/2009/07/16/namespaces-in-php/</link>
		<comments>http://blog.breuls.org/2009/07/16/namespaces-in-php/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 12:16:03 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[namespaces]]></category>
		<category><![CDATA[php5.3]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=85</guid>
		<description><![CDATA[Within PHP, the current Big Thing, in a way, is namespaces. However: it&#8217;s brand new and not every PHP developer knows how, if at all, to use then. Good thing there&#8217;s tutorials about that. Sitepoint has one in three parts: 1, 2, 3.]]></description>
				<content:encoded><![CDATA[<p>Within PHP, the current Big Thing, in a way, is <a href="http://us2.php.net/manual/en/language.namespaces.php">namespaces</a>. However: it&#8217;s brand new and not every PHP developer knows how, if at all, to use then. Good thing there&#8217;s tutorials about that. Sitepoint has one in three parts: <a href="http://www.sitepoint.com/blogs/2009/07/13/php-53-namespaces-basics">1</a>, <a href="http://www.sitepoint.com/blogs/2009/07/14/php-namespaces-import-alias-resolution/">2</a>, <a href="http://www.sitepoint.com/blogs/2009/07/15/how-to-use-php-namespaces-part-3-keywords-and-autoloading/">3</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2009/07/16/namespaces-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Suicidal mailserver</title>
		<link>http://blog.breuls.org/2009/05/09/suicidal-mailserver/</link>
		<comments>http://blog.breuls.org/2009/05/09/suicidal-mailserver/#comments</comments>
		<pubDate>Sat, 09 May 2009 08:24:52 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[dovecot]]></category>
		<category><![CDATA[kill]]></category>
		<category><![CDATA[mailserver]]></category>
		<category><![CDATA[timemovedbackwards]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=82</guid>
		<description><![CDATA[I reset the time on our mailserver, because NTP wasn&#8217;t working (or at all running, I guess). Immediately my mail client started complaining about the connection. The above error message was the cause. It&#8217;s both funny and explanatory. I like it.]]></description>
				<content:encoded><![CDATA[<p><img src='http://blog.breuls.org/wp-content/doveCotKill.png' alt='DoveCot - kill message' class='aligncenter' /></p>
<p>I reset the time on our mailserver, because NTP wasn&#8217;t working (or at all running, I guess). Immediately my mail client started complaining about the connection. The above error message was the cause. It&#8217;s both funny and explanatory. I like it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2009/05/09/suicidal-mailserver/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>MySQL Conference</title>
		<link>http://blog.breuls.org/2008/10/16/mysql-conference/</link>
		<comments>http://blog.breuls.org/2008/10/16/mysql-conference/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 10:36:58 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[london]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=81</guid>
		<description><![CDATA[Ivan Zoratti: &#8220;The content can satisfy the appetite of a technical audience and of more business-oriented IT managers at the same time. We will have sessions on performance, on scalability solutions and on Proxy, with hands-on the servers, difference parameters and tools. IT managers will probably find interesting a renewed set of HA solutions and [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://izoratti.blogspot.com/2008/10/final-countdown-mysql-european.html">Ivan Zoratti</a>: &#8220;The content can satisfy the appetite of a technical audience and of more business-oriented IT managers at the same time. We will have sessions on performance, on scalability solutions and on Proxy, with hands-on the servers, difference parameters and tools. IT managers will probably find interesting a renewed set of HA solutions and some renewed views on the infrastructures used to power the Web.&#8221;</p>
<p>I&#8217;ll be attending the London conference, after having been there last year, and I&#8217;m looking forward to it. Am I again going to be one of the few Dutch folks in the crowd?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/10/16/mysql-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Programmer Personality Type is: DLSC</title>
		<link>http://blog.breuls.org/2008/10/04/my-programmer-personality-type-is-dlsc/</link>
		<comments>http://blog.breuls.org/2008/10/04/my-programmer-personality-type-is-dlsc/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 13:11:39 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=80</guid>
		<description><![CDATA[And this is why: You&#8217;re a Doer. You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money. You like coding at a Low level. You&#8217;re from the old school of [...]]]></description>
				<content:encoded><![CDATA[<p>And this is why:</p>
<blockquote><p>
<strong>You&#8217;re a Doer.</strong><br />
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.</p>
<p><strong>You like coding at a Low level.</strong><br />
You&#8217;re from the old school of programming and believe that you should have an intimate relationship with the computer. You don&#8217;t mind juggling registers around and spending hours getting a 5% performance increase in an algorithm.</p>
<p><strong>You work best in a Solo situation.</strong><br />
The best way to program is by yourself. There&#8217;s no communication problems, you know every part of the code allowing you to write the best programs possible.</p>
<p><strong>You are a Conservative programmer.</strong><br />
The less code you write, the less chance there is of it containing a bug. You write short and to the point code that gets the job done efficiently.</p></blockquote>
<p>I&#8217;m a web developer, so the way I interpret the &#8216;Low level&#8217; part is that I want to know what my PHP code does (through profiling and such), what actions my browser takes when I do something with javascript, and that I (for instance) use a packet sniffer when I really want to know what HTTP-requests are doing (very handy for ajax debugging).</p>
<p>I actually don&#8217;t think of myself as conservative. I like to try new stuff, be a bit adventurous, find new techniques to provide solutions, but in doing that I&#8217;ll always keep in mind that the end product needs to be well-performing, well-maintainable and, indeed, consisting of concise code.</p>
<p>Want to see what your type is? Have a look <a href="http://www.doolwind.com/index.php?page=11">here</a>. Thanks to <a href="http://twitter.com/marcnext/statuses/946089345">@marcnext</a> for the link.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/10/04/my-programmer-personality-type-is-dlsc/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>Farewell to PHP4</title>
		<link>http://blog.breuls.org/2008/08/08/farewell-to-php4/</link>
		<comments>http://blog.breuls.org/2008/08/08/farewell-to-php4/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 08:35:27 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[php4]]></category>
		<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=78</guid>
		<description><![CDATA[When I started out PHP&#8217;ing, I bought a little PHP book called &#8216;PHP pocket reference&#8217;. It was one of those small O&#8217;Reilly books and it was written by Rasmus Lerdorf himself. I still have it, although of course I don&#8217;t use it anymore. The book focused on PHP3, although PHP4 was already released. So, basically, [...]]]></description>
				<content:encoded><![CDATA[<p>When I started out PHP&#8217;ing, I bought a little PHP book called &#8216;PHP pocket reference&#8217;. It was one of those small O&#8217;Reilly books and it was written by Rasmus Lerdorf himself. I still have it, although of course I don&#8217;t use it anymore.</p>
<p>The book focused on PHP3, although PHP4 was already released. So, basically, I learned PHP with version 3. I started out writing scripts with a .php3 extension, something I still don&#8217;t understand; why was the version number included in the extension?</p>
<p>Anyway, not long after I started PHP&#8217;ing, my environments switched to PHP4 and I became a PHP4-developer. And I still am. One of my employers still uses PHP4 and although today is PHP4&#8242;s death date, there is no indication that there&#8217;s an urge to speed up the upgrade process (which thankfully is in place and being worked on).</p>
<p>The problem with PHP4 and PHP5 is that the upgrade process actually is a big step. For the software, because not everything &#8216;just works&#8217; when you upgrade to 5, but also for the developers. Some of my co-workers still consider the features that were introduced or improved in 5 &#8216;new&#8217;, although they&#8217;ve now been included with PHP for years. And that&#8217;s understandable; when working heavily on projects in PHP4, and without having the opportunity to check out what&#8217;s ahead and trying to use newer features, you&#8217;ll never get a taste of it. Of course, developers should take those opportunities themselves, checking out new features and developments in their own time, but not everyone does that.</p>
<p>So today is the end of PHP4. Not really of course, because lots of developers will probably still spend months working on PHP4 code. It will work just fine and do just what you want forever, it just won&#8217;t have any updates anymore, But if you consider the fact that some servers (even those of my employer) still run a 4.3.X-version of PHP, that hardly matters.</p>
<p>I&#8217;m glad I switched the projects at my other employer to PHP5 at the start of 2008; not only are we up to date, but the new features (or simply the small improvements in existing features) make working with PHP a lot nicer. And we&#8217;re ready for the future; PHP6 is upon us, and I hope it will be adopted (and adoptable) a lot faster than its predecessor.</p>
<p>PHP4, you&#8217;ve served us well. You paved the way for PHP5. Thanks! Now get out, and stay out.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/08/08/farewell-to-php4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links for this week</title>
		<link>http://blog.breuls.org/2008/07/09/links-for-this-week-2/</link>
		<comments>http://blog.breuls.org/2008/07/09/links-for-this-week-2/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 09:07:09 +0000</pubDate>
		<dc:creator>Peter Breuls</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.breuls.org/?p=73</guid>
		<description><![CDATA[&#187; Neat tricks for the MySQL command-line pager &#187; Why do browsers still not have file upload progress meters? &#187; How Facebook serves pictures &#187; Migrating OOP Libraries and Frameworks to PHP 5.3 &#187; Desktop Image Uploaders Using Adobe AIR and JavaScript]]></description>
				<content:encoded><![CDATA[<p>&raquo; <a href="http://www.mysqlperformanceblog.com/2008/06/23/neat-tricks-for-the-mysql-command-line-pager/">Neat tricks for the MySQL command-line pager</a><br />
&raquo; <a href="http://michaelkimsal.com/blog/why-do-browsers-still-not-have-file-upload-progress-meters/">Why do browsers still not have file upload progress meters?</a><br />
&raquo; <a href="http://www.bytebot.net/blog/archives/2008/06/25/how-facebook-serves-pictures">How Facebook serves pictures</a><br />
&raquo; <a href="http://weierophinney.net/matthew/archives/181-Migrating-OOP-Libraries-and-Frameworks-to-PHP-5.3.html">Migrating OOP Libraries and Frameworks to PHP 5.3</a><br />
&raquo; <a href="http://devzone.zend.com/article/3650-Desktop-Image-Uploaders-Using-Adobe-AIR-and-JavaScript">Desktop Image Uploaders Using Adobe AIR and JavaScript</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.breuls.org/2008/07/09/links-for-this-week-2/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>
	</channel>
</rss>
