<?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>blog.arithm &#187; Development</title>
	<atom:link href="http://blog.arithm.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.arithm.com</link>
	<description>Software.  Politics.  Tinfoil hat conjecture.</description>
	<lastBuildDate>Fri, 13 Jan 2012 19:00:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>&#8220;Author&#8221; and &#8220;Committer&#8221; fields in git metadata&#8230;</title>
		<link>http://blog.arithm.com/2011/11/18/author-and-committer-fields-in-git-metadata/</link>
		<comments>http://blog.arithm.com/2011/11/18/author-and-committer-fields-in-git-metadata/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:02:51 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1836</guid>
		<description><![CDATA[Discovered a nice little git trick today.  I haven&#8217;t seen this documented, so I&#8217;m not sure if it&#8217;s a feature per se, but if you set your user.name via git config like so: [user] &#160;&#160;&#160;&#160;name = accountname &#160;&#160;&#160;&#160;email = email@company.com and then commit with the --author="Full Name" flag set to another name, this will set [...]]]></description>
			<content:encoded><![CDATA[<p>Discovered a nice little git trick today.  I haven&#8217;t seen this documented, so I&#8217;m not sure if it&#8217;s a feature per se, but if you set your user.name via git config like so:</p>
<blockquote><p><code>[user]<br />
&nbsp;&nbsp;&nbsp;&nbsp;name = accountname<br />
&nbsp;&nbsp;&nbsp;&nbsp;email = email@company.com</code></p></blockquote>
<p>and then commit with the <code>--author="Full Name"</code> flag set to another name, this will set git&#8217;s commit metadata such that &#8220;Author:&#8221; is &#8220;Full Name&#8221; and &#8220;Committer:&#8221; is &#8220;accountname&#8221;.</p>
<p>Useful when you want to see the Author in your git logs and the Committer in tools like Hudson or Jenkins.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/18/author-and-committer-fields-in-git-metadata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tinyint(1) showing as bit?</title>
		<link>http://blog.arithm.com/2011/09/25/tinyint1-showing-as-bit/</link>
		<comments>http://blog.arithm.com/2011/09/25/tinyint1-showing-as-bit/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 04:33:43 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[tinyint]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1741</guid>
		<description><![CDATA[If Java is showing you tinyint(1) as a boolean bitfield, that&#8217;s probably because MySQL recently changed the behavior of tinyint: As of MySQL 5.0.3, a BIT data type is available for storing bit-field values. (Before 5.0.3, MySQL interprets BIT as TINYINT(1).) In MySQL 5.0.3, BIT is supported only for MyISAM. MySQL 5.0.5 extends BIT support [...]]]></description>
			<content:encoded><![CDATA[<p>If Java is showing you tinyint(1) as a boolean bitfield, that&#8217;s probably because <a href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html">MySQL recently changed the behavior of tinyint</a>:</p>
<blockquote><p>As of MySQL 5.0.3, a BIT data type is available for storing bit-field values. (Before 5.0.3, MySQL interprets BIT as TINYINT(1).) In MySQL 5.0.3, BIT is supported only for MyISAM. MySQL 5.0.5 extends BIT support to MEMORY, InnoDB, BDB, and NDBCLUSTER.</p></blockquote>
<p>To convince your JDBC driver to show you tinyint for the tiny little int that it actually is, rather than as a boolean, try setting the <code>tinyInt1isBit=false</code> parameter when connecting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/09/25/tinyint1-showing-as-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing the Dubious Symfony Test Harness</title>
		<link>http://blog.arithm.com/2011/02/18/fixing-the-dubious-symfony-test-harness/</link>
		<comments>http://blog.arithm.com/2011/02/18/fixing-the-dubious-symfony-test-harness/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 02:05:56 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1571</guid>
		<description><![CDATA[Although Symfony&#8217;s original baked-in test framework, Lime, is being replaced by PHPUnit in Symfony 2, I figure I should post a fix for those, like me, who will be stuck for the foreseeable future in Symfony 1.x with an older suite of tests. In general, Lime works pretty well except when running multiple tests in [...]]]></description>
			<content:encoded><![CDATA[<p>Although Symfony&#8217;s original baked-in test framework, <a href="http://trac.symfony-project.org/wiki/LimeTestingFramework">Lime</a>, is being replaced by PHPUnit in Symfony 2, I figure I should post a fix for those, like me, who will be stuck for the foreseeable future in Symfony 1.x with an older suite of tests.</p>
<p>In general, Lime works pretty well except when running multiple tests in the harness.  For example, when you run a specific test or tests:</p>
<p><code>$ ./symfony test-unit util<br />
1..14<br />
# isEmailValid()<br />
ok 1 - returns an integer<br />
ok 2 - test@test.com is a valid email address<br />
ok 3 - test@test is not a valid email address<br />
...</code></p>
<p>Lime plays along nicely.  But when you run all of your tests via the test harness like so:</p>
<p><code>$ ./symfony test-unit<br />
happyTest......................................................dubious<br />
    Test returned status 1<br />
sillyTest......................................................dubious<br />
    Test returned status 1<br />
...</code></p>
<p>the results can be dubious.</p>
<p>&#8220;Dubious&#8221; here means that the test crashed somehow during execution and so Lime doesn&#8217;t know if it would have passed or failed.  To see what&#8217;s going on, pop open <code>symfony/vendor/lime/lime.php</code>.  Depending on your version, you should see a block like the following inside lime_harness->run():</p>
<p><code>ob_start(array($this, 'process_test_output'));<br />
passthru(sprintf('%s -d html_errors=off -d open_basedir= -q "%s" 2>&#038;1', $this->php_cli, $file), $return);<br />
ob_end_clean();</code></p>
<p>Never mind that the above passthu may not work on Windows (see <a href="http://trac.symfony-project.org/ticket/5437">ticket #5437</a>), if you comment-out the output buffering and run your tests again, you&#8217;re likely to discover that Symfony can&#8217;t autoload Symfony libraries, base classes, or what-have-you; for example:</p>
<p><code>$ ./symfony test-unit<br />
Fatal error: Class 'sfCore' not found in D:\app\test\unit\happyTest.php on line 8<br />
Call Stack:<br />
    0.0004      70248   1. {main}() D:\app\test\unit\happyTest.php:0</code></p>
<p>The easiest fix is to work around this whole executing tests via passthru nonsense.  A good old &#8220;include&#8221;, like Pake does when you run one test at-a-time, will do just fine.  Patch lime.php:</p>
<p><code>ob_start(array($this, 'process_test_output'));<br />
$return = include($file);<br />
ob_end_clean();</code></p>
<p>Then add a &#8220;<code>return 0;</code>&#8221; to the end of each of your tests.  (Yes, the Lime harness expects zero to indicate success..)</p>
<p>Now the harness should run just fine:</p>
<p><code>$ ./symfony test-unit<br />
happyTest......................................................ok<br />
sillyTest......................................................ok<br />
All tests successful.<br />
Files=2, Tests=10</code></p>
<p>Of course, this will break the harness for the functional tests, but that&#8217;s a fix for another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/02/18/fixing-the-dubious-symfony-test-harness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why is MySQL so slow?</title>
		<link>http://blog.arithm.com/2010/03/16/why-is-mysql-so-slow/</link>
		<comments>http://blog.arithm.com/2010/03/16/why-is-mysql-so-slow/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 17:31:49 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1246</guid>
		<description><![CDATA[Ever try truncating large datasets on a Windows development box? Ugh. This kind of explains where MySQL is stuck: mysql> show processlist Kind of.]]></description>
			<content:encoded><![CDATA[<p>Ever try truncating large datasets on a Windows development box?  Ugh.</p>
<p>This kind of explains where MySQL is stuck:</p>
<p><code>mysql> show processlist</code></p>
<p>Kind of.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2010/03/16/why-is-mysql-so-slow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Flymake to work with Emacs nXhtml</title>
		<link>http://blog.arithm.com/2010/03/13/getting-flymake-to-work-with-emacs-nxhtml/</link>
		<comments>http://blog.arithm.com/2010/03/13/getting-flymake-to-work-with-emacs-nxhtml/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 17:27:45 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[flymake]]></category>
		<category><![CDATA[nxhtml]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1242</guid>
		<description><![CDATA[If you develop in PHP on Emacs, then you&#8217;ve probably got a hook setup to run flymake-mode on PHP files. And if so, then you&#8217;ve also probably noticed that this doesn&#8217;t work with nXhtml, which will often return an error like &#8220;mumamo can&#8217;t find the file&#8221; (or some such), causing flymake-mode to disable itself. The [...]]]></description>
			<content:encoded><![CDATA[<p>If you develop in PHP on Emacs, then you&#8217;ve probably got a hook setup to run flymake-mode on PHP files.  And if so, then you&#8217;ve also probably noticed that this doesn&#8217;t work with nXhtml, which will often return an error like &#8220;mumamo can&#8217;t find the file&#8221; (or some such), causing flymake-mode to disable itself.</p>
<p>The culprit is likely to be a bind like this:</p>
<p><code>(add-hook 'php-mode-hook (lambda () (flymake-mode t)))</code></p>
<p>which says, &#8220;turn on flymake-mode when php-mode is started&#8221;.  (Sacha Chua has a <a href="http://sachachua.com/wp/2008/07/emacs-and-php-on-the-fly-syntax-checking-with-flymake/">post </a>that recommends using this from couple of years back.)  The problem, as far as I can tell, is that nXhtml tries to process the fleetingly available _flymake file rather than the original PHP script whenever it toggles into php-mode. </p>
<p>A better hook to use is the find-file-hook, like this:</p>
<p><code>(add-hook 'find-file-hook 'flymake-mode)</code></p>
<p>With this, Flymake will properly validate PHP chunks in nXhtml mode, as well as any other files that Flymake is smart enough to process.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2010/03/13/getting-flymake-to-work-with-emacs-nxhtml/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Testing Regular Expressions in Emacs</title>
		<link>http://blog.arithm.com/2009/10/19/testing-regular-expressions-in-emacs/</link>
		<comments>http://blog.arithm.com/2009/10/19/testing-regular-expressions-in-emacs/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 01:55:36 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1067</guid>
		<description><![CDATA[How had I missed RE-Builder all these years? I used to use Expresso for help with regex&#8217;s, but it&#8217;s so much easier to do the munging in Emacs. Try M-x re-builder for what ails ya.]]></description>
			<content:encoded><![CDATA[<p>How had I missed <a href="http://www.emacswiki.org/emacs/ReBuilder">RE-Builder</a> all these years?  I used to use <a href="/2007/08/27/testing-regular-expressions-with-expresso/">Expresso </a>for help with regex&#8217;s, but it&#8217;s so much easier to do the munging in Emacs.</p>
<p>Try <code>M-x re-builder</code> for what ails ya.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2009/10/19/testing-regular-expressions-in-emacs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone-Simulator Cropper</title>
		<link>http://blog.arithm.com/2009/07/25/iphone-simulator-cropper/</link>
		<comments>http://blog.arithm.com/2009/07/25/iphone-simulator-cropper/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 18:56:04 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1001</guid>
		<description><![CDATA[If you&#8217;re doing a lot of iPhone work then Oliver Fürniß&#8217;s Simulator Cropper can be a major time-saver. But not as much of a time-saver as completely ignoring Apple&#8217;s style guidelines.  Which is always so tempting.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re doing a lot of iPhone work then Oliver Fürniß&#8217;s <a href="http://www.curioustimes.de/iphonesimulatorcropper/">Simulator Cropper</a> can be a major time-saver.</p>
<p>But not as much of a time-saver as completely ignoring Apple&#8217;s style guidelines.  Which is always so tempting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2009/07/25/iphone-simulator-cropper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Abstract Classes versus Interfaces</title>
		<link>http://blog.arithm.com/2009/07/16/abstract-classes-versus-interfaces/</link>
		<comments>http://blog.arithm.com/2009/07/16/abstract-classes-versus-interfaces/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 12:41:31 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=974</guid>
		<description><![CDATA[These are two things I think about every once-in-awhile. Usually late at night. While drinking. Heavily. Also I think about them while writing code. And typically, when I have to make a decision between one or the other, I choose the wrong one. Probably because I&#8217;ve never deeply thought about them in an IS-A versus [...]]]></description>
			<content:encoded><![CDATA[<p>These are two things I think about every once-in-awhile.  Usually late at night.  While drinking.  Heavily.</p>
<p>Also I think about them while writing code.  And typically, when I have to make a decision between one or the other, I choose the wrong one.  Probably because I&#8217;ve never deeply thought about them in an IS-A versus CAN-DO relationship as outlined <a href="http://geekswithblogs.net/mahesh/archive/2006/07/05/84120.aspx">here</a>.  Which, despite the broken English, is the best overview I&#8217;ve ever read on the difference between the two.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2009/07/16/abstract-classes-versus-interfaces/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kanji Fuda</title>
		<link>http://blog.arithm.com/2009/06/26/kanji-fuda/</link>
		<comments>http://blog.arithm.com/2009/06/26/kanji-fuda/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 03:05:29 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[App]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Japanese]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Kanji Fuda]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=976</guid>
		<description><![CDATA[Well, what was supposed to be a quick weekend project back in March is finally on it&#8217;s way to the iPhone App Store; and for the second time no less. &#8220;Kanji Fuda&#8221; is a simple Japanese kanji learning game reminiscent of ComCul&#8217;s excellent Kanji for Fun. Between work and baby management, I&#8217;ve been cobbling it [...]]]></description>
			<content:encoded><![CDATA[<p>Well, what was supposed to be a quick weekend project back in March is finally on it&#8217;s way to the iPhone App Store; and for the second time no less.</p>
<p>&#8220;Kanji Fuda&#8221; is a simple Japanese kanji learning game reminiscent of ComCul&#8217;s excellent <a href="http://www.comcul.com/software/windows/jmasters.html">Kanji for Fun</a>.  Between work and baby management, I&#8217;ve been cobbling it together in fits and starts over the last couple of months.  Even have the <a href="http://kanjifuda.com/">fancy shmancy website</a> that seems to be prerequisite for releasing any kind of mobile app.</p>
<p>Now that the basic version is done and &#8220;released&#8221; &#8212; assuming that I am able to get it by the App Store gate keepers &#8212; I&#8217;m working on an advanced version specifically to help study for the year-end <a href="http://www.jlpt.jp/e/">Japanese Language Proficiency Test</a> (JLPT).  I&#8217;ve always wanted to go after Level One, but given how little I actually use my Japanese these days, it&#8217;s going to be a stretch&#8230; hence Kanji Fuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2009/06/26/kanji-fuda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where did my older &#8220;Active SDK&#8221; settings go??</title>
		<link>http://blog.arithm.com/2009/05/20/where-did-my-older-active-sdk-settings-go/</link>
		<comments>http://blog.arithm.com/2009/05/20/where-did-my-older-active-sdk-settings-go/#comments</comments>
		<pubDate>Wed, 20 May 2009 18:08:11 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=928</guid>
		<description><![CDATA[Apparently Apple really really wants us to be building for only OS3. Xcode in the iPhone 3.0 beta 5 SDK goes to the trouble of actually hiding older Active SDK settings as soon as you do a build for 3.0. To get the older settings back, hold down the Option key while choosing Project -> [...]]]></description>
			<content:encoded><![CDATA[<p>Apparently Apple really <em>really</em> wants us to be building for only OS3.  Xcode in the iPhone 3.0 beta 5 SDK goes to the trouble of actually hiding older Active SDK settings as soon as you do a build for 3.0.</p>
<p>To get the older settings back, hold down the Option key while choosing Project -> Set Active SDK.  The original list magically reappears.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2009/05/20/where-did-my-older-active-sdk-settings-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

