<!DOCTYPE html>
<html>
	<head>
		<title>Geoff Garbers - Husband. Programmer. Tinkerer.</title>
		
<!-- This site is optimized with the Yoast SEO plugin v4.2.1 - https://yoast.com/wordpress/plugins/seo/ -->
<meta name="description" content="Husband. Programmer. Tinkerer."/>
<meta name="robots" content="noodp"/>
<link rel="canonical" href="http://direct.garbers.co.za/" />
<link rel="next" href="http://direct.garbers.co.za/page/2/" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Geoff Garbers - Husband. Programmer. Tinkerer." />
<meta property="og:description" content="Husband. Programmer. Tinkerer." />
<meta property="og:url" content="http://direct.garbers.co.za/" />
<meta property="og:site_name" content="Geoff Garbers" />
<script type='application/ld+json'>{"@context":"http:\/\/schema.org","@type":"WebSite","@id":"#website","url":"http:\/\/direct.garbers.co.za\/","name":"Geoff Garbers","potentialAction":{"@type":"SearchAction","target":"http:\/\/direct.garbers.co.za\/?s={search_term_string}","query-input":"required name=search_term_string"}}</script>
<!-- / Yoast SEO plugin. -->

<link rel='dns-prefetch' href='//direct.garbers.co.za' />
<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='dns-prefetch' href='//netdna.bootstrapcdn.com' />
<link rel='dns-prefetch' href='//s.w.org' />
		<script type="text/javascript">
			window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.2.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.2.1\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/direct.garbers.co.za\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7.11"}};
			!function(a,b,c){function d(a){var b,c,d,e,f=String.fromCharCode;if(!k||!k.fillText)return!1;switch(k.clearRect(0,0,j.width,j.height),k.textBaseline="top",k.font="600 32px Arial",a){case"flag":return k.fillText(f(55356,56826,55356,56819),0,0),!(j.toDataURL().length<3e3)&&(k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57331,65039,8205,55356,57096),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57331,55356,57096),0,0),c=j.toDataURL(),b!==c);case"emoji4":return k.fillText(f(55357,56425,55356,57341,8205,55357,56507),0,0),d=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55357,56425,55356,57341,55357,56507),0,0),e=j.toDataURL(),d!==e}return!1}function e(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i,j=b.createElement("canvas"),k=j.getContext&&j.getContext("2d");for(i=Array("flag","emoji4"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
		</script>
		<style type="text/css">
img.wp-smiley,
img.emoji {
	display: inline !important;
	border: none !important;
	box-shadow: none !important;
	height: 1em !important;
	width: 1em !important;
	margin: 0 .07em !important;
	vertical-align: -0.1em !important;
	background: none !important;
	padding: 0 !important;
}
</style>
<link rel='stylesheet' id='garbers_pure-css'  href='//cdnjs.cloudflare.com/ajax/libs/pure/0.3.0/pure-min.css?ver=20140212' type='text/css' media='all' />
<link rel='stylesheet' id='garbers_font_sansserif-css'  href='//fonts.googleapis.com/css?family=Raleway%3A700%2C400%2C300&#038;ver=20140212' type='text/css' media='all' />
<link rel='stylesheet' id='garbers_font_serif-css'  href='//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css?ver=20140212' type='text/css' media='all' />
<link rel='stylesheet' id='garbers_highlightcss-css'  href='http://direct.garbers.co.za/wp-content/themes/garbers/css/highlight.css?ver=20140212' type='text/css' media='all' />
<link rel='stylesheet' id='garbers_style-css'  href='http://direct.garbers.co.za/wp-content/themes/garbers/style.css?ver=20140212' type='text/css' media='all' />
<link rel='https://api.w.org/' href='http://direct.garbers.co.za/wp-json/' />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://direct.garbers.co.za/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://direct.garbers.co.za/wp-includes/wlwmanifest.xml" /> 
<meta name="generator" content="WordPress 4.7.11" />
	</head>
	<body class="home blog">

<div class="page-header">
	<div class="container">
		<div class="gravatar"><img src="http://2.gravatar.com/avatar/49dede0ac14e5bf0fbb8f4fa25adf3dd?s=100&amp;d=wavatar" width="100" height="100"></div>
		<h1>Geoff Garbers</h1>
		<span class="tagline">Husband, Programmer, Tinkerer, &amp; <a href="http://direct.garbers.co.za/about/">more</a>.</span>
	</div>
</div>

<div class="container">
	<div class="post-list">
											<h2>2014</h2>
									<h3><a href="http://direct.garbers.co.za/2014/06/24/send-all-email-single-recipient-using-postfix/">Send all email to a single recipient using Postfix</a></h3>
					<span class="posted">24 Jun 2014</span>
									<h3><a href="http://direct.garbers.co.za/2014/06/03/riak-does-not-start-automatically-boot/">Riak does not start automatically on boot</a></h3>
					<span class="posted">03 Jun 2014</span>
									<h3><a href="http://direct.garbers.co.za/2014/03/03/connecting-to-bitbucket-on-https-port/">Connecting to BitBucket on an HTTPS port</a></h3>
					<span class="posted">03 Mar 2014</span>
									<h3><a href="http://direct.garbers.co.za/2014/01/24/recursive-anonymous-functions-in-php/">Recursive anonymous functions in PHP</a></h3>
					<span class="posted">24 Jan 2014</span>
											<h2>2012</h2>
									<h3><a href="http://direct.garbers.co.za/2012/02/10/limiting-download-speeds-with-ubuntus-apt-get/">Limiting download speeds with Ubuntu&#039;s apt-get</a></h3>
					<span class="posted">10 Feb 2012</span>
									<h3><a href="http://direct.garbers.co.za/2012/02/10/ssh-into-a-linux-machine-without-entering-a-password/">SSH into a Linux machine without entering a password</a></h3>
					<span class="posted">10 Feb 2012</span>
									<h3><a href="http://direct.garbers.co.za/2012/02/08/bootstrapping-plugin-configuration-in-cakephp-2/">Bootstrapping plugin configuration in CakePHP 2</a></h3>
					<span class="posted">08 Feb 2012</span>
									<h3><a href="http://direct.garbers.co.za/2012/02/07/umount-mount-disagrees-with-the-fstab/">Umount: mount disagrees with the fstab</a></h3>
					<span class="posted">07 Feb 2012</span>
									<h3><a href="http://direct.garbers.co.za/2012/01/12/installing-the-debug-version-of-adobe-flash-in-linux/">Installing the debug version of Adobe Flash in Linux</a></h3>
					<span class="posted">12 Jan 2012</span>
											<h2>2011</h2>
									<h3><a href="http://direct.garbers.co.za/2011/09/22/using-a-non-breaking-space-in-utf-8-documents/">Using a non-breaking space in UTF-8 documents</a></h3>
					<span class="posted">22 Sep 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/09/21/why-i-still-wont-host-in-south-africa/">Why I *still* won&#039;t host in South Africa</a></h3>
					<span class="posted">21 Sep 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/06/01/static-pages-in-cakephp/">Static pages in CakePHP</a></h3>
					<span class="posted">01 Jun 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/05/30/retrieving-the-current-scripts-directory-in-bash/">Retrieving the current script&#039;s directory in bash</a></h3>
					<span class="posted">30 May 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/05/26/php-memory-management-for-variables/">PHP memory management for variables</a></h3>
					<span class="posted">26 May 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/05/03/easy-way-to-generate-cakephp-habtm-joins-for-use-in-pagination/">Easy way to generate CakePHP HABTM joins for use in pagination.</a></h3>
					<span class="posted">03 May 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/04/20/calculating-the-distance-between-two-gps-points-in-mysql/">Calculating the distance between two GPS points in MySQL</a></h3>
					<span class="posted">20 Apr 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/04/01/you-want-funky-disco-i-give-you-funky-disco/">You want funky disco? I give you funky disco!</a></h3>
					<span class="posted">01 Apr 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/03/30/cakephp-1-3-an-internal-error-has-occurred/">CakePHP 1.3 - An internal error has occurred.</a></h3>
					<span class="posted">30 Mar 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/02/08/easysms-send-sms-android-phone-browser/">Using EasySMS to send an SMS from your Android phone through your browser</a></h3>
					<span class="posted">08 Feb 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/02/07/receiving-notifications-pc-android-mobile-phone/">Receiving notifications to your PC from your Android mobile phone</a></h3>
					<span class="posted">07 Feb 2011</span>
									<h3><a href="http://direct.garbers.co.za/2011/01/11/connecting-quickly-to-an-apache-derby-database/">Connecting quickly to an Apache Derby database</a></h3>
					<span class="posted">11 Jan 2011</span>
											<h2>2010</h2>
									<h3><a href="http://direct.garbers.co.za/2010/12/15/recovering-recently-deleted-files-from-an-ext3ext4-with-journaling-partition/">Recovering recently deleted files from an EXT3/EXT4 (with journaling) partition</a></h3>
					<span class="posted">15 Dec 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/12/05/sending-mail-through-a-remote-smtp-server-in-linux/">Sending mail through a remote SMTP server in Linux</a></h3>
					<span class="posted">05 Dec 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/11/20/password-protect-a-directory-for-a-range-of-ip-addresses/">Password-protect a directory for a range of IP addresses</a></h3>
					<span class="posted">20 Nov 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/11/03/new-wordpress-theme-released-candy-coated-darkness/">New WordPress theme released – Candy Coated Darkness</a></h3>
					<span class="posted">03 Nov 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/10/12/our-engagement-photos-finally/">Our engagement photos! Finally!</a></h3>
					<span class="posted">12 Oct 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/10/02/securely-erasing-hard-drive-data-with-ubuntu-10-04/">Securely erasing hard-drive data with Ubuntu 10.04</a></h3>
					<span class="posted">02 Oct 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/09/28/cakephp-script-combiner-helper/">CakePHP Script Combiner Helper</a></h3>
					<span class="posted">28 Sep 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/09/16/ewn-mobi-goes-live-and-gets-an-award/">EWN.mobi goes live, and gets an &quot;award&quot;!</a></h3>
					<span class="posted">16 Sep 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/09/01/preserving-whitespace-in-bash-variables/">Preserving whitespace in bash variables</a></h3>
					<span class="posted">01 Sep 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/08/27/the-lifecycle-of-a-php-script/">The lifecycle of a PHP script</a></h3>
					<span class="posted">27 Aug 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/07/06/some-useful-cakephp-bootstrap-functions/">Some useful CakePHP bootstrap functions</a></h3>
					<span class="posted">06 Jul 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/05/31/downgrading-from-php5-3-on-ubuntu-10-04/">Downgrading from PHP5.3 on Ubuntu 10.04</a></h3>
					<span class="posted">31 May 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/05/21/useful-javascript-bookmarklets/">Useful JavaScript Bookmarklets</a></h3>
					<span class="posted">21 May 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/05/02/implementing-an-appshell-for-cakephp/">Implementing an AppShell for CakePHP</a></h3>
					<span class="posted">02 May 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/04/16/extracting-images-from-a-south-african-mms/">Extracting images from a South African MMS</a></h3>
					<span class="posted">16 Apr 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/04/08/rawr-moar-space-moar-traffic/">Rawr! Moar space! Moar traffic!</a></h3>
					<span class="posted">08 Apr 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/04/03/aching-legs-and-long-distances/">Aching legs and long distances...</a></h3>
					<span class="posted">03 Apr 2010</span>
									<h3><a href="http://direct.garbers.co.za/2010/04/01/starting-afresh/">Starting afresh...</a></h3>
					<span class="posted">01 Apr 2010</span>
										</div>
</div>

		<div class="page-footer">
			<div class="social-media">
				<a href="https://twitter.com/garbetjie" title="Twitter"><i class="fa fa-twitter"></i></a>
				<a href="https://www.facebook.com/geoffgarbers" class="Facebook"><i class="fa fa-facebook"></i></a>
				<a href="https://github.com/garbetjie/" class="GitHub"><i class="fa fa-github"></i></a>
				<a href="http://stackoverflow.com/users/2685292/garbetjie" class="Stack Overflow"><i class="fa fa-stack-overflow"></i></a>
				<a href="http://za.linkedin.com/in/geoffgarbers" class="LinkedIn"><i class="fa fa-linkedin"></i></a>
				<a href="mailto:geoff@garbers.co.za" class="Email me"><i class="fa fa-envelope"></i></a>
			</div>
			Copyright &copy; 2018		</div>
		<script type='text/javascript' src='http://direct.garbers.co.za/wp-content/themes/garbers/js/highlight.pack.js?ver=20140212'></script>
<script type='text/javascript' src='http://direct.garbers.co.za/wp-content/themes/garbers/js/init.js?ver=20140212'></script>
<script type='text/javascript' src='http://direct.garbers.co.za/wp-includes/js/wp-embed.min.js?ver=4.7.11'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var countVars = {"disqusShortname":"garbetjie"};
/* ]]> */
</script>
<script type='text/javascript' src='http://direct.garbers.co.za/wp-content/plugins/disqus-comment-system/media/js/count.js?ver=4.7.11'></script>
		<script>
			(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
			ga('create', 'UA-15606737-1', 'garbers.co.za');
			ga('send', 'pageview');
		</script>
	</body>
</html>
<!-- 24.5M -->
