<?xml version="1.0" encoding="UTF-8"?>
<!-- This sitemap was dynamically generated on 2026-04-27 at 00:57 by All in One SEO v4.7.5 - the original SEO plugin for WordPress. -->

<?xml-stylesheet type="text/xsl" href="https://gbh.fruitbat.io/default-sitemap.xsl?sitemap=root"?>
<urlset
	xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
	xmlns:xhtml="http://www.w3.org/1999/xhtml"
	xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/]]></loc>
		<lastmod><![CDATA[2025-09-15T15:30:50+08:00]]></lastmod>
		<changefreq><![CDATA[always]]></changefreq>
		<priority><![CDATA[1]]></priority>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/09/15/curl-getting-performance-data-with-curl/]]></loc>
		<lastmod><![CDATA[2025-09-15T15:30:50+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/09/curltiming_meme.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/09/09/php-a-curl-cheatsheet/]]></loc>
		<lastmod><![CDATA[2025-09-09T15:44:11+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/09/phpcurl_meme.jpeg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/08/13/nginx-making-basic-auth-useful/]]></loc>
		<lastmod><![CDATA[2025-08-13T14:45:58+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/08/basicauth_meme.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/08/md5_meme.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/07/23/php-manipulating-file-pointers-with-fseek-and-ftell/]]></loc>
		<lastmod><![CDATA[2025-07-23T14:43:58+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/07/fp_meme.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/07/03/linux-looking-under-the-hood-of-neofetch/]]></loc>
		<lastmod><![CDATA[2025-07-07T17:14:01+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/07/neofetch_meme.webp]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/07/neofetch_img_1.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/02/19/php-writing-command-line-applications-with-macrame-pt-2/]]></loc>
		<lastmod><![CDATA[2025-07-07T17:13:29+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/01/macrameexample.gif]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/01/29/php-writing-command-line-applications-with-macrame/]]></loc>
		<lastmod><![CDATA[2025-02-19T14:40:21+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/01/macrameexample.gif]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2025/02/07/php-powerful-sorting-with-usort/]]></loc>
		<lastmod><![CDATA[2025-02-07T15:52:31+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2025/02/meme_usort_1.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/09/30/vim-five-tips-to-become-a-more-mediocre-vim-user/]]></loc>
		<lastmod><![CDATA[2024-09-30T15:06:36+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_vim5a_1.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/vim5a_1_bookmark.gif]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/vim5a_2_escape_line.gif]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/vim5a_3_escape_paragraph.gif]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/vim5a_4_autocomplete.gif]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/vim5a_5_indent.gif]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/09/19/mysql-thai-food-near-me-or-doing-geo-distance-calculations-in-your-database/]]></loc>
		<lastmod><![CDATA[2024-09-19T18:54:01+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_location1.webp]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_location3.png]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_location2.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/image_location4.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/09/05/nginx-putting-your-site-in-downtime-for-everyone-except-you/]]></loc>
		<lastmod><![CDATA[2024-09-06T18:08:00+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_downtimeip1.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_downtimeip2.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/09/meme_downtimeip3-1.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/privacy/]]></loc>
		<lastmod><![CDATA[2024-09-03T17:43:37+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/07/22/php-concurrency-with-processes-pt-1-using-pcntl_fork-for-fun-and-performance/]]></loc>
		<lastmod><![CDATA[2024-08-19T14:59:11+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/07/meme_fork_2.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/07/meme_fork_3.png]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/07/meme_fork_1.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/08/19/php-concurrency-with-processes-pt-2-interprocess-communication-with-shmop/]]></loc>
		<lastmod><![CDATA[2024-08-19T14:58:20+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/08/meme_shmop_1.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/08/meme_shmop_2.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/08/meme_shmop_3.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/06/27/amber-writing-bash-scripts-in-amber-instead-pt-3-the-standard-library/]]></loc>
		<lastmod><![CDATA[2024-07-03T15:13:14+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/06/meme_amber3-1.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/07/03/amber-writing-bash-scripts-in-amber-instead-pt-4-functions/]]></loc>
		<lastmod><![CDATA[2024-07-03T15:12:57+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/07/meme_amber4.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/06/18/amber-writing-bash-scripts-in-amber-instead-pt-1-commands-and-error-handling/]]></loc>
		<lastmod><![CDATA[2024-07-03T14:48:51+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/06/meme_amber1.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/06/20/amber-writing-bash-scripts-in-amber-instead-pt-2-loops-and-ifs/]]></loc>
		<lastmod><![CDATA[2024-07-03T14:48:31+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/06/meme_amber_2.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/06/10/nginx-doing-ip-geolocation-right-in-nginx/]]></loc>
		<lastmod><![CDATA[2024-06-10T14:19:46+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/06/meme_geoip.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/06/04/php-doing-recursion-with-recursive-iteratoriterators/]]></loc>
		<lastmod><![CDATA[2024-06-04T13:47:04+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/05/meme_iterator.jpg]]></image:loc>
		</image:image>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/05/meme_recursion.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/05/21/php-write-php-8-4s-array_find-from-scratch/]]></loc>
		<lastmod><![CDATA[2024-06-03T15:28:09+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/05/28/mysql-using-json-data-and-not-hating-it/]]></loc>
		<lastmod><![CDATA[2024-05-29T12:53:07+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/05/json_carhood.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/05/21/bash-splitting-tarballs-the-easy-way/]]></loc>
		<lastmod><![CDATA[2024-05-21T14:44:45+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/05/tarballmeme.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/05/12/nginx-serving-private-files-with-x-accel/]]></loc>
		<lastmod><![CDATA[2024-05-16T14:56:28+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/05/mordor.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/04/22/uploading-to-s3-with-bash/]]></loc>
		<lastmod><![CDATA[2024-05-16T14:42:05+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/04/29/managing-disk-space-in-bash/]]></loc>
		<lastmod><![CDATA[2024-05-16T14:38:59+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/04/binlog_still_on.png]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/04/18/making-mysql-stdout-less-or-more-of-a-mess/]]></loc>
		<lastmod><![CDATA[2024-05-09T16:16:53+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/2024/05/06/mysql-using-the-slow-query-log/]]></loc>
		<lastmod><![CDATA[2024-05-09T16:14:19+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
		<image:image>
			<image:loc><![CDATA[https://gbh.fruitbat.io/wp-content/uploads/2024/05/somedba.jpg]]></image:loc>
		</image:image>
	</url>
	<url>
		<loc><![CDATA[https://gbh.fruitbat.io/sample-page/]]></loc>
		<lastmod><![CDATA[2024-04-17T17:55:02+08:00]]></lastmod>
		<changefreq><![CDATA[weekly]]></changefreq>
		<priority><![CDATA[0.7]]></priority>
	</url>
</urlset>
