<?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>Bill's Techno Blog</title>
	<atom:link href="http://www.billbaxter.com/techblog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.billbaxter.com/techblog</link>
	<description>Technical, as in fun at parties</description>
	<lastBuildDate>Wed, 28 Apr 2010 21:04:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cropping pdf files</title>
		<link>http://www.billbaxter.com/techblog/?p=30</link>
		<comments>http://www.billbaxter.com/techblog/?p=30#comments</comments>
		<pubDate>Tue, 27 Apr 2010 18:35:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Publishing]]></category>
		<category><![CDATA[cropping]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[pdfLaTeX]]></category>
		<category><![CDATA[TeX]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=30</guid>
		<description><![CDATA[I just went trawling on the internet for about the tenth time trying to find a pdf cropping utility.  I find myself wanting to do this all the time when preparing papers using pdfLaTeX, since it can accept PDF figures, but works best when they are cropped tightly.
Adobe Acrobat can crop, of course, but [...]]]></description>
			<content:encoded><![CDATA[<p>I just went trawling on the internet for about the tenth time trying to find a pdf cropping utility.  I find myself wanting to do this all the time when preparing papers using pdfLaTeX, since it can accept PDF figures, but works best when they are cropped tightly.</p>
<p>Adobe Acrobat can crop, of course, but it&#8217;s insane to shell out for the entirety of Acrobat when all you need is to crop a few PDFs now and then.  There are a number of free shell scripts that do it, but the main one you&#8217;ll find, pdfcrop, requires perl to be installed, which it just ain&#8217;t on my Windows box here.   I never use perl for anything these days, so I refuse to install it just so I can crop PDFs.</p>
<p>The basic functionality is there in the free GhostScript.  Actually the pdfcrop script just serves as a little less terrible command-line UI for calling GhostScript.  But for both of them you have to type in the number of units to crop on each side.  So usually that means you get it wrong, adjust, get it slightly less wrong, adjust, lather, rinse, repeat.   It&#8217;s ridiculous in this day and age.</p>
<p>This time searching I ran across something I hadn&#8217;t seen the previous nine times &#8212; pyPDF.  A Python library for manipulating PDFs!  Sounds good.  I actually use Python from time to time.  Unfortunately it was last updated in 2008, and when using the cropping recipe I found somewhere, it throws exceptions deep in pyPDF&#8217;s bowels (under Python 2.6.x).  So much for that.</p>
<p>So enough already.  I&#8217;ve wasted so much time on this over the years that I&#8217;m actually willing to spend a reasonable amount of money to have a solution that &#8220;just works&#8221;.  But I am <em>not</em> going to buy Acrobat just for this.  Forget it.</p>
<p>So if I actually include reasonably priced utilities, what is out there?   I found one thing that seems to actually work pretty well, has visual cropping, and doesn&#8217;t cost a fortune.  It&#8217;s a shareware called &#8220;<a href="http://a-pdf.com/page-crop/index.htm">A-PDF Page Crop</a>&#8220;.  I&#8217;ve seen other crappy sharewares that actually just use the free GhostScript under the hood, and just try to convince you they did all the work.  That doesn&#8217;t look like the case here.  A-PDF has its own MMPDF.dll and no sign of a dependency on GhostScript that I can see.  If it&#8217;s there they&#8217;ve hidden it very well.   Anyway, the tool is easy to use and it actually works.  The price of $27 is not too bad, considering I&#8217;ve probably wasted at least 10 hours of my time over the years dinking around with pdfcrop, and searching the web for something better than pdfcrop.  What&#8217;s even better &#8212; they claim you can get a free license by blogging about them.  We&#8217;ll see how that pans out.  But either way, this looks like a decent tool, worth the price if you don&#8217;t have Acrobat and have an occasional need to crop PDF files.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=30</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Category-specifc RSS feeds from WordPress</title>
		<link>http://www.billbaxter.com/techblog/?p=27</link>
		<comments>http://www.billbaxter.com/techblog/?p=27#comments</comments>
		<pubDate>Fri, 24 Oct 2008 22:41:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[meta]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[categories]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=27</guid>
		<description><![CDATA[I subscribe to some topic-specific blog aggregation feeds, and I get mildly annoyed when posts appear on those things that actually don&#8217;t have anything to do with the aggregation&#8217;s topic.  I found this off-topic spamming surprising because blogs always have these categories and tags on every message, so what&#8217;s the point of all that if [...]]]></description>
			<content:encoded><![CDATA[<p>I subscribe to some topic-specific blog aggregation feeds, and I get mildly annoyed when posts appear on those things that actually don&#8217;t have anything to do with the aggregation&#8217;s topic.  I found this off-topic spamming surprising because blogs always have these categories and tags on every message, so what&#8217;s the point of all that if you can&#8217;t subscribe to a specific category?</p>
<p>It&#8217;s not exactly obvious, but it turns out that at least with WordPress blogs (like this one) you <em>can </em>subscribe to a particular category.</p>
<p>First you have to figure out the category number for the topic you&#8217;re interested in.  You can usually do that by clicking on the link for the category you&#8217;re interested in an looking at the url.  It&#8217;ll have part that says something like &#8220;cat=4&#8243;.   Then you append that onto the regular feed url.  Now you append that onto the base RSS url for the blog.  Like for this blog the base is:</p>
<p style="text-align: center;">http://www.billbaxter.com/techblog/wp-rss2.php</p>
<p style="text-align: left;">Use a &#8220;?&#8221; to tack on the category string and voila!</p>
<p style="text-align: center;">http://www.billbaxter.com/techblog/wp-rss2.php?cat=4</p>
<p style="text-align: left;">you have a category-specific feed url (in the case above, for my &#8220;code&#8221; topic, which current includes D, C++ and Python sub-categories.</p>
<p style="text-align: left;"><strong>Update:</strong> It seems WordPress folks changed the URL format they use at some point.  For the version I&#8217;m currently using (2.9.2), the format is now:</p>
<p style="text-align: center;"><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=4">http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=4</a></p>
<p style="text-align: left;">The .php script referencing the type of feed is no longer explicit, and instead both feed type and category are just parameters.</p>
<p style="text-align: left;">So here are some category-links for my blog here (updated for my WP 2.9.2):</p>
<ul>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=8">D category</a></li>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=9">C++ category</a></li>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=10">Python category</a></li>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=4">Code category</a></li>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=18">Web category</a></li>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=12">Math category</a></li>
<li><a href="http://www.billbaxter.com/techblog/?feed=rss2&amp;cat=3">Meta category</a> (things about the blog itself)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=27</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Inverse Kinematics</title>
		<link>http://www.billbaxter.com/techblog/?p=21</link>
		<comments>http://www.billbaxter.com/techblog/?p=21#comments</comments>
		<pubDate>Fri, 24 Oct 2008 11:38:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[math]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[IK]]></category>
		<category><![CDATA[inverse kinematics]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[ragdoll]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=21</guid>
		<description><![CDATA[Just got a nice email from a guy named Nate Warner who said he used my inverse kinematics presentation to figure out how to make a nifty ragdoll physics demo in some sort of Flash 3D thingy.
I wrote that presentation for the Comp 290 physically based modelling grad course at UNC-Chapel Hill in the first [...]]]></description>
			<content:encoded><![CDATA[<p>Just got a nice email from a guy named Nate Warner who said he used my <a href="http://billbaxter.com/courses/290/html/index.htm">inverse kinematics presentation</a> to figure out how to make a nifty <a href="http://dynamicnetcreations.com/blog/?p=27">ragdoll physics demo</a> in some sort of Flash 3D thingy.</p>
<p>I wrote that presentation for the Comp 290 physically based modelling grad course at UNC-Chapel Hill in the first or second year of my Masters/Ph.D.  It looks a little quaint to me now, but I&#8217;m pretty proud by how well it explains some things.  Maybe that&#8217;s only me, but anyway, some things like the intuition behind multi-dimensional non-linear optimization that I put in there have really stuck with me.</p>
<p>What really gets me tickled is that this class presentation has been the top hit for &#8220;<a href="http://www.google.com/search?q=fast+inverse+kinematics">fast inverse kinematics</a>&#8221; ever since I wrote it lo these 8 years ago.</p>
<p>[edit]  I say it looks quaint because the problem is really a straight-up non-linear optimization problem, and the right way to tackle it is with a non-linear optimizer of some sort.  The CCD, Jacobian Transpose, and PseudoInverse methods are all just hacks in one way or other trying to avoid using a more apropriate optimization strategy.  IK problems all tend to be relatively low-dimensional, too, so for most apps the speed of a good robust optimizer would not be a problem.   Actually Nate&#8217;s blog there has some links to other more <a href="http://www.math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/index.html">recent methods</a> like <strong>Selectively Damped Least Squares for  Inverse Kinematics</strong>.  Having done a lot of least squares stuff lately, some sort of non-linear least squares solution is what I&#8217;d try these days too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=21</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>D library merger looking imminent</title>
		<link>http://www.billbaxter.com/techblog/?p=19</link>
		<comments>http://www.billbaxter.com/techblog/?p=19#comments</comments>
		<pubDate>Sat, 11 Oct 2008 06:02:15 +0000</pubDate>
		<dc:creator>baxissimo</dc:creator>
				<category><![CDATA[D programming]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[phobos tango druntime]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=19</guid>
		<description><![CDATA[Check out this change log from Phobos.  Looks like Sean Kelly is very nearly done with the work to move the two D-standard libraries to share one common core runtime.
Hooray!
Background for those who need it: in the world of the D programming language right now, there are two incompatible &#8220;standard&#8221; libraries.  The original Phobos library [...]]]></description>
			<content:encoded><![CDATA[<p>Check out this <a href="http://www.dsource.org/projects/phobos/changeset/853">change log </a>from Phobos.  Looks like Sean Kelly is very nearly done with the work to move the two D-standard libraries to share one common <a href="http://www.dsource.org/projects/druntime">core runtime</a>.</p>
<p>Hooray!</p>
<p>Background for those who need it: in the world of the D programming language right now, there are two incompatible &#8220;standard&#8221; libraries.  The original Phobos library that ships with the DMD compiler, and the Tango project, a community-developed library that sprang up largely over dissatisfaction with the semi-closed and somewhat disorganized process of Phobos development.</p>
<p>This has really been a thorn in D&#8217;s side for a good while now &#8212; more than a year.  In a recent poll on the D newsgroup, this Phobos/Tango split was the #1 thing that people listed as needed fixing with D.  And finally it looks like it&#8217;s happening.  Happy day for D.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The D roadmap</title>
		<link>http://www.billbaxter.com/techblog/?p=14</link>
		<comments>http://www.billbaxter.com/techblog/?p=14#comments</comments>
		<pubDate>Mon, 08 Sep 2008 01:31:05 +0000</pubDate>
		<dc:creator>baxissimo</dc:creator>
				<category><![CDATA[D programming]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=14</guid>
		<description><![CDATA[Someone on the D newsgroup today proposed a small feature that would help make the language more orthogonal, but in the end dismissed the issue as &#8220;perhaps not important enough&#8221;.  The yardstick for importance in D since I&#8217;ve been around has always been whether the addition would allow you to do things that are impractical [...]]]></description>
			<content:encoded><![CDATA[<p>Someone on the D newsgroup today proposed a small feature that would help make the language more orthogonal, but in the end dismissed the issue as &#8220;perhaps not important enough&#8221;.  The yardstick for importance in D since I&#8217;ve been around has always been whether the addition would allow you to do things that are impractical or impossible today.  That&#8217;s a fine yardstick for measuring importance.  But it&#8217;s essentially a very brutal kind of feature triage.  There are scores of small issues that lay festering because, individually, they are not critical.  They are like mere grains of sand in the way of progress, easily side-stepped.</p>
<p>But enough grains of sand and you start to have a sizable obstacle.  And D has a fair number of such grains. Pretty soon D needs to move out of feature triage mode and start working on polish, completing or cleaning up the features that do exist, and resolving issues with the tool chain.  I thought that phase was about to begin now that const is basically settled, but now the goal posts seem to have moved again.  Now it appears that cleanup won&#8217;t be a focus until until <em>after </em>the multicore problem is solved.  And given that multicore is not a solved problem in general, I think that could be a while.</p>
<p>Maybe the problem is just that Walter is not, and never will be, interested in working on small details. One can always find some new shiny holy grail feature on the horizon that&#8217;s more interesting to work on than, say, package visibility rules.  Features in D seem to get to the stage where they&#8217;re basically usable, then stagnate.  Like __traits, or like the non-overrideable $ in indexes (or rather overrideable only with the undocumented __dollar hack), or like associative arrays, or uniform call syntax that works only on built-in arrays.  If you&#8217;ve used D for any amount of time, I&#8217;m sure you&#8217;ve got your own favorite examples.  Language features in D never <em>quite</em> seem to reach that &#8220;insanely great&#8221; stage.</p>
<p>Here&#8217;s my pet theory about why that is so.  I think it comes down to dogfood.  Walter and the majority of the &#8220;D inner circle&#8221; basically don&#8217;t write code in D.  They spend their days writing C++, not D.  So shortcomings and annoyances in day-to-day D usage just don&#8217;t show up as major blips on the radar with these guys.   No associative array initializers?  Eh, no big deal, you can still initialize them in a loop.  So it&#8217;s not critical.  That&#8217;s easy to say, but when you&#8217;re the guy who actually has to write that loop, it starts to get annoying after the 10th time.  I think it&#8217;s universally recognized that to make great products it helps to eat your own dog food.  Unfortunately the core team working on D doesn&#8217;t.</p>
<p>With one exception &#8212; Andrei A. seems to have been writing a lot of D code.  And the result shows.  Things like fixing the limitation with IFTI came about directly because Andrei complained that it was too hard to write his libraries in the way they should be written with IFTI as it was.  Unfortunately I&#8217;m worried that Andrei&#8217;s influence in the D community will be drastically reduced now that he has left Seattle.  Walter seems to have trouble maintaining lines of communication when face-to-face meets at the coffee shop aren&#8217;t possible.</p>
<p>But back to dogfood.  In contrast to the core D folks, the Tango team seems to be deep in their own dogfood.  And really I think that right there explains the existence of Tango.   The Tango folks are actually <em>using</em> D and they got fed up trying to work with stuff that wasn&#8217;t built with that kind of in-the-trenches knowhow.</p>
<p>The current situation leaves me uneasy about D&#8217;s future.  How do we make sure D not only survives but becomes insanely great?  I have no silver bullet, but it seems to me like Walter is always going to be more interested in new and shiny than solid and complete.  That&#8217;s fine, really.  Somebody does need to be looking at the next big thing.  So I think what D really needs is a #2 guy who is both a heavy D user and a compiler writer and who&#8217;s main interest is making D polished.   I&#8217;m hoping that <a href="http://www.dsource.org/projects/llvmdc">LLVMDC</a> will somehow help there.  Lindquist and Kamm have been making great strides on that alternative D compiler, and have already proposed fixes for things like cross-module symbol visibility.  Hopefully they will be able to communicate effectively with Walter about these things, otherwise the ultimate result may be a forked language.  I know no one really wants that to happen, but it&#8217;s happened with the runtime already, and I don&#8217;t see any evidence that the environment that gave rise to that fork has significantly changed.</p>
<p><em>[update Sept 9, 2008]</em></p>
<p>Don&#8217;t count Andrei out of the running yet!  A day after I wrote the above, Andrei came out with <a title="Link is temporary..." href="http://ssli.ee.washington.edu/~aalexand/d/tmp/std_range.html">a proposal</a> for for iterators/ranges in D, what could become std.range for D2 Phobos.  What&#8217;s more, to implement it he has requested that Walter implement reference return values, and Walter has apparently agreed.  Well, this is <em>exactly </em>the kind of practical, day-to-day bread-and-butter programming stuff that D desperately needs.  Exactly the kind of polish and completeness issue I was talking about above.   The deficiencies of opApply and the lack of reference return values have long been on the top of my D peeves list.  So I&#8217;m really happy to see this development.  Maybe there&#8217;s still hope for D after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=14</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>D executable sizes over time</title>
		<link>http://www.billbaxter.com/techblog/?p=9</link>
		<comments>http://www.billbaxter.com/techblog/?p=9#comments</comments>
		<pubDate>Wed, 06 Aug 2008 06:32:14 +0000</pubDate>
		<dc:creator>baxissimo</dc:creator>
				<category><![CDATA[D programming]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=9</guid>
		<description><![CDATA[Lionello Lunesu went to the trouble to compile an executable with the 38 of most recent releases of D to see how exe sizes have changed.
It&#8217;s a shame to let that effort go to waste without at least making a graph out of it.  So here it is:
Yup, that&#8217;s a pretty big leap at the [...]]]></description>
			<content:encoded><![CDATA[<p>Lionello Lunesu went to the trouble to compile an executable with the <a href="http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&amp;article_id=74594">38 of most recent releases of D</a><span class="HcCDpe"><span class="EP8xU" style="color: #790619;"> </span></span>to see how exe sizes have changed.</p>
<p>It&#8217;s a shame to let that effort go to waste without at least making a graph out of it.  So here it is:</p>
<div id="attachment_10" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.billbaxter.com/techblog/wp-content/uploads/2008/08/dsizes.gif"><img class="size-medium wp-image-10" title="D exes over time" src="http://www.billbaxter.com/techblog/wp-content/uploads/2008/08/dsizes-300x201.gif" alt="Minimal D exe sizes over time" width="300" height="201" /></a><p class="wp-caption-text">Minimal D exe sizes over time</p></div>
<p>Yup, that&#8217;s a pretty big leap at the end.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=9</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LaTex in WordPress with PHP5.x</title>
		<link>http://www.billbaxter.com/techblog/?p=5</link>
		<comments>http://www.billbaxter.com/techblog/?p=5#comments</comments>
		<pubDate>Fri, 01 Aug 2008 01:40:39 +0000</pubDate>
		<dc:creator>baxissimo</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=5</guid>
		<description><![CDATA[I&#8217;ve been using the wp-latexrender plugin on my WordPress blogs on DreamHost here for a while now.  The other day something prompted me to switch my DreamHost account to use PHP5 instead of the default PHP4.  Today I come to work and find equations in new posts are all full of garbage text with words [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using the <a href="http://sixthform.info/steve/wordpress/?cat=2">wp-latexrender plugin</a> on my WordPress blogs on DreamHost here for a while now.  The other day something prompted me to switch my DreamHost account to use PHP5 instead of the default PHP4.  Today I come to work and find equations in new posts are all full of garbage text with words like &#8220;ormulabox&#8221; and &#8220;ormulawidth&#8221; and &#8220;ormulaheight&#8221;.</p>
<p>Turns out PHP5.2 added &#8220;\f&#8221; as a special escape sequence.  So the php code that was working fine with LaTeX commands like &#8220;\formulabox&#8221; in double quoted strings, suddenly started breaking.  The \f&#8217;s became formfeeds, and what&#8217;s left (&#8220;ormulabox&#8221;, etc.)  was being interpreted by LaTeX as just regular words to put in the output.</p>
<p>So you <em>could </em>fix it by just turning those \f&#8217;s into \\f&#8217;s, but that would break latexrender on PHP4 installs.</p>
<p>So the fix to keep things working with both PHP4 or 5 is to put the bulk of those strings in single quotes.   So replace the wrap_formula function in wp-content/plugins/latexrender/class.latexrender.php with the following:</p>
<pre>    function wrap_formula($latex_formula) {
        $string  = "\documentclass[".$this-&gt;_font_size."pt]{".$this-&gt;_latexclass."}\n";
        $string .= '\usepackage[latin1]{inputenc}' ."\n";
        $string .= '\usepackage{amsmath}' ."\n";
        $string .= '\usepackage{amsfonts}'."\n";
        $string .= '\usepackage{amssymb}'."\n";
        $string .= '\pagestyle{empty}' ."\n";
        $string .= '\newsavebox{\formulabox}' ."\n";
        $string .= '\newlength{\formulawidth}' ."\n";
        $string .= '\newlength{\formulaheight}' ."\n";
        $string .= '\newlength{\formuladepth}' ."\n";
        $string .= '\setlength{\topskip}{0pt}' ."\n";
        $string .= '\setlength{\parindent}{0pt}' ."\n";
        $string .= '\setlength{\abovedisplayskip}{0pt}' ."\n";
        $string .= '\setlength{\belowdisplayskip}{0pt}' ."\n";
        $string .= '\begin{lrbox}{\formulabox}' ."\n";
        $string .= "$\\ ".$latex_formula."$\n";
        $string .= '\end{lrbox}' ."\n";
        $string .= '\settowidth {\formulawidth}  {\usebox{\formulabox}}' ."\n";
        $string .= '\settoheight{\formulaheight} {\usebox{\formulabox}}' ."\n";
        $string .= '\settodepth {\formuladepth}  {\usebox{\formulabox}}' ."\n";
        $string .= '\newwrite\foo' ."\n";
        $string .= '\immediate\openout\foo=\jobname.depth' ."\n";
        $string .= '    \addtolength{\formuladepth} {1pt}' ."\n";
        $string .= '    \immediate\write\foo{\the\formuladepth}' ."\n";
        $string .= '\closeout\foo' ."\n";
        $string .= '\begin{document}' ."\n";
        $string .= '\usebox{\formulabox}' ."\n";
        $string .= '\end{document}' ."\n";

        return $string;
    }</pre>
<p>And that does the trick.  This was a problem as of Aug 1, 2008, with version v0.8 of class.latexrender.php.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=5</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://www.billbaxter.com/techblog/?p=1</link>
		<comments>http://www.billbaxter.com/techblog/?p=1#comments</comments>
		<pubDate>Wed, 30 Jul 2008 05:49:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[meta]]></category>

		<guid isPermaLink="false">http://www.billbaxter.com/techblog/?p=1</guid>
		<description><![CDATA[Hello, this blog, in contrast to my other blog, will be about tech stuff, research ideas, and other geeky stuff.
]]></description>
			<content:encoded><![CDATA[<p>Hello, this blog, in contrast to <a title="Bill's gushy blog on life" href="http://www.billbaxter.com/blog">my other blog</a>, will be about tech stuff, research ideas, and other geeky stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billbaxter.com/techblog/?feed=rss2&amp;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
