<?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>Ronald! &#187; code</title>
	<atom:link href="http://www.rchu.nl/tag/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rchu.nl</link>
	<description>My own little corner of the world wide web</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:00:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Creating a Waveform image with PHP</title>
		<link>http://www.rchu.nl/2011/09/creating-a-waveform-image-with-php/</link>
		<comments>http://www.rchu.nl/2011/09/creating-a-waveform-image-with-php/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 08:00:36 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.rchu.nl/?p=909</guid>
		<description><![CDATA[For my new website I have been working on for a while I want to generate an image of the waveform of all audio files uploaded on the server. A trip down google avenue quickly led me to this post on andrewfreiday.com. He describes his search for the very same and comes up with a <a href='http://www.rchu.nl/2011/09/creating-a-waveform-image-with-php/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.rchu.nl/wordpress/wp-content/uploads/wave.png" alt="" title="wave" width="150" height="150" class="alignright size-full wp-image-910" />For my new website I have been working on for a while I want to generate an image of the waveform of all audio files uploaded on the server. A trip down google avenue quickly led me to <a href="http://andrewfreiday.com/2010/04/29/generating-mp3-waveforms-with-php/">this post on andrewfreiday.com</a>. He describes his search for the very same and comes up with a solution using lame to convert the mp3 file to a wave file and a php script to generate the image. I&#8217;m going to use his approach and couldn&#8217;t resist rewriting the script.</p>
</p>
<p>You can download <a href="http://rchu.nl/files/waveform.phps">my script for generating a waveform</a>. It is licensed under the Apache License v2.0 because the original script was (I usually don&#8217;t bother with a license).</p>
<p><span id="more-909"></span></p>
<p>Too fully get what I&#8217;m talking about you should really first read the <a href="http://andrewfreiday.com/2010/04/29/generating-mp3-waveforms-with-php/">post on andrewfreiday.com</a> and look at the source code of both his and my script.</p>
<p>The original script gets the input via a POST request and uses <code>eval()</code> to call lame for the conversion. Since I do not want to use <code>eval()</code> my script should be used a a command-line tool and I&#8217;ll probably watch a directory or use the cron daemon to call a shell script which will call lame and my PHP script. It takes two parameters: the wave and png file (eg. <code>php waveform.php file.wav file.phg</code>). Same difference, and if you want the original approach it shouldn&#8217;t be hard to change it back. The actual waveform generating part consists of two parts: reading the wave file and drawing the image.</p>
<p>Reading the wave file is bases <a href="http://forums.devshed.com/php-development-5/reading-16-bit-wav-file-318740.html">a post by &#8220;zvoneM&#8221; on DevShed</a>. I&#8217;ve looked closely at the wave file specifications and the code that reads the header of the file but changed little. There are some checks on the format of the file, that&#8217;s all. I did completely rewrite how the actual is read.</p>
<p>The original code reads one value and then skips a bunch. This approach is not flexible enough and takes more time on large files. Since I am going to post two-hour DJ sets this needed to change. How much values need to be read depends on the width of the image generated. The image is also drawn within the same loop as opposed to looping over an array after reading the file.</p>
<p>The drawing part is mainly the original code, but to improve the quality of the image it is generated and then resized resulting in a more accurate and nicely antialiased image. Multiple values are read for one line to reduce the chance that the one value read is not the most representable for the block of audio it represents. This results in a more full image because less (or no) peaks are missing or to short. The image at the top of this post is generated with a zoom level of 10 and 100 values per line.<br />
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.rchu.nl/2011/09/creating-a-waveform-image-with-php/&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://www.rchu.nl/2011/09/creating-a-waveform-image-with-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Add a reply-to header with Procmail</title>
		<link>http://www.rchu.nl/2011/06/add-a-reply-to-header-with-procmail/</link>
		<comments>http://www.rchu.nl/2011/06/add-a-reply-to-header-with-procmail/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 12:07:09 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.rchu.nl/?p=849</guid>
		<description><![CDATA[After discovering I didn&#8217;t backup everything on my server before the hard disk was replaced I realized how much I love  procmail, especially the rule that adds a reply-to header to several mailing lists. Technically they aren&#8217;t mailinglists but just lists, thanks to Google Apps used by my student association. Fortunately I bragged about it <a href='http://www.rchu.nl/2011/06/add-a-reply-to-header-with-procmail/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>After discovering I didn&#8217;t backup everything on my server before the hard disk was replaced I realized how much I love  <a href="http://www.procmail.org/">procmail</a>, especially the rule that adds a reply-to header to several mailing lists. Technically they aren&#8217;t mailinglists but just lists, thanks to <a href="http://www.google.com/apps/intl/en/group/index.html">Google Apps</a> used by my <a href="http://www.biton.nl/">student association</a>. Fortunately I bragged about it on <a href="http://www.facebook.com/rchu.nl">Facebook</a> several months ago so after checking my old wall posts (not a pleasant job because it was months and months of posts) I found it.</p>
<p>I did fix my backup scripts but just to be sure, and maybe to make someone else happy I&#8217;m posting it here:</p>
<pre class="brush: bash;">
# Add reply-to to those pesky example.com mailinglists.
:0 fhw
* ^List-Id:\/.*\.example\.com
|formail -I &quot;Reply-To: `echo $MATCH | \
sed -e 's/^.*\&gt;\(.*\)\.example\.com.*$/\1@example.com/'`&quot;

# Other ppl without cool procmail rules press reply-all
# so delete all to &lt;lists&gt;@example.com msgs cc'd to me
:0
* ^TO_(list_name|another_list|yet_another_list)@example.com
* !^List-Id:\/.*\.example\.com
/dev/null
</pre>
<p><strong>Update:</strong> I&#8217;ve added a second rule to delete all mail that is addressed to the mailing list (using *@example.com won&#8217;t work because there are also non-list adresses at that domain) but has no list-id and therefor must be a cc to me, not the list, because few people have these cool filters and most just press reply-all to make sure it is at least delivered to the list. Sigh. I&#8217;m still monitoring this rule in case of errors but it seems to work fine. You can replace /dev/null with your trash folder if you want to be less rigorous.</p>
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.rchu.nl/2011/06/add-a-reply-to-header-with-procmail/&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://www.rchu.nl/2011/06/add-a-reply-to-header-with-procmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disk usage notification</title>
		<link>http://www.rchu.nl/2011/02/disk-usage-notification/</link>
		<comments>http://www.rchu.nl/2011/02/disk-usage-notification/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 11:50:59 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.rchu.nl/?p=714</guid>
		<description><![CDATA[I don&#8217;t pay much attention to my hard disk usage nor do I remember to periodically empty the trash. In fact, I don&#8217;t want to empty the trash as long as the disk space is available because you never know when to need to restore a trashed file. To keep track of my disk usage <a href='http://www.rchu.nl/2011/02/disk-usage-notification/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rchu.nl/wordpress/wp-content/uploads/Screen-shot-2011-02-16-at-12.48.21.png"><img class="alignright size-thumbnail wp-image-719" title="Disk usage growl notification" src="http://www.rchu.nl/wordpress/wp-content/uploads/Screen-shot-2011-02-16-at-12.48.21-150x150.png" alt="" width="150" height="150" /></a>I don&#8217;t pay much attention to my hard disk usage nor do I remember to periodically empty the trash. In fact, I don&#8217;t want to empty the trash as long as the disk space is available because you never know when to need to restore a trashed file.</p>
<p>To keep track of my disk usage I made a simple bash script that determines the free space and size of the trash and sends a Growl notification if the disk space is running low or the trash is to big (absolute or proportional to the free space available) and set my crontab to run it every 15 minutes. <span id="more-714"></span></p>
<pre class="brush: bash;">
#!/bin/sh

trash=`du -d 0 -k /Users/ronald/.Trash/ | awk '{print &quot;scale=0; &quot;$1&quot;*1024/1000000000&quot;}' | bc`
freespace=`df / | tail -n 1 | awk '{print &quot;scale=0; &quot;$4&quot;*512/1000000000&quot;}' | bc`
trashperc=`echo &quot;scale=0; 100*$trash/$freespace&quot;|bc`

if   [ $freespace -lt 20  ]; then message=&quot;Free disk space is running low&quot;
elif [ $trashperc -gt 100 ]; then message=&quot;Trash is more than half of the free disk space&quot;
elif [ $trash     -gt 20  ]; then message=&quot;Trash is getting big&quot;
else exit
fi

echo &quot;$message

$freespace GB free
$trash GB in trash ($trashperc%)&quot; |  /usr/local/bin/growlnotify -a /Applications/Utilities/Disk\ Utility.app -t Smith
</pre>
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.rchu.nl/2011/02/disk-usage-notification/&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://www.rchu.nl/2011/02/disk-usage-notification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some nice layout changes</title>
		<link>http://www.rchu.nl/2010/04/some-nice-layout-changes/</link>
		<comments>http://www.rchu.nl/2010/04/some-nice-layout-changes/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 18:27:36 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.rchu.nl/?p=444</guid>
		<description><![CDATA[My WordPress powered website has been running for quite some time now, and today I finally replaced the default theme with something I like better,  Suffusion, and customized it to my needs. I had installed some syntax highlighting plugins before but disabled them because I couldn&#8217;t get it to work properly. Now with the pretty <a href='http://www.rchu.nl/2010/04/some-nice-layout-changes/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-449" title="Source code" src="http://www.rchu.nl/wordpress/wp-content/uploads/Screen-shot-2010-04-05-at-19.33.47.png" alt="Source code" width="287" height="225" />My WordPress powered website has been running for quite some time now, and today I finally replaced the default theme with something I like better,  <a href="http://wordpress.org/extend/themes/suffusion">Suffusion,</a> and customized it to my needs.</p>
<p>I had installed some syntax highlighting plugins before but disabled them because I couldn&#8217;t get it to work properly. Now with the pretty new layout all posts with snippets of unhighlighted source code were a real eye-sore, so that needed to be fixed as wel.</p>
<p><span id="more-444"></span>For some unknown reason the <a href="http://wordpress.org/extend/plugins/syntaxhighlighter/">SyntaxHighlighter Evolved</a> plugin that I couldn&#8217;t get to do as I wanted before now works like a charm. The only difficult part was to get me some <a href="http://developer.apple.com/AppleScript/">AppleScript </a>highlighting. <a href="http://davidchambersdesign.com/applescript-syntax-highlighting/">David Chambers</a> has written a brush, so I only had to install that brush the <a href="http://www.viper007bond.com/wordpress-plugins/syntaxhighlighter/adding-a-new-brush-language/">proper way</a>. Creating the plugin was easy:</p>
<pre class="brush: php;">
&lt;?php
/*
Plugin Name: SyntaxHighlighter Evolved: AppleScript Brush
Description: Adds support for the Applescript language to the SyntaxHighlighter Evolved plugin.
Author: Ronald Chu
Version: 1.0.0
Author URI: http://www.rchu.nl/
*/

// SyntaxHighlighter Evolved doesn't do anything until early in the &quot;init&quot; hook, so best to wait until after that
add_action( 'init', 'syntaxhighlighter_applescript_regscript' );

// Tell SyntaxHighlighter Evolved about this new language/brush
add_filter( 'syntaxhighlighter_brushes', 'syntaxhighlighter_applescript_addlang' );

// Register the brush file with WordPress
function syntaxhighlighter_applescript_regscript() {
 wp_register_script( 'syntaxhighlighter-brush-applescript', plugins_url( 'shBrushAppleScript.js', __FILE__ ), array('syntaxhighlighter-core'), '1.2.3' );
}

// Filter SyntaxHighlighter Evolved's language array
function syntaxhighlighter_applescript_addlang( $brushes ) {
 $brushes['applescript'] = 'applescript';
 $brushes['osascript'] = 'applescript';

 return $brushes;
}
?&gt;
</pre>
<p>But at first the highlighting did not work on AppleScript snippets, and it took me quite some time to find out that I shouldn&#8217;t have copy-pasted the javascriptcode into <a href="http://www.vim.org/about.php">Vim</a> on my ssh shell. Some of the special characters in line 37 were transformed into in a question mark which broke the regular expression.</p>
<p>Now, as far as I know, only one thing is wrong; when I refresh quickly in Chrome (5.0.342.7 beta, OS X 10.6.2) some of the keywords do not light up. I do not know if it is a bug in Chome, SyntaxHighighter or the AppleScript brush, but it is something I can live with for now.</p>
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.rchu.nl/2010/04/some-nice-layout-changes/&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://www.rchu.nl/2010/04/some-nice-layout-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDO: Configuring Apache, MySQL and PHP on OSX 10.5.7</title>
		<link>http://www.rchu.nl/2009/09/pdo-configuring-apache-mysql-and-php-on-osx-10-5-7/</link>
		<comments>http://www.rchu.nl/2009/09/pdo-configuring-apache-mysql-and-php-on-osx-10-5-7/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 11:00:51 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://www.rchu.nl/?p=376</guid>
		<description><![CDATA[I&#8217;d like to use PDO in conjunction with MySQL, but in the PHP installation shipped with OS X by default only pdo_sqlite is enabled. I do not want to compile my own Apache or PHP so the way to go is to simply add the pdo_mysql module. I followed these instructions but after running phpize <a href='http://www.rchu.nl/2009/09/pdo-configuring-apache-mysql-and-php-on-osx-10-5-7/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to use PDO in conjunction with MySQL, but in the PHP installation shipped with OS X by default only pdo_sqlite is enabled. I do not want to compile my own Apache or PHP so the way to go is to simply add the pdo_mysql module. I followed <a href="http://gidden.net/tom/2008/06/30/mysql-and-pdo-on-os-x-leopard-intel/">these</a> instructions but after running phpize there were some warings on my screen and no makefile to be found. My current PHP version is 5.2.8 and I used the source of 5.3.0, so I tried again with 5.2.10 (since no other version was available at the <a href="http://www.php.net/downloads.php">PHP download page</a>). Both yield the same result, namely that it compiles, installs and won&#8217;t start.</p>
<p><code> PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/pdo_mysql.so' - (null) in Unknown on line 0</code></p>
<p>Following instructions in the comment to remove all architectures but the x86_64 have no effect. I think I have to compile my own PHP installation and have apache use that. Which sucks so much I decided to just wait for Snow Leopard and pray that either pdo_mysql is installed or dynamicly loading libraries is allowed there. I am happy to inform you all that the first is the case. Hurray!</p>
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.rchu.nl/2009/09/pdo-configuring-apache-mysql-and-php-on-osx-10-5-7/&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://www.rchu.nl/2009/09/pdo-configuring-apache-mysql-and-php-on-osx-10-5-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN UP</title>
		<link>http://www.rchu.nl/2009/01/svn-up/</link>
		<comments>http://www.rchu.nl/2009/01/svn-up/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 15:23:15 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.rchu.nl/2009/01/svn-up/</guid>
		<description><![CDATA[The svn commandline tool is great, but when I don&#8217;t receive a e-mail notifying me of a new commit I hardly ever read the log messages. That&#8217;s why I added an alias to my profile called svnup which does an update and then prints the log from the revision before the update to now. SVN_CURR_REV=`svn <a href='http://www.rchu.nl/2009/01/svn-up/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>The svn commandline tool is great, but when I don&#8217;t receive a e-mail notifying me of a new commit I hardly ever read the log messages. That&#8217;s why I added an alias to my profile called <code>svnup</code> which does an update and then prints the log from the revision before the update to now.</p>
<pre class="brush: bash;">
SVN_CURR_REV=`svn info|grep 'Last Changed Rev'|awk '{ print $4 }'`; \
svn up; \
svn log -r $SVN_CURR_REV:HEAD
</pre>
<p>Now I just have to remember tot type <code>svnup</code> instead of <code>svn up</code>.</p>
<p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://www.rchu.nl/2009/01/svn-up/&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p>]]></content:encoded>
			<wfw:commentRss>http://www.rchu.nl/2009/01/svn-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

