<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>iamcal.com</title>
		<link>http://www.iamcal.com/</link>
		<description>All the links rom iamcal.com</description>
		<pubDate>Mon, 20 Apr 2026 15:54:16 +0000</pubDate>
		<lastBuildDate>Mon, 20 Apr 2026 15:54:16 +0000</lastBuildDate>
		<generator>http://www.iamcal.com/</generator>
		<image>
			<url>http://www.iamcal.com/images/logo.gif</url>
			<title>iamcal.com</title>
			<link>http://www.iamcal.com/</link>
		</image>

		<item>
			<title>Homespring.cloud</title>
			<link>http://www.iamcal.com/2026-04/homespringcloud/</link>
			<description>&lt;p&gt;After a mere 10 years in limbo, I&#039;ve finally finished &lt;a href=&quot;https://homespring.cloud/&quot;&gt;Homespring.cloud&lt;/a&gt;, an online interactive debugger for the Homespring language, based on my &lt;a href=&quot;https://github.com/iamcal/homespring.js&quot;&gt;JavaScript interpreter&lt;/a&gt;. It makes writing and running Homespring programs easier to learn and much more fun!&lt;/p&gt;

&lt;p class=&quot;bimg&quot;&gt;&lt;a href=&quot;https://homespring.cloud/&quot;&gt;&lt;img src=&quot;/images/blog/hello_world.png&quot; width=&quot;600&quot; height=&quot;318&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
			<pubDate>Mon, 20 Apr 2026 15:54:16 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10261/</guid>
		</item>
		<item>
			<title>Adventures in code: PHP unit testing</title>
			<link>http://www.iamcal.com/2021-01/adventures-in-code-php-unit-testing/</link>
			<description>&lt;p&gt;If you want to make a PHP package available that works on versions of PHP from 5.3 to 8.0, testing is a giant pain. There are versions of phpunit that work for each, but none that works for all. Additionally, the basic class names changed at some point in the past. Getting all of this to run on Travis, including running code coverage (but only once for each build!) was a complex series of trials, but I finally figured out the correct &lt;a href=&quot;https://github.com/iamcal/pquery/blob/main/.travis.yml&quot;&gt;.travis.yml incantation&lt;/a&gt;, along with a &lt;a href=&quot;https://github.com/iamcal/pquery/blob/main/tests/init.php&quot;&gt;magic test wrapper&lt;/a&gt; for aliasing classes&lt;/p&gt;
</description>
			<pubDate>Sat, 23 Jan 2021 02:39:49 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10166/</guid>
		</item>
		<item>
			<title>7th May, 10:57 pm</title>
			<link>http://www.iamcal.com/2019-05/10140/</link>
			<description>&lt;p&gt;It turns out you can make a &lt;a href=&quot;https://github.com/kkuchta/css-only-chat&quot;&gt;browser based chat client&lt;/a&gt; without using any JS or forcing page reloads. Truly amazing/evil. Probably not practical, but does show a clever mechanism for allowing some dynamic data flow with JS disabled.&lt;/p&gt;
</description>
			<pubDate>Tue, 7 May 2019 22:57:59 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10140/</guid>
		</item>
		<item>
			<title>11th December, 11:29 pm</title>
			<link>http://www.iamcal.com/2017-12/esolangquiz/</link>
			<description>&lt;p&gt;Way back in July, I was inspired by Tripelbyte&#039;s &lt;a href=&quot;https://quiz.triplebyte.com/language-identification/&quot;&gt;language identification quiz&lt;/a&gt;, so I made &lt;a href=&quot;https://esolangquiz.iamcal.com/&quot;&gt;my own version for esoteric languages&lt;/a&gt;. Never got around to sharing it outside of Slack, but here it is.&lt;/p&gt;
</description>
			<pubDate>Mon, 11 Dec 2017 23:29:26 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10109/</guid>
		</item>
		<item>
			<title>TraceGL</title>
			<link>http://www.iamcal.com/2013-07/tracegl/</link>
			<description>&lt;p&gt;&lt;a href=&quot;https://trace.gl/&quot;&gt;TraceGL&lt;/a&gt; is really stepping up the game of JS debugging in the browser.&lt;/p&gt;
</description>
			<pubDate>Fri, 12 Jul 2013 21:12:00 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10098/</guid>
		</item>
		<item>
			<title>Doom 3 Source</title>
			<link>http://www.iamcal.com/2013-04/doom-3-source/</link>
			<description>&lt;p&gt;This &lt;a href=&quot;http://fabiensanglard.net/doom3/index.php&quot;&gt;review of Doom 3&#039;s source release&lt;/a&gt; is full of tons of interesting stuff, even for non-graphics programmers. [via waferbaby]&lt;/p&gt;
