<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Software is Crap</title>
	<atom:link href="http://davmac.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://davmac.wordpress.com</link>
	<description>Hasty insults from a frustrated user and developer</description>
	<lastBuildDate>Sun, 22 Jan 2012 16:51:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='davmac.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Software is Crap</title>
		<link>http://davmac.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://davmac.wordpress.com/osd.xml" title="Software is Crap" />
	<atom:link rel='hub' href='http://davmac.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Evince installation documentation</title>
		<link>http://davmac.wordpress.com/2012/01/23/evince-installation-documentation/</link>
		<comments>http://davmac.wordpress.com/2012/01/23/evince-installation-documentation/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 16:50:13 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=234</guid>
		<description><![CDATA[I just upgraded Evince on my system. Initial attempts were unsuccessful; I got the following message when trying to start it: (evince:22841): GLib-GIO-CRITICAL **: Settings schema &#8216;org.gnome.Evince.Default&#8217; is not installed I have no idea what this means so in the interim I try upgrading &#8216;glib&#8217;. This mostly goes without hiccups (except that newer versions of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=234&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just upgraded Evince on my system. Initial attempts were unsuccessful; I got the following message when trying to start it:</p>
<blockquote><p>(evince:22841): GLib-GIO-CRITICAL **: Settings schema &#8216;org.gnome.Evince.Default&#8217; is not installed</p></blockquote>
<p>I have no idea what this means so in the interim I try upgrading &#8216;glib&#8217;. This mostly goes without hiccups (except that newer versions of glib apparently have a dependency on libffi, for reasons which are tentatively explained in the glib README), however, I get the same error message when I try to start Evince. After some Googling, I discover the necessity of &#8216;compiling the schemas&#8217;:</p>
<p style="padding-left:30px;"># glib-compile-schemas /usr/share/glib-2.0/schemas</p>
<p>No mention at all of this in Evince build documentation. It looks like the schema might be compiled automatically if you &#8220;make install&#8221; Evince without setting DESTDIR, but frankly the necessity of compiling the schema should be documented.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/234/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=234&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2012/01/23/evince-installation-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Crappy g++ documentation on template instantiation</title>
		<link>http://davmac.wordpress.com/2012/01/06/crappy-g-documentation-on-template-instantiation/</link>
		<comments>http://davmac.wordpress.com/2012/01/06/crappy-g-documentation-on-template-instantiation/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 00:28:18 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=220</guid>
		<description><![CDATA[The g++ documentation says on template instantiation: G++ has extended the template instantiation syntax given in the ISO standard to allow forward declaration of explicit instantiations (with extern), instantiation of the compiler support data for a template class (i.e. the vtable) without instantiating any of its members (with inline), and instantiation of only the static [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=220&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The g++ documentation <a href="http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html">says on template instantiation</a>:</p>
<blockquote>
<p style="padding-left:30px;">G++ has extended the template instantiation syntax given in the ISO standard to allow forward declaration of explicit instantiations (with <code>extern</code>), instantiation of the compiler support data for a template class (i.e. the vtable) without instantiating any of its members (with <code>inline</code>), and instantiation of only the static data members of a template class, without the support data or member functions (with (<code>static</code>):</p>
<p style="padding-left:60px;"><code>extern template int max (int, int);<br />
inline template class Foo&lt;int&gt;;<br />
static template class Foo&lt;int&gt;;</code></p>
</blockquote>
<p>The one I&#8217;m interested in is &#8220;extern&#8221;. The docs as quoted above say that it &#8220;allows forward declaration of explicit instantiations&#8221;, but that&#8217;s useless; explicit template instantiations don&#8217;t need forward declarations, you may as well just do the instantiation. Of course, the documentation is actually incorrect by omission: the &#8220;extern&#8221; keyword in front of an explicit template instantiation (as in the example above) actually causes gcc <em>not</em> to emit the instantiated template (even when it would otherwise do so because of implicit instantiation). This means that we can use this syntax to avoid emitting a template instantiation which we know is already emitted in another module.</p>
<p>Avoiding the emission of a template instantiation in many cases has only limited practical value &#8211; it might reduce compilation and linkage time ever so slightly, and likewise reduce the disk space used by object files ever so slightly. It would also allow for removing the emitted instantiation from a shared library or executable if the same instantiation was known to be present in another library that we were linking against.</p>
<p>The point is, there&#8217;s a potentially useful feature which isn&#8217;t documented, yet the syntax is documented &#8211; with an incorrect description of what it does.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/220/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=220&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2012/01/06/crappy-g-documentation-on-template-instantiation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>MySql 5.1 build documentation &#8211; utter crap</title>
		<link>http://davmac.wordpress.com/2011/12/13/mysql-5-1-build-documentation-utter-crap/</link>
		<comments>http://davmac.wordpress.com/2011/12/13/mysql-5-1-build-documentation-utter-crap/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 16:44:49 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=209</guid>
		<description><![CDATA[I&#8217;m currently experiencing the joy of upgrading from MySql 5.0 to 5.1 on our server. After building MySql with the same &#8220;configure&#8221; options as used previously, then installing it, I run the &#8220;mysql_upgrade&#8221; command, which gives me some alarming output, basically along the lines of: mygame.scenarios_tags Error : Unknown table engine 'InnoDB' error : Corrupt [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=209&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently experiencing the joy of upgrading from MySql 5.0 to 5.1 on our server. After building MySql with the same &#8220;configure&#8221; options as used previously, then installing it, I run the &#8220;mysql_upgrade&#8221; command, which gives me some alarming output, basically along the lines of:</p>
<p style="padding-left:30px;"><code>mygame.scenarios_tags<br />
Error : Unknown table engine 'InnoDB'<br />
error : Corrupt<br />
mygame.schema_migrations<br />
Error : Unknown table engine 'InnoDB'<br />
error : Corrupt<br />
mygame.screenshot_attachments<br />
Error : Unknown table engine 'InnoDB'<br />
error : Corrupt</code></p>
<p>Unknown table engine? what the&#8230; Corrupt?</p>
<p>So, I go do some googling and reading of manuals (which I suppose I should have done beforehand, sure) and it turns out that in 5.1, the &#8220;InnoDB&#8221; storage engine (the only one worth actually using, as it actually supports locking and transactions) is now a &#8220;plugin&#8221; and you need a configuration option to enable it:<br />
<code></code></p>
<p style="padding-left:30px;"><code>[mysqld]<br />
plugin-load=innodb=ha_innodb_plugin.so</code></p>
<p>Ok, so, problem solved, right? Wrong. I then get the following output in the mysqld log:</p>
<p style="padding-left:30px;">111212 14:27:37 [ERROR] Can&#8217;t open shared library &#8216;/u1/overflow/usr/local/mysql-5.1.60/lib/mysql/plugin/ha_innodb_plugin.so&#8217; (errno: 2 ld.so.1: mysqld: fatal: relocation error: file /u1/overflow/usr/local/mysql-5.1.60/lib/mysql/plugin/ha_innodb_plugin.so: symbol )<br />
111212 14:27:37 [ERROR] Couldn&#8217;t load plugin named &#8216;innodb&#8217; with soname &#8216;ha_innodb_plugin.so&#8217;.</p>
<p>Hmm, not what I call an extremely useful error message. There seems to be some symbol resolution problem, but I don&#8217;t even know what particular symbol it&#8217;s having trouble with. Rather than mess around and trying to debug this, I go back to the build options. When I run &#8220;configure &#8211;help&#8221; I see, amongst other things:</p>
<pre>  --with-plugin-PLUGIN    Forces the named plugin to be linked into mysqld
                          statically.</pre>
<p>Err, what the&#8230; so, if say &#8220;&#8211;with-plugin-innodb&#8221; or something similar, it will link the plugin statically into mysqld? Weird. But hey, it&#8217;s a worth a shot. I try adding that to my &#8220;configure&#8221; options, and it immediately spews out a message saying that it doesn&#8217;t recognize the &#8220;&#8211;with-plugin-innodb&#8221; option! What the hell? I try a few variations but no joy. Getting quite frustrated by now. Ok, the &#8220;configure &#8211;help&#8221; output doesn&#8217;t match what &#8220;configure&#8221; actually accepts, maybe the <a href="http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html">manual</a> will be more update? Hmm, not really; it&#8217;s a bit of a confusing mess actually, and it claims that &#8220;&#8211;with-plugin-PLUGIN&#8221; should work. It does suggest however that no plugins are built by default, and therefore I decide to try the alternative &#8220;&#8211;with-plugins=innodb_plugin,innobase&#8221;. I&#8217;m not really sure if I need &#8220;innobase&#8221; but it seems like it can&#8217;t hurt. Waiting for compilation to finish now&#8230;</p>
<p>&#8230;</p>
<p>Success!</p>
<p>So, compiling without InnoDB support still produced a file called &#8220;ha_innodb_plugin.so&#8221;, which I can&#8217;t actually use? What the?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/209/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=209&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2011/12/13/mysql-5-1-build-documentation-utter-crap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Be Careful with Simplistic Locking</title>
		<link>http://davmac.wordpress.com/2011/08/18/be-careful-with-simplistic-locking/</link>
		<comments>http://davmac.wordpress.com/2011/08/18/be-careful-with-simplistic-locking/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 05:36:05 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Software design]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=203</guid>
		<description><![CDATA[(or: Re-entrant mutexes considered harmful) A common method of protecting data from race conditions in an object-oriented system is to use a simple mutex. The pattern goes something like this: Call some access or modification method on an object On entry to the method, mutex (associated with the object) is obtained &#8230; method does its [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=203&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>(or: <strong>Re-entrant mutexes considered harmful</strong>)</p>
<p>A common method of protecting data from race conditions in an object-oriented system is to use a simple mutex. The pattern goes something like this:</p>
<ol>
<li>Call some access or modification method on an object</li>
<li>On entry to the method, mutex (associated with the object) is obtained</li>
<li>&#8230; method does its stuff</li>
<li>Mutex is released</li>
<li>Method returns</li>
</ol>
<p>Java, for instance, provides built-in support for this particular sequence with the &#8220;synchronized&#8221; keyword. A method tagged as &#8220;synchronized&#8221; automatically obtains the mutex on entry and releases it on return, which removes a lot of the burden from the programmer who otherwise has to make sure that the mutex is properly released on every code path (including exceptions). This works fine in a lot of cases. Java&#8217;s mutexes are also re-entrant meaning that one synchronized method can call another one in the same object without causing instant deadlock, even though they share the same mutex (the mutex is associated with the object, not the method). However, &#8220;synchronized&#8221; is not suitable as a general purpose mutex, and in fact its re-entrancy can lead to bad design.</p>
<p>Consider a design which uses the listener pattern. That is, some class has a modifier method which modifies data and notifies a number of listeners of the change (via some listener interface). How could such a design be made thread-safe? it might be tempting to mark the modifier method as synchronized, and in many cases this would work fine. If a listener needs to access or modify data, it can do so, and the re-entrant nature of &#8220;synchronized&#8221; means no deadlock will occur. However, this approach is a bad design, for subtle reasons, which basically boil down to this: a mutex should not necessarily prevent data access or modification by threads which do not hold the mutex.</p>
<p><em>Huh</em>, you may be thinking, <em>what&#8217;s this guy smoking? That&#8217;s precisely what a mutex is for</em>. But that&#8217;s not exactly what a mutex is for; a mutex is a mechanism to allow threads to co-ordinate access to data (or some resource) in order to avoid race conditions, but it is not specifically meant to limit resource access to the single thread holding the mutex. In particular, if the thread holding the mutex is waiting on a mutex held by a second thread, and the second thread is operating under the assumption that this is the case, then it should be fine for that thread to access the resource that is protected by the mutex &#8211; clearly there can be no race condition, since the only other thread that otherwise has any right to access the resource (i.e., the thread that holds the mutex) is blocked.</p>
<p>If you think this argument is absurd, consider two cases in Java where this situation can come about:</p>
<ol>
<li>An arbitrary thread needs to modify the data (the &#8220;model&#8221;) of a Swing component, and needs to do so synchronously, from within a listener callback which is called with a mutex protecting an object &#8220;O&#8221; held. To modify the model safely the listener needs to use EventQueue.invokeAndWait() or equivalent. The code invoked on the dispatch thread also attempts to access the object &#8220;O&#8221;. Bang &#8211; deadlock.</li>
<li>Again, a listener callback is called with a mutex held. This time the listener calls a method on a remote object (in a second Java VM) via RMI. The remote invocation calls back in to the first VM and attempts to obtain the (supposedly re-entrant) mutex, however, due to the RMI implementation, is now running on a different thread in the first VM. Bang &#8211; deadlock.</li>
</ol>
<p>The obvious workaround &#8211; invoking the listener callback(s) outside of a synchronized block, i.e. without the mutex held, does work; but it leaves the possibility that the data is modified between the modification event and the listener being notified, which can be undesirable. The best solution from a design point-of-view is to move the acquisition and release of the mutex outside of the responsibility of the object being protected by it. Thus the sequence at the start of the would be changed to:</p>
<ol>
<li>Acquire mutex</li>
<li>Invoke method</li>
<li>&#8230; method does its thing</li>
<li>Method returns</li>
<li>Release mutex</li>
</ol>
<p>Also, it should be assumed (even enforced) that the mutex is <em>not </em>re-entrant, to allow for the case where the executing thread is not the one which actually acquired the mutex. This is more complicated, and places more burden on the programmer &#8211; which is not desirable, especially when dealing with concurrency &#8211; but it is a better overall design. For one thing, it allows a solution for the two problems outlined above; secondly, it separates concerns &#8211; why should an object worry about synchronising if it may or may not be used in a multi-threaded system?</p>
<p>Ideally there&#8217;d be some language support for this sort of design too. It would be nice if there was a way to tag that a specific object should only be touched when an associated mutex was held, and have static analysis to determine when such a rule was being broken. Unfortunately such things are not yet readily available/usable, at least not as far as I&#8217;m aware.</p>
<p>In conclusion: be careful when using &#8220;synchronized&#8221; or re-entrant mutexes; consider using non-re-entrant mutexes instead.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/203/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=203&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2011/08/18/be-careful-with-simplistic-locking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Gnash makes me gnash my teeth in frustration</title>
		<link>http://davmac.wordpress.com/2011/03/27/gnash-makes-me-gnash-my-teeth-in-frustration/</link>
		<comments>http://davmac.wordpress.com/2011/03/27/gnash-makes-me-gnash-my-teeth-in-frustration/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 11:48:44 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=189</guid>
		<description><![CDATA[A new release of Gnash has arrived: 0.8.9. I like the idea of having an open-source Flash plugin, but Gnash has never quite managed to fill my needs; I was thinking with the new version, things might be a bit better. Alas, after compiling and installing Gnash 0.8.9, all I see are grey rectangles where [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=189&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A new release of <a href="http://www.gnashdev.org/">Gnash</a> has arrived: 0.8.9. I like the idea of having an open-source Flash plugin, but Gnash has never quite managed to fill my needs; I was thinking with the new version, things might be a bit better. Alas, after compiling and installing Gnash 0.8.9, all I see are grey rectangles where flash movies should be. This is worse than the previous version! At least with 0.8.8 some flash movies did work.</p>
<p>When starting firefox from the terminal, I see this error output:</p>
<blockquote><p>Error: Support for renderer agg was not build</p></blockquote>
<p>&#8220;agg&#8221; refers to the antigrain renderer, which I indeed I *hadn&#8217;t* built. However, one would assume that if there is an option <em>not</em> to build a renderer, then that renderer is indeed optional to the operation of the software. Delving into the source, I discovered that the &#8220;agg&#8221; renderer was being set as the default at an early stage (in the command line options parsing, which is done via the boost library&#8217;s &#8220;program_options&#8221; module), and because it was then considered set, the setting in the configuration file was not being used, nor was the logic normally used to choose a sensible default coming into play.</p>
<p>So, an easy fix, but it does appear that the release was severely under-tested.</p>
<p>Having now gotten the Gnash plug-in working, I can report that it seems to play youtube videos quite well, but still fails on some flash websites. Hopefully further progress will come soon!</p>
<p><strong>Edit:</strong> <a href="https://savannah.gnu.org/bugs/index.php?32925">bug filed</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=189&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2011/03/27/gnash-makes-me-gnash-my-teeth-in-frustration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>X keyboard crap</title>
		<link>http://davmac.wordpress.com/2011/03/21/x-keyboard-crap/</link>
		<comments>http://davmac.wordpress.com/2011/03/21/x-keyboard-crap/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 10:35:21 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=184</guid>
		<description><![CDATA[I&#8217;m getting this in my log when I try to start X: [  7780.894] (EE) Error compiling keymap (server-0) [  7780.894] (EE) XKB: Couldn&#8217;t compile keymap [  7780.894] XKB: Failed to compile keymap [  7780.894] Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config. [  7780.894] Fatal server error: [  7780.894] [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=184&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting this in my log when I try to start X:</p>
<blockquote><p>[  7780.894] (EE) Error compiling keymap (server-0)<br />
[  7780.894] (EE) XKB: Couldn&#8217;t compile keymap<br />
[  7780.894] XKB: Failed to compile keymap<br />
[  7780.894] Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.<br />
[  7780.894]<br />
Fatal server error:<br />
[  7780.894] Failed to activate core devices.</p></blockquote>
<p>What&#8217;s going on? &#8220;Couldn&#8217;t compile keymap&#8221; has to be one of the most useless error messages ever. <em>Why </em>can&#8217;t you compile the keymap??!</p>
<p><strong>Update:</strong></p>
<p>I renamed the &#8220;xkbcomp&#8221; executable and replaced it with a script which logged options and output before executing the original. I&#8217;m seeing this output:</p>
<blockquote><p>The XKEYBOARD keymap compiler (xkbcomp) reports:<br />
&gt; Error:            Cannot open &#8220;/tmp/server-0.xkm&#8221; to write keyboard descriptio<br />
&gt;                   Exiting</p></blockquote>
<p>&#8230; However, I don&#8217;t understand why it&#8217;s unable to create a file in /tmp. I&#8217;ve verified the file doesn&#8217;t already exist before xkbcomp is run, and that all users can create files in /tmp (the &#8220;t&#8221; bit is set).</p>
<p>Once again, the error message is bad: please tell my <em>why</em> you can&#8217;t open the file. (Hint: it&#8217;s called <em>perror</em>).</p>
<p><strong>Update: (Solved!):</strong></p>
<p>Turns out the permissions <em>were</em> the problem. They were:  rwxr-xrwt, i.e. the group was denied write permission. I didn&#8217;t think this was a problem seeing as &#8220;other&#8221; users are allowed to write files, but apparently that&#8217;s not how Linux permission checking works.<strong><br />
</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=184&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2011/03/21/x-keyboard-crap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Sakura 2.4.0 build failure</title>
		<link>http://davmac.wordpress.com/2011/03/18/sakura-2-4-0-build-failure/</link>
		<comments>http://davmac.wordpress.com/2011/03/18/sakura-2-4-0-build-failure/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 03:26:35 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=181</guid>
		<description><![CDATA[I was just trying to build the Sakura terminal emulator. More-or-less following the instructions exactly, after running &#8220;cmake .&#8221;, I then ran &#8220;make&#8221; at which point I got the following: Unknown option: u make[2]: *** [CMakeFiles/man] Error 1 make[1]: *** [CMakeFiles/man.dir/all] Error 2 make: *** [all] Error 2 Yeah, it&#8217;s not exactly the most helpful [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=181&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was just trying to build the <a href="http://www.pleyades.net/david/sakura.php">Sakura</a> terminal emulator. More-or-less following the instructions exactly, after running &#8220;cmake .&#8221;, I then ran &#8220;make&#8221; at which point I got the following:</p>
<blockquote><p>Unknown option: u<br />
make[2]: *** [CMakeFiles/man] Error 1<br />
make[1]: *** [CMakeFiles/man.dir/all] Error 2<br />
make: *** [all] Error 2</p></blockquote>
<p>Yeah, it&#8217;s not exactly the most helpful output, is it? This is what I hate about CMake and non-standard build systems in general. Eventually I figured out the problem is in the file &#8220;CMakeFiles/man.dir/build.make&#8221; where the target &#8220;CMakeFiles/man:&#8221; calls the &#8220;pod2man&#8221; utility (from that almighty piece-of-crap scripting language, perl) with a &#8220;-u&#8221; argument which &#8220;pod2man&#8221; doesn&#8217;t seem to recognize (perl 5.8.8). Removing that makes the build complete.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/181/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=181&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2011/03/18/sakura-2-4-0-build-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Trac is super crap</title>
		<link>http://davmac.wordpress.com/2010/11/24/trac-is-super-crap/</link>
		<comments>http://davmac.wordpress.com/2010/11/24/trac-is-super-crap/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 03:16:55 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=175</guid>
		<description><![CDATA[A couple of projects I work on use Trac (0.12.1, the latest at time of writing) for bug/issue tracking. I recently got an email from a user of our Trac system, saying that she couldn&#8217;t seem to reset her password &#8211; that is, the system told her that it had reset her password and sent [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=175&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A couple of projects I work on use <a href="http://trac.edgewall.org/">Trac</a> (0.12.1, the latest at time of writing) for bug/issue tracking. I recently got an email from a user of our Trac system, saying that she couldn&#8217;t seem to reset her password &#8211; that is, the system told her that it had reset her password and sent her an email with the new password, but in fact the email with the new password never arrived.</p>
<p>I went to scan the trac logs, but it turns out they were disabled by default (first problem). I enabled the logs and reset my own password, but no joy &#8211; nothing untoward appears in the logs. I checked and double-checked the mail settings, but they all looked ok. I then altered the configuration, switching from SMTP to sendmail and specifying a freshly-crafted wrapper script which logs when it&#8217;s called as the &#8220;sendmail&#8221; executable. With this I can verify that the mail is not sent &#8211; the script doesn&#8217;t appear to be being executed, and the mail server logs show no activity.</p>
<p>Finally I stumble on another setting:</p>
<pre style="padding-left:30px;">acct_mgr.notification.accountchangelistener = enabled</pre>
<p>And with this, finally, finally, Trac starts sending the new password emails when I do a password reset. Now, this is a documented setting, but really, I mean <em>really</em>, couldn&#8217;t there have been <em>some</em> warning in the logs? Or could maybe the setting to allow users to reset their password also enable the &#8220;account change listener&#8221; (whatever that is)? Is it too much to ask that an obviously broken configuration be either made redundant or at least identified as such by the software?</p>
<p>Well, I&#8217;ve solved the original problem. It&#8217;s at this point, though, that I realise a much more significant problem exists: The Trac AccountManagerPlugin password reset functionality allows <em>anyone</em> to reset <em>anyone else&#8217;s</em> password, and, get this, this is where it gets good, they can <em>have the new password sent to any email address</em>. [<strong>Update</strong>: no, this is wrong; once you actually enable the acountchangelistener setting as described above, you get an error if the specified email address doesn't match the account. However, if you don't enable that setting, then <em>anyone</em> can reset your password; however they won't receive the new password at the email address they specify].</p>
<p>When the password reset functionality is enabled, if you register as a new Trac user you will see text telling you that providing your email address is optional, but if you do provide it you will be able to &#8220;reset your password if you ever forget it&#8221;. That&#8217;s clearly bollocks [if accountmanagerlistener isn't enabled], since the password reset function doesn&#8217;t verify that the email address is correct for the user [in that case].</p>
<p>The real problem, I guess, is that Trac doesn&#8217;t provide any decent built-in account management. I mean, should the account manager &#8211; a most basic piece of functionality &#8211; really be a plugin? I don&#8217;t think so. (Worse than that, to use the plugin with Trac 0.12, you have to use a subversion pull of the plugin rather than a released version!).</p>
<p>And that is why Trac is super crap.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=175&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2010/11/24/trac-is-super-crap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Php 5.3.3</title>
		<link>http://davmac.wordpress.com/2010/09/13/php-5-3-3/</link>
		<comments>http://davmac.wordpress.com/2010/09/13/php-5-3-3/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 06:06:24 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=163</guid>
		<description><![CDATA[When running &#8220;./configure &#8211;help&#8221; for PHP 5.3.3, one of the output lines is: &#8211;without-sqlite3[=DIR] Do not include SQLite3 support. DIR is the prefix to SQLite3 installation directory. &#8230; which cracks me up. I need to specify the installation directory of SQLite3, in order to not include support for it in my PHP build?!! Update 22/9/2010: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=163&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When running &#8220;./configure &#8211;help&#8221; for PHP 5.3.3, one of the output lines is:</p>
<blockquote><p>&#8211;without-sqlite3[=DIR] Do not include SQLite3 support. DIR is the prefix to<br />
SQLite3 installation directory.</p></blockquote>
<p>&#8230; which cracks me up. I need to specify the installation directory of SQLite3, in order to <em>not</em> include support for it in my PHP build?!!</p>
<p><strong>Update 22/9/2010: </strong>I couldn&#8217;t manage to get php-5.3.3 to build on a Solaris system. I&#8217;m now trying 5.1.5; I&#8217;ve got this to build but for some reason it doesn&#8217;t build the cgi support even though I&#8217;ve specified &#8220;&#8211;with-cgi&#8221; on the configure command line. Googling reveals that maybe I need to disable Apache support for this, which lead to this equally daft configure output:</p>
<blockquote><p>./configure &#8211;without-apache &#8211;without-apxs &#8211;with-mysql=/usr/local/mysql &#8211;with-gnu-ld &#8211;enable-cgi &#8211;enable-fastcgi<br />
loading cache ./config.cache<br />
checking for Cygwin environment&#8230; (cached) no<br />
checking for mingw32 environment&#8230; (cached) no<br />
checking for egrep&#8230; (cached) egrep<br />
checking for a sed that does not truncate output&#8230; (cached) /usr/bin/sed<br />
checking host system type&#8230; sparc-sun-solaris2.9<br />
checking target system type&#8230; sparc-sun-solaris2.9<br />
configure: error: &#8211;with-apache and &#8211;with-apxs cannot be used together</p></blockquote>
<p>I mean, seriously&#8230; I specified <em>without</em> apache and <em>without</em> apxs, and it tells me that I can&#8217;t use the &#8220;with&#8221; options together??!!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=163&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2010/09/13/php-5-3-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
		<item>
		<title>Gnash 0.8.8 &#8211; still crap, but slightly less so.</title>
		<link>http://davmac.wordpress.com/2010/08/24/gnash-0-8-8-still-crap-but-slightly-less-so/</link>
		<comments>http://davmac.wordpress.com/2010/08/24/gnash-0-8-8-still-crap-but-slightly-less-so/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 11:26:56 +0000</pubDate>
		<dc:creator>davmac</dc:creator>
				<category><![CDATA[Crap software]]></category>

		<guid isPermaLink="false">http://davmac.wordpress.com/?p=154</guid>
		<description><![CDATA[Gnash 0.8.8 was recently released, with claims of &#8220;full youtube support&#8221;, so I gave it a spin. I immediately hit this build error: ﻿make[4]: Entering directory `/usr/src/gnash-0.8.8/gui' CXXLD  gtk-gnash../librender/.libs/libgnashrender.so: undefined reference to `gnash::rgba::set_lerp(gnash::rgba const&#38;, gnash::rgba const&#38;, float)'collect2: ld returned 1 exit statusmake[4]: *** [gtk-gnash] Error 1make[4]: Leaving directory `/usr/src/gnash-0.8.8/gui' Odd&#8230; the symbol is defined, it&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=154&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gnash 0.8.8 was recently released, with claims of &#8220;full youtube support&#8221;, so I gave it a spin. I immediately hit this build error:</p>
<pre style="padding-left:30px;">﻿make[4]: Entering directory `/usr/src/gnash-0.8.8/gui' CXXLD  gtk-gnash../librender/.libs/libgnashrender.so: undefined reference to `gnash::rgba::set_lerp(gnash::rgba const&amp;, gnash::rgba const&amp;, float)'collect2: ld returned 1 exit statusmake[4]: *** [gtk-gnash] Error 1make[4]: Leaving directory `/usr/src/gnash-0.8.8/gui'</pre>
<p>Odd&#8230; the symbol <em>is</em> defined, it&#8217;s in libgnashcore.so, and the link does link against that library. Turns out the culprit is the &#8220;&#8211;enable-visibility&#8221; argument to configure. That&#8217;s right &#8211; Gnash fails to build if you enable enhanced symbol visibility support (because it makes a symbol non-visible). What a joke.</p>
<p>Speaking of configuring Gnash, what exactly is this:</p>
<pre style="padding-left:30px;">WARNING: The BOOST serialization library is recommended! Install it from http://www.boost.org or .deb users: apt-get install libboost-serialization-dev Gnash will compile anyway, but not all tests will work.</pre>
<p>&#8230; meant to mean?? Does the library actually add functionality, or is it just needed for a few tests?</p>
<p>Anyway, I eventually got it working, and I&#8217;m pleased to report that it does play Youtube videos as advertised (not always perfectly, but it&#8217;s good enough). It still doesn&#8217;t handle a few other flash applets that I&#8217;m aware of, however, including this blog&#8217;s access statistics graph.</p>
<p><strong>Update 15/09/2010: </strong>In a strange twist, WordPress have upgraded their graph software and Gnash seems to run the new version reasonably well.</p>
<p><strong>Update 25/09/2010: </strong>On closer inspection, the new WordPress graphing software doesn&#8217;t use Flash, and that&#8217;s why it runs perfectly.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davmac.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davmac.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davmac.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davmac.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davmac.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davmac.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davmac.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davmac.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davmac.wordpress.com&amp;blog=699263&amp;post=154&amp;subd=davmac&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davmac.wordpress.com/2010/08/24/gnash-0-8-8-still-crap-but-slightly-less-so/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61df8d728c699c39c4c73507da598712?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davmac</media:title>
		</media:content>
	</item>
	</channel>
</rss>