</description>
			<pubDate>Mon, 1 Apr 2013 22:10:00 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10082/</guid>
		</item>
		<item>
			<title>Regexp Kung-fu</title>
			<link>http://www.iamcal.com/2013-03/regexp-kung-fu/</link>
			<description>&lt;p&gt;There are two answers guaranteed to show up on nearly every PHP question on Stack Overflow - use the mysqli/PDO extension instead of the deprecated mysql one (to avoid SQL injection), and that you can&#039;t parse HTML with regular expressions.&lt;/p&gt;

&lt;p&gt;With that in mind, my favorite two answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[How PDO is still vulnerable to SQL injection attacks](http://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection/12202218#12202218) by Anthony Ferrara&lt;/li&gt;
&lt;li&gt;[Parsing HTML with regular expressions](http://stackoverflow.com/questions/4231382/regular-expression-pattern-not-matching-anywhere-in-string/4234491#4234491) by Tom Christiansen&lt;/li&gt;
&lt;/ul&gt;
</description>
			<pubDate>Thu, 28 Mar 2013 05:10:00 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10021/</guid>
		</item>
		<item>
			<title>Github March Wrapup</title>
			<link>http://www.iamcal.com/2013-03/github-march-wrapup/</link>
			<description>&lt;p&gt;I&#039;ve posted a bunch of projects to Github in the last few months and haven&#039;t linked to them anywhere, so here&#039;s a quick roundup of recently notable projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[lib_timezones](https://github.com/iamcal/lib_timezones) - A PHP and JS library to handle user-specified timezones properly, with reasonable client-side auto detection.&lt;/li&gt;
&lt;li&gt;[lib_classsify](https://github.com/iamcal/lib_classify) - A partial PHP port of Github&#039;s own [linguist](https://github.com/github/linguist) which can automatically detect the programming language, given a code fragment.&lt;/li&gt;
&lt;li&gt;[js-emoji](https://github.com/iamcal/js-emoji) - A JavaScript library to allow display of Emoji in then browser for OSs without native support (anything that&#039;s not OSX 10.8 or iOS 6)&lt;/li&gt;
&lt;li&gt;[lib_autolink](https://github.com/iamcal/lib_autolink) - My old PHP URL-detection and linking library, updated to handle multiple protocols.&lt;/li&gt;
&lt;li&gt;[lib_solr_query](https://github.com/iamcal/lib_solr_query) - A PHP library to turn user-entered complex search queries into valid SOLR query syntax. Supports phrases, booleans, nesting, assertions and more.&lt;/li&gt;
&lt;/ul&gt;
</description>
			<pubDate>Mon, 25 Mar 2013 17:02:00 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10022/</guid>
		</item>
		<item>
			<title>Chrome Performance</title>
			<link>http://www.iamcal.com/2013-02/chrome-performance/</link>
			<description>&lt;p&gt;Chrome continue to get better and better. Ilya Grigorik explains some of the optimizations going on under the hood in &lt;a href=&quot;http://www.igvita.com/posa/high-performance-networking-in-google-chrome/&quot;&gt;this chapter&lt;/a&gt; from an upcoming performance book. If you work on the web, it&#039;s a fascinating read.&lt;/p&gt;
</description>
			<pubDate>Sun, 3 Feb 2013 07:28:00 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10011/</guid>
		</item>
		<item>
			<title>JSON Processing</title>
			<link>http://www.iamcal.com/2012-11/json-processing/</link>
			<description>&lt;p&gt;If you&#039;re working with JSON on the command line, then I can highly recommend &lt;a href=&quot;http://stedolan.github.com/jq/&quot;&gt;jq&lt;/a&gt; for simple data manipulation. It let&#039;s you mine into JSON data using an XPath-like query syntax and makes quick work of extracting the stuff you actually care about. The source is &lt;a href=&quot;https://github.com/stedolan/jq&quot;&gt;on the githubs&lt;/a&gt;.&lt;/p&gt;
</description>
			<pubDate>Sat, 10 Nov 2012 01:00:00 +0000</pubDate>
			<author>nobody@domain.com (Cal Henderson)</author>
			<guid isPermaLink="false">tag:iamcal.com,2005:/blog/10048/</guid>
		</item>

	</channel>
</rss>
