<?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>SteveStreeting.com &#187; ogre</title>
	<atom:link href="http://www.stevestreeting.com/tag/ogre/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stevestreeting.com</link>
	<description>Man bites Ogre</description>
	<lastBuildDate>Sat, 24 Dec 2011 13:08:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Farewell 2010</title>
		<link>http://www.stevestreeting.com/2010/12/31/farewell-2010/</link>
		<comments>http://www.stevestreeting.com/2010/12/31/farewell-2010/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 18:56:16 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[New year]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[sourcetree]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2869</guid>
		<description><![CDATA[I don&#8217;t blog as much as I used to, for reasons which are somewhat relevant to this post &#8211; rather you can usually find fragments of my consciousness floating around the Twittersphere instead, since its enforced brevity requires considerably less of my time to populate. Maybe I&#8217;m old fashioned, but I believe that if you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-2871" title="cork" src="http://www.stevestreeting.com/wp-content/uploads/2010/12/cork.jpg" alt="" width="150" height="159" align="right" />I don&#8217;t blog as much as I used to, for reasons which are somewhat relevant to this post &#8211; rather you can usually find fragments of my consciousness floating around <a href="http://twitter.com/stevestreeting" target="_blank">the Twittersphere</a> instead, since its enforced brevity requires considerably less of my time to populate. Maybe I&#8217;m old fashioned, but I believe that if you&#8217;re going to write a blog post about something, you should probably make sure it&#8217;s written in a half-decent way, and that&#8217;s fairly time consuming, particularly when you&#8217;re ever so slightly anal about language as I am. Nevertheless, the receding silhouette of 2010 is a worthy enough subject to invest a bit of time in, so here I am, verging once again on being dangerously verbose. I guess the post should have started with a warning banner or something &#8211; but if you&#8217;re a repeat visitor, you know the score.</p>
<p>So, 2010. I started this year with three significant and intersecting goals: to significantly simplify my working life, to reduce my stress levels, and to spend more time in the company of my own creativity by working on my own projects. The reason was this: by the end of 2009 several factors had led me to a situation where I had my fingers in too many pies, too many balls in the air, too many &#8211; well, you get the picture. The thing with being a consultant / contractor is that work comes in with a very uncertain frequency; projects have a tendency to &#8216;bunch up&#8217;, and because of the inevitable lean periods in between you don&#8217;t really want to say &#8216;no&#8217; to anything. The economic situation since late 2008 also led to projects being noticeably more cost-sensitive, meaning more juggling required to fill out a coherent schedule than it had been before that. All this could get quite stressful, and with a back problem to nurse and an open source project to run on top, things weren&#8217;t that much fun at times. So my resolution for 2010 was to stop just trying to make the status quo work, and instead to do things my way &#8211; to ditch smaller pieces of work, to only get involved in larger projects that I found personally interesting, and to spend the rest of the time investing in my own projects instead. Fundamentally it was about taking control back.</p>
<p>At that time I didn&#8217;t plan to retire from <a href="http://www.ogre3d.org" target="_blank">OGRE</a>, but in hindsight I think subconsciously I&#8217;d made the decision already, I just hadn&#8217;t admitted it to myself yet. I&#8217;m extremely proud of what I managed to accomplish with OGRE with the help of countless contributors, and was sad to put that role aside after 10 years, but in many ways it had become a rod for my own back. Not only was it a hugely time consuming, 24/7 job to look after, but there was an inherent assumption, from others and from myself, that projects I chose to work on would naturally be associated with OGRE in some way. That was quite a pair of blinkers to have on, even if I didn&#8217;t know I was wearing them. If success with a product or in a subject area has a downside, it&#8217;s probably that it can become a gravity well which resists you exploring other areas of interest. So while I&#8217;m sad to have retired from OGRE and look back on my time on the project with a great deal of fondness and pride, I can&#8217;t deny that I don&#8217;t regret casting off and returning to the open seas, even if the security of the harbour was comforting. Ok, I&#8217;m done with the sailing metaphors now. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>One unexplored continent (damn!) which was calling me siren-like (ok, I really am done now) was native Mac development. I bought my first Mac in 2007, initially only to support OGRE on it (before masterfalcon came along with his superlative Apple-fu), but I&#8217;ve since been converted to a fully card-carrying Mac nutcase. So, I decided to finally go all-in and learn Objective-C and Cocoa, and make my own Mac-only tool, which of course turned out to be <a href="http://www.sourcetreeapp.com" target="_blank">SourceTree</a>. I&#8217;m very pleased with it, and if anything my predilection for the Mac platform has increased significantly during this time &#8211; I&#8217;ve barely used Windows in the last 8 months, and now when I do I find it quite unpleasant. I also went from hating Obj-C (as a C++ user) to really liking it in the space of a few months, and I&#8217;m quite happy to include it on my resume now.</p>
<p>The other thing I find, now that I&#8217;m juggling fewer balls and am less narrowly focussed, is that my creativity has ramped up considerably. My &#8216;Project Ideas&#8217; file has swelled significantly during 2010, and I hope to have chance to pick off some of the juiciest of them later in 2011.</p>
<p>So, I guess the important thing in a retrospective is to decide whether I achieved my goals in 2010. Given that <a href="http://www.stevestreeting.com/2010/12/01/health-update-december-2010/" target="_blank">my back is much better now</a>, I&#8217;m less stressed, more creative and I have a new product out, I guess the answer is yes. Not everything went to plan of course &#8211; <a href="http://www.sourcetreeapp.com" target="_blank">SourceTree</a> launched later than I&#8217;d intended (isn&#8217;t it ever thus?) and still has quite a way to go to recoup its investment, my only Mac died a month into me starting Mac-only development (but on the plus side that gave me an excuse to buy a new one, and Apple ended up repairing the other one free even out of warranty), and I&#8217;m still not completely recovered health-wise, but all in all, even if it&#8217;s not a double rainbow, it&#8217;s gotta be at least a rainbow and a half. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>My best wishes to everyone for the New Year celebrations, and I hope we&#8217;ll all have a happy, healthy and prosperous 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/12/31/farewell-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Health update: December 2010</title>
		<link>http://www.stevestreeting.com/2010/12/01/health-update-december-2010/</link>
		<comments>http://www.stevestreeting.com/2010/12/01/health-update-december-2010/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 10:47:17 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Health]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[back]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[spine]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2863</guid>
		<description><![CDATA[I&#8217;m still getting the odd comment on my post in April about my back &#38; why I was retiring from Ogre &#8211; thanks again to everyone for the best wishes. I haven&#8217;t posted any updates since then, both because I don&#8217;t want to &#8216;count my chickens&#8217; too early, because I&#8217;ve been busy, and because I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still getting the odd comment on my <a href="http://www.stevestreeting.com/2010/04/27/the-spinal-analysis-and-what-it-means-for-ogre/">post in April about my back &amp; why I was retiring from Ogre</a> &#8211; thanks again to everyone for the best wishes. I haven&#8217;t posted any updates since then, both because I don&#8217;t want to &#8216;count my chickens&#8217; too early, because I&#8217;ve been busy, and because I don&#8217;t want to be too self-indulgent; but it&#8217;s been 6 months now, and I figure some people might like to know my status, because it really has changed a lot.</p>
<p>I&#8217;m glad to say it&#8217;s good news. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  In the 6 months since I announced my retirement, my back has improved a huge amount. Withdrawing from my multitude of (over)commitments was hard, and I felt guilty for quite a while (as well as reducing my income since I switched to <a href="http://www.sourcetreeapp.com" target="_blank">less stressful projects</a> of my own), but it was absolutely the right decision. Literally every month that passed has made a small difference, and it has thankfully accumulated &#8211; right now it&#8217;s better than it&#8217;s ever been. I&#8217;m not in pain on a daily basis any more (only occasionally if I overdo something), and I feel a lot more confident that I&#8217;m not going to injure myself doing normal everyday things. You&#8217;ve no idea how much it means to me to be able to go to bed at night without dreading how much it&#8217;s going to hurt to get out of bed the next day &#8211; such a simple thing, but it&#8217;s a <em>huge</em> deal to me after 2 years of pain.</p>
<p>My physio&#8217;s theory (after being very puzzled because the problems I had were symptomatic of a major trauma, of which there was no evidence) was that the problem was a vicious circle of stress and excessive time being desk-bound that had caused a long-term shortening of the tendons / muscles in my back, coupled with a general age-related degradation of discs, which then (because of the pain) caused me injure the nerves far too easily, causing more stress and making exercise to alleviate the problem long-term very difficult to do. In hindsight, while I was skeptical for a long time it appears he was right &#8211; it&#8217;s just that to break that cycle required a massive change in lifestyle over a sustained period of time, and being consistent with that change even when it didn&#8217;t seem to be working early on.</p>
<p>I&#8217;ve always believed that success is just a factor of effort and consistency, and that there&#8217;s no such thing as a &#8216;quick fix&#8217; for anything important. I think if there&#8217;s any experience in my life that has reinforced this philosophy (and also tested my ability to follow it), it&#8217;s this. Plenty of people (particularly in the USA) told me I should be looking for a surgical solution. I never wanted that &#8211; the spine is a ridiculously complicated structure and I had very little faith that such a fix would last (even if it worked short-term), particularly while the original cause of the problem wasn&#8217;t explained. I&#8217;m glad that the culture here is to operate only if there is no chance of natural rehabilitation, because even if there had there been a viable &#8216;quick fix&#8217;, without the lifestyle change I&#8217;m sure the problem would just have reappeared later anyway.</p>
<p>It also seems that there was a combination of physical and psychological factors contributing to this, which again undermines the surgical option. I&#8217;ve historically had quite a high tolerance for stress and work-related pressure &#8211; in fact I&#8217;ve done some of my best work in the crucible of ridiculous deadlines and seemingly intractable problems. My general attitude that I could &#8216;push through&#8217; any difficulties, reinforced by the inevitable high in the aftermath, pretty much set me up for this kind of problem &#8211; because when my health started to falter, I took the same attitude. Obviously, it doesn&#8217;t work. Stress and frustration cause tense muscles, which exacerbate the problems of discs compressed by too much inactivity and make stretching them out to their proper state again even more difficult. So in addition to changing my work habits, I&#8217;ve had to learn how to relax again. It sounds ridiculous, but because of stress and a reaction to pain (which is to tense up), I had literally forgotten how to relax a certain bunch of muscles in my lower / mid back. I had to be taught how to do it again using breathing exercises and gradual, millimetre-by-millimetre changes in posture over time (too much at once would cause me lots of pain).</p>
<p>So, it&#8217;s been a long road and it&#8217;s not finished yet &#8211; nor will it ever really be finished, since I&#8217;ll need to continue with my new lifestyle for the foreseeable future. I have a newfound appreciation for keeping my stress levels lower and being more realistic about what I put my body through in the pursuit of work / hobbies.   In many ways the old Steve is gone (the workaholic, coding at 3am Steve who created Ogre). The new Steve has a working back though, and frankly, that&#8217;s far more valuable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/12/01/health-update-december-2010/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>I&#8217;m in the Game Developer 50!</title>
		<link>http://www.stevestreeting.com/2010/11/06/im-in-the-game-developer-50/</link>
		<comments>http://www.stevestreeting.com/2010/11/06/im-in-the-game-developer-50/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 10:26:45 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[50]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[game developer]]></category>
		<category><![CDATA[gdmag]]></category>
		<category><![CDATA[ogre]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2859</guid>
		<description><![CDATA[Wow, talk about a &#8216;bolt from the blue&#8217; here: I woke up this morning to find that I&#8217;d been included on the &#8216;Game Developer 50&#8242; in the November 2010 issue of the long established Game Developer Magazine. It&#8217;s entirely, completely bonkers to see my name included in the same list as the likes of Sid [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gdmag.com"><img class="alignright size-full wp-image-2860" title="gd50" src="http://www.stevestreeting.com/wp-content/uploads/2010/11/gd50.jpg" border="0" alt="" width="200" height="182" /></a>Wow, talk about a &#8216;bolt from the blue&#8217; here: I woke up this morning to find that I&#8217;d been included on the &#8216;Game Developer 50&#8242; in the November 2010 issue of the long established <a href="http://www.gdmag.com" target="_blank">Game Developer Magazine</a>. It&#8217;s entirely, completely bonkers to see my name included in the same list as the likes of Sid Meier and Gabe Newell. Just, wow. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> </p>
<p>Obviously my inclusion was based on my 10 years working on <a href="http://www.ogre3d.org" target="_blank">Ogre</a> &#8211; it&#8217;s somewhat ironic that I was a GDMag subscriber when I started Ogre originally, and did so with the intention of creating my own games with it, inspired by what I read in those pages. Of course, I never really got around to finishing a whole game myself, but playing a part in other people&#8217;s games was in many ways just as rewarding. It&#8217;s a really, really nice surprise to get included in this list personally &#8211; Ogre&#8217;s been mentioned a few times in the magazine over the years of course, but to be on this list is the icing on the cake.</p>
<p>I&#8217;m also really glad to see Max Schaefer from <a href="http://www.runicgames.com/" target="_blank">Runic</a> on the list, the story of Torchlight&#8217;s success is now legendary!</p>
<p>So, I&#8217;m not sure who was responsible for nominating me on to this list, but you have my sincere thanks. The photo they used was the one of me receiving <a href="http://www.stevestreeting.com/2010/07/25/dude-theres-an-ogre-on-my-mantelpiece/" target="_blank">the Ogre statuette</a>, and the stupid grin I have right now is comparable. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/11/06/im-in-the-game-developer-50/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Dude, there&#8217;s an Ogre on my mantelpiece!</title>
		<link>http://www.stevestreeting.com/2010/07/25/dude-theres-an-ogre-on-my-mantelpiece/</link>
		<comments>http://www.stevestreeting.com/2010/07/25/dude-theres-an-ogre-on-my-mantelpiece/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 11:06:24 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[gift]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[retirement]]></category>
		<category><![CDATA[statue]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2790</guid>
		<description><![CDATA[In a complete and total surprise, my cousin presented to me yesterday the result of a grand conspiracy in the Ogre community to commemorate my time as project lead &#8211; a specially designed, unique Ogre statuette! Thumbnails below, click for more detail&#8230;]]></description>
			<content:encoded><![CDATA[<p>In a complete and total surprise, my cousin presented to me yesterday the result of a grand conspiracy in the Ogre community to commemorate my time as project lead &#8211; a specially designed, unique Ogre statuette! Thumbnails below, click for more detail&#8230;<br />
<a title="Receiving the statue by sjstreeting, on Flickr" href="http://www.flickr.com/photos/35150516@N03/4823659995/" target="_blank"><img src="http://farm5.static.flickr.com/4116/4823659995_184298d809_m.jpg" alt="Receiving the statue" width="240" height="180" /></a> <a target="_blank title="Sinbad holding the statue by sjstreeting, on Flickr" href="http://www.flickr.com/photos/35150516@N03/4823660431/"><img src="http://farm5.static.flickr.com/4098/4823660431_40c6290d5a_m.jpg" alt="Sinbad holding the statue" width="240" height="180" /></a><br />
<a target="_blank title="Front of statue by sjstreeting, on Flickr" href="http://www.flickr.com/photos/35150516@N03/4823661079/"><img src="http://farm5.static.flickr.com/4098/4823661079_0475608a4a_m.jpg" alt="Front of statue" width="180" height="240" /></a> <a target="_blank title="Back of the statue by sjstreeting, on Flickr" href="http://www.flickr.com/photos/35150516@N03/4823661589/"><img src="http://farm5.static.flickr.com/4094/4823661589_718dc7b7af_m.jpg" alt="Back of the statue" width="180" height="240" /></a></p>
<p>I literally had no idea this was going on, or that my cousin had been asked to make the delivery that day (I thought we were just meeting for a social). I was completely taken aback and very touched that the people in the community would go to the trouble of doing something like this for me. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_surprised.gif' alt=':-o' class='wp-smiley' />  There&#8217;s<a href="http://www.ogre3d.org/forums/viewtopic.php?f=1&amp;t=59275" target="_blank"> a thread in the forums going into more detail</a> on how they organised it, including the many, many different designs they mocked up and considered before voting for this one. I&#8217;m humbled and flattered.</p>
<p>My sincere thanks to everyone who was involved in organising this, and very well done for creating such an excellent statue and managing so successfully to keep me in the dark about it! You guys are just awesome. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/07/25/dude-theres-an-ogre-on-my-mantelpiece/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Monsieur, you are really spoiling us</title>
		<link>http://www.stevestreeting.com/2010/05/13/monsieur-you-are-really-spoiling-us/</link>
		<comments>http://www.stevestreeting.com/2010/05/13/monsieur-you-are-really-spoiling-us/#comments</comments>
		<pubDate>Thu, 13 May 2010 10:16:40 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[steam]]></category>
		<category><![CDATA[torchlight]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2715</guid>
		<description><![CDATA[Yesterday saw a triple-whammy of sugary Apple gaming goodness: Steam for Mac was released, meaning all the games you own on Steam that are ported to the Mac can also be played there, free. Torchlight was a day-1 release on the service, meaning Ogre (and therefore code written by me) was among the very first [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stevestreeting.com/wp-content/uploads/2010/05/steamlogomac.png"><img class="alignright size-full wp-image-2717" title="steamlogomac" src="http://www.stevestreeting.com/wp-content/uploads/2010/05/steamlogomac.png" alt="" width="128" height="129" align="right" /></a>Yesterday saw a triple-whammy of sugary Apple gaming goodness:</p>
<ol>
<li> <a href="http://store.steampowered.com/browse/mac" target="_blank">Steam for Mac</a> was released, meaning all the games you own on Steam that are ported to the Mac can also be played there, free.</li>
<li><a href="http://www.torchlightgame.com/" target="_blank">Torchlight</a> was a day-1 release on the service, meaning Ogre (and therefore code written by me) was among the very first on the service.</li>
<li><a href="http://store.steampowered.com/app/400/" target="_blank">Portal</a> became free (for Mac and PC)</li>
</ol>
<p>Wow. A great day for Mac gaming. I noticed that <a href="http://store.steampowered.com/app/22000/" target="_blank">World Of Goo</a> was up on day 1 too, and since I&#8217;d bought it on Steam I could play it right away on my MBP too. Yummy.</p>
<p>Curiously, considering it&#8217;s based on Ogre, I don&#8217;t actually own Torchlight on Steam &#8211; I had a free Windows-only copy from Runic, I bought a physical (Windows-only) copy for my shelf, and I bought copies for both my wife and Diablo-obsessed brother in law on Steam but I never got a copy there myself, so I haven&#8217;t tried it on the Mac yet. I need to ask my wife to log in on the MBP so I can try it! <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/05/13/monsieur-you-are-really-spoiling-us/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The spinal analysis, and what it means for OGRE</title>
		<link>http://www.stevestreeting.com/2010/04/27/the-spinal-analysis-and-what-it-means-for-ogre/</link>
		<comments>http://www.stevestreeting.com/2010/04/27/the-spinal-analysis-and-what-it-means-for-ogre/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 11:21:38 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Health]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[spine]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2708</guid>
		<description><![CDATA[For 18 months I&#8217;ve been told by a succession of doctors and physios that I didn&#8217;t have anything structurally wrong with my spine and that my bouts of back pain were simply &#8216;standard non-specific back pain&#8217; &#8211; ie muscle problems that I should just take NSAIDs for and exercise more. I&#8217;d been a bit skeptical [...]]]></description>
			<content:encoded><![CDATA[<p>For 18 months I&#8217;ve been told by a succession of doctors and physios that I didn&#8217;t have anything structurally wrong with my spine and that my bouts of back pain were simply &#8216;standard non-specific back pain&#8217; &#8211; ie muscle problems that I should just take NSAIDs for and exercise more. I&#8217;d been a bit skeptical because the problems were occasionally quite extreme and seemed to be always centred on one particular location (the joint just at the bottom of my ribcage), but after getting many opinions and one set of x-rays I went along with it.</p>
<p>Things have been quite good recently, up to mid-February when I had a bit of a relapse for a few weeks after doing a little too much. I raised it with my doctor again, explained that I&#8217;d been doing all the exercise and going to the gym as recommended, and yet it still flared up at what I considered to be fairly minor provocation. He scheduled me in for another set of x-rays which I expected to not come back with anything conclusive since the last set didn&#8217;t (and you can&#8217;t get into the MRI scan here unless you go through this step again first, allegedly). They took more pictures this time but I didn&#8217;t expect much given all the opinions so far.</p>
<p>Imagine my surprise therefore that when I got the results today, they actually had a concrete explanation for me. Apparently in my lower thoracic (ie exactly where I&#8217;d been pointing all these months) I have some disc degeneration and calcification going on, which is what is causing the stiffness and pain. This is something that happens with age anyway, but given my relative(!) youth (36) they thought it looked like it might be a result of either a trauma such as a sports injury &#8211; I can&#8217;t think of anything &#8211; or sometimes they see it in people who were child gymnasts &#8211; again not something I can attest to! Basically, something has happened to make my spine degenerate in that area faster than it should have done for my age. Too many hours spent stressed out at a desk may have been a contributing factor in that, although he thought it would have to be a lot of hours and probably combined with other factors.</p>
<p>So anyway, the &#8216;good&#8217; news is that I actually have a reason now, an explanation for why I&#8217;m so susceptible to strains and stress on my back these days. In a way it&#8217;s nice to have something to point at. The bad news is that this isn&#8217;t fixable, it can merely be managed via careful exercise and lifestyle changes &#8211; many of which I&#8217;ve made already but I probably need to go even further. The prognosis is that I should be able to live pain-free so long as I manage it carefully over the long term to stop it degenerating further.</p>
<p>Following this analysis, I&#8217;ve been prompted to make a decision which I&#8217;ve been reluctantly considering for a while anyway &#8211; I&#8217;m retiring as OGRE Project Lead. I&#8217;ve thoroughly enjoyed my 10 years leading OGRE from unknown personal project to where we are today, but leading an open source project requires an enormous amount of dedication, passion, and above all an awful lot of time spent at a keyboard, most often in addition to a &#8216;regular job&#8217; with which to pay the bills, and I feel I just can&#8217;t give that to the level that&#8217;s required any more. It will be with no small amount of sadness that I finally take off the leader&#8217;s hat &#8211; which by now is quite battered and worn in. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I still intend to be around and involved in the project &#8211; I&#8217;ll be contributing some code, giving advice when it&#8217;s wanted, and overseeing the establishment of an OGRE Foundation to handle the donations and funding side, but the days of me living and breathing OGRE, vetting every change, and being the person with whom the buck stops when there&#8217;s a bug, will be over. I&#8217;ll basically be contributing what and when I can, but shrugging off the responsibility and expectation that is inevitably associated with being the lead developer.</p>
<p>We have a great team and community around OGRE and I&#8217;m sure the project will be fine with me taking a more back-seat role &#8211; time for younger and less physically challenged developers to step into the limelight <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/04/27/the-spinal-analysis-and-what-it-means-for-ogre/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>OGRE OS &amp; Browser Stats</title>
		<link>http://www.stevestreeting.com/2010/04/13/ogre-os-browser-stats/</link>
		<comments>http://www.stevestreeting.com/2010/04/13/ogre-os-browser-stats/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 15:51:46 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2678</guid>
		<description><![CDATA[I&#8217;ve had requests to post the OS &#38; browser stats for the OGRE site, which I didn&#8217;t include in my previous demographics post, so here we go. A caveat to start off with &#8211; as a programmer-oriented site our users are obviously a little different in their choice of tech to the population at large! [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had requests to post the OS &amp; browser stats for the OGRE site, which I didn&#8217;t include in my previous <a href="http://www.stevestreeting.com/2010/04/08/ogre-web-demographics-revisited/">demographics post</a>, so here we go.</p>
<p>A caveat to start off with &#8211; as a programmer-oriented site our users are obviously a little different in their choice of tech to the population at large!</p>
<p><strong>Operating Systems</strong></p>
<p><a href="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_os2010.png"><img class="alignnone size-full wp-image-2679" title="ogreweb_os2010" src="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_os2010.png" alt="" width="659" height="267" /></a></p>
<p>Not really a surprise there, Windows dominates the landscape, with Linux and OS X pulling up the rear. Personally on the desktop I&#8217;m a Windows and OS X user so my visits are contributing to those rows. There&#8217;s a decent showing for the mobile platforms too, iPhone and iPod particularly, a fair few on Android and even some early iPad hits.</p>
<p><strong>Windows Breakdown</strong></p>
<p>It&#8217;s worth drilling down into the huge Windows stat to see what versions people are using:<br />
<a href="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_oswin2010.png"><img class="alignnone size-full wp-image-2680" title="ogreweb_oswin2010" src="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_oswin2010.png" alt="" width="693" height="263" /></a></p>
<p><a href="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_oswin2010.png"></a>XP still rules the roost then, and thank goodness Vista is sinking rapidly to the bottom like the cast-iron turd sculpture it is &#8211; Windows 7 has already more than doubled its share. And it&#8217;s amusing to see that a couple of crazy b?st#rds are still running ME and NT.</p>
<p><strong>Mac OS X Breakdown</strong></p>
<p><a href="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_osx2010.png"><img class="alignnone size-full wp-image-2681" title="ogreweb_osx2010" src="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_osx2010.png" alt="" width="691" height="240" /></a></p>
<p>I&#8217;d heard that supporting pre-Leopard versions of Mac OS X was increasingly becoming pointless since almost everyone had upgraded, and these stats bear that out &#8211; 96% of users are running 10.5 (Leopard) or better.</p>
<p>Even more interesting was the sole visitor running 10.7! Was that an error, or did we have someone from Apple on an unreleased future version visiting the site? And what&#8217;s that &#8217;68K&#8217; entry about &#8211; someone running an Apple ][ emulator or something?</p>
<p>The Linux breakdown wasn&#8217;t interesting (99% &#8216;not set&#8217;, the rest just kernel versions), so there&#8217;s nothing to post for that &#8211; don&#8217;t email me about  missing out Linux please <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Browsers</strong></p>
<p><a href="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_browsers2010.png"><img class="alignnone size-full wp-image-2682" title="ogreweb_browsers2010" src="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogreweb_browsers2010.png" alt="" width="660" height="267" /></a></p>
<p>Firefox is the clear winner here at a huge 50% &#8211; this definitely reflects our developer-focussed audience. In fact, I used to be an avid Firefox user until quite recently, when the new version of Chrome added the equivalent to the extensions I relied on in Firefox, at which point I switched because Chrome is more efficient with memory in particular. IE&#8217;s share at 18% is definitely not representative of the general user population, but then our users tend to be a bit better informed than that <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So there you go, request fulfilled &#8211; hope it was interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/04/13/ogre-os-browser-stats/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Native code being promoted for once!</title>
		<link>http://www.stevestreeting.com/2010/04/10/native-code-being-promoted-for-once/</link>
		<comments>http://www.stevestreeting.com/2010/04/10/native-code-being-promoted-for-once/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 10:49:31 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[OS 4]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2665</guid>
		<description><![CDATA[Ok, so a new clause in the Terms of Service for Apple&#8217;s newly announced iPhone OS 4 is understandably causing some consternation around the internet: “3.3.1 … Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so a new clause in the Terms of Service for Apple&#8217;s newly announced iPhone OS 4 is understandably causing some consternation around the internet:</p>
<blockquote><p>“3.3.1 … Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).”</p></blockquote>
<p>The common understanding is that this is a shot across Adobe&#8217;s bow, but also aimed at people creating emulation environments. Potential justifications for this could include performance concerns (given the new multitasking feature in 4), wanting to avoid shovelware ports from other platforms with no iPhone-specific features to make their platform stand out, or sheer bloody mindedness and wish to tie developers directly to their APIs to minimise the chance that they&#8217;ll deploy on competitors machines.</p>
<p>As a general principle, I don&#8217;t like this sort of thing &#8211; telling developers what they can and can&#8217;t do is stifling. But, I had to take away one positive from it &#8211; <em>a company telling people to use native code,</em> instead of the opposite which I&#8217;ve seen too much of lately. In recent years, the likes of Microsoft have insisted that developers use their intermediate VM layers to deploy on some devices (XNA, Windows Phone 7) &#8211; regardless that these environments have about 20 years less maturity (in terms of libraries and existing code) than what I already have in C &amp; C++. Having them tell me that no, despite all these great battle-tested libraries that I&#8217;m used to using, instead I have to use comparatively immature ports and replacements of varying quality, just because they tell me so. That drives me nuts &#8211; sure, let&#8217;s throw away and re-invent hundreds of functioning &amp; tested libraries just because&#8230;well, just because! They&#8217;re old and we&#8217;re new and awesome! Hmm.</p>
<p>So while Apple telling developers what they can and can&#8217;t use is still very wrong from a point of principle, I&#8217;m actually glad that someone is championing native code for once, rather than pushing a VM environment. I&#8217;d prefer they didn&#8217;t mandate anything at all, but I can&#8217;t deny a certain urge to fist-bump when native code was the one to get the seal of approval, after getting the impression from other companies that they&#8217;d rather no-one had access to the underlying workings of the machine. I <em>like</em> native code, there&#8217;s a certain purity about it &#8211; and maybe it&#8217;s like a sad old gear-head going on about how great the old V8&#8242;s used to be, but I don&#8217;t care <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mostly it&#8217;s about my frustration with being forced to discard perfectly good native libraries and look for / build replacements for no good reason.</p>
<p>PS For the record, OGRE on iPhone isn&#8217;t affected by this new ToS because we&#8217;re 100% native, baby. <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>[edit]For those pointing out that C# and such eventually run on native code anyway &#8211; that&#8217;s not the point. The point is that on certain devices &#8211; XNA and Windows Phone 7 &#8211; you simply cannot use libraries that were not written in .Net originally, meaning that years worth of dev libraries are inaccessible and need to be (pointlessly IMO) rewritten in .Net. And yes, this is exactly the same as Apple are doing here (but in reverse), if you interpret it in the strictest sense that you&#8217;re only allowed to use code written in Obj-C, C and C++. I&#8217;m just taking a perverse delight in the fact that it&#8217;s C/C++ libraries from the last 20+ years that are on the winning side for a change, instead of being the ones that are excluded (which frankly I&#8217;m completely sick of).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/04/10/native-code-being-promoted-for-once/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>OGRE web demographics, revisited</title>
		<link>http://www.stevestreeting.com/2010/04/08/ogre-web-demographics-revisited/</link>
		<comments>http://www.stevestreeting.com/2010/04/08/ogre-web-demographics-revisited/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 13:48:47 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[china]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[regional]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[usa]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2652</guid>
		<description><![CDATA[Almost exactly three years ago, I posted an analysis of the traffic on ogre3d.org and the rough country breakdown of our users, which is always fascinating to me. I hadn&#8217;t actually been collecting web stats on the site for about a year (the previous set-up was lost when I had to recreate the server in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stevestreeting.com/2007/03/14/interesting-early-ogre-demographics/">Almost exactly three years ago</a>, I posted an analysis of the traffic on <a href="http://www.ogre3d.org" target="_blank">ogre3d.org</a> and the rough country breakdown of our users, which is always fascinating to me. I hadn&#8217;t actually been collecting web stats on the site for about a year (the previous set-up was lost when I had to recreate the server in a hurry, and somehow reinstating it never seemed to rise to the top of my TODO list), but a month ago I finally got around to adding Google Analytics to the site. The results have been very interesting, particularly when compared to 3 years ago, so I thought I&#8217;d share some factoids with you.</p>
<p><strong>Visitors still increasing</strong></p>
<p>In 2007, log analysis indicated we were getting a little over 100,000 unique visitors per month; obviously this is not 100% accurate due to shared &amp; dynamic IP addresses, people logging in from multiple sites, etc, but it&#8217;s a reasonable order of magnitude indicator. Analytics is typically more conservative in its figures, since it excludes bots better as well as non-Javascript browsers, but still in the past month (actually only 28 days) we&#8217;ve had over 120,000 unique visitors to the site &#8211; and 1.2M page views &#8211; so we&#8217;ve sustained and slightly improved our user traffic. And all without any Slashdot posts <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Also, this doesn&#8217;t count visits to Sourceforge, BitBucket or ome static generated HTML like our online documentation pages.</p>
<p><strong>The Meteoric Rise of China</strong></p>
<p>In 2007, China ranked 15th in our league table of visitors. Three years on and they&#8217;ve risen to the number two spot, comfortably surpassing Germany &#8211; at first I wondered if that was down to users there using fewer proxies, but since the figures for other countries have remained fairly stable I think the majority of this is genuinely a vast increase in the number of Chinese visitors to OGRE&#8217;s site. Here&#8217;s the top 10 countries (figures are for the number of visits):</p>
<p><img class="alignnone size-full wp-image-2653" title="ogre2010countries" src="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogre2010countries.png" alt="" width="745" height="263" /></p>
<p>The range of countries is demonstrated by how many are in the grey &#8216;others&#8217; section (38.73%). Except for the massive change in China&#8217;s share, most of the other countries have stayed approximately in their relative positions &amp; shares of the user population since 2007.</p>
<p><strong>Region View &#8211; Europe still dominates, Asia challenges the Americas</strong></p>
<p>The country view is, however, quite misleading if your aim is to decide where to locate a web server for example, because it naturally biases the figures towards large unified countries (like the USA and China), and doesn&#8217;t really show a true regional picture. For that, we have to examine the numbers (again, number of visits) by continent:</p>
<p><img class="alignnone size-full wp-image-2654" title="ogre2010continents" src="http://www.stevestreeting.com/wp-content/uploads/2010/04/ogre2010continents.png" alt="" width="700" height="242" /></p>
<p>Now, even though the continent view includes Russia in Europe which screws up the locality principle a bit, even if you exclude that Europe dominates our community, with close to 1 in every 2 visitors to the site being from Europe. The Americas  and Asia share most of the rest almost equally now, which is a change from 2007 when the Americas were more dominant, and everyone else shares the scraps (3.5%). The Americas figure is made up of about 86% North America and 14% South America, and Asia is predominantly (60%) the Eastern Asia countries (mostly China, but South Korea holds its own too), with South-East and Southern Asia sharing the rest &#8211; particular hotspots there are India, Indonesia, Malasia, Turkey and Vietnam.</p>
<p><strong>City Clusters</strong></p>
<p>One thing I like about Analytics is the ability to drill down into countries and look at the local clustering. There are the expected clusters around cities &#8211; in the USA, the top 2 cities are unsurprisingly New York and Los Angeles, although Columbus OH takes the number 3 spot, and in the UK the clustering around London is massive &#8211; but they typically represent only about 25-30% of the audience, with the rest being scattered pretty much uniformly across most areas of the country in question. It&#8217;s fun to be able to point at almost anywhere in Europe, North America and the southern and eastern parts of Asia and to have a pretty good chance of being quite near to someone who has used the OGRE site.</p>
<p><strong>The Monday morning OGRE fix</strong></p>
<p>With OGRE obviously used by a lot of people in their spare time, you might expect that the weekends would be the busiest times for the site, but the opposite is in fact true &#8211; Mondays are consistently the busiest days (particularly 6-9am PST), with Saturday being the least busy. Whether this is because people are working with OGRE, or just cheekily surfing in their work time rather than face the Monday workload, is hard to verify!</p>
<p><strong>Final Thought</strong></p>
<p>I get a kick out of looking at these stats so I hope you find them interesting too. It&#8217;s really cool to think that there are only a very small number of countries (such as North Korea and Laos) from which we don&#8217;t get any (non-proxy) visitors from in a typical month, and it&#8217;s very interesting to see how the visitor base is gradually spreading out and diversifying, something which I&#8217;m sure every site witnesses but it&#8217;s interesting to see it in your own data. The question is &#8211; will China keep the current trajectory? At this rate, they&#8217;ll take the number one spot from the USA in only a few more years and put Asia second in the regional rankings!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/04/08/ogre-web-demographics-revisited/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Building a new technical documentation tool chain</title>
		<link>http://www.stevestreeting.com/2010/03/07/building-a-new-technical-documentation-tool-chain/</link>
		<comments>http://www.stevestreeting.com/2010/03/07/building-a-new-technical-documentation-tool-chain/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 12:07:10 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[OGRE]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[AsciiDoc]]></category>
		<category><![CDATA[docbook]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[FOP]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Saxon]]></category>
		<category><![CDATA[technical writing]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSL]]></category>

		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2592</guid>
		<description><![CDATA[Writing good documentation is hard. While I happen to think that API references generated from source code can be extremely useful, they&#8217;re only part of the story, and eventually everyone needs to write something more substantial for their software. You can get away with writing HTML directly, and separately using a word processor to write [...]]]></description>
			<content:encoded><![CDATA[<p>Writing good documentation is hard. While I happen to think that <a href="http://www.stack.nl/~dimitri/doxygen/" target="_blank">API references generated from source code</a> can be extremely useful, they&#8217;re only part of the story, and eventually everyone needs to write something more substantial for their software. You can get away with writing HTML directly, and separately using a word processor to write PDFs for so long, but eventually you need a proper tool chain with the following characteristics:</p>
<ul>
<li>Lets the author concentrate on content rather than style</li>
<li>Generates multiple formats from one source (HTML, PDF, man pages, HTML Help etc)</li>
<li>Does all the tedious work for you such as TOCs, cross-references, source code highlighting, footnotes</li>
<li>Is friendly to source control systems &amp; diffs in general</li>
<li>Standard enough that you could submit the content to a publisher if you wanted to</li>
<li>Preferably cross-platform, standards-based and not oriented to any particular language or technology</li>
</ul>
<p>When I came to write the <a href="http://www.ogre3d.org/docs/manual/" target="_blank">OGRE manual</a> many, many years ago, I went with <a href="http://en.wikipedia.org/wiki/Texinfo" target="_blank">Texinfo</a> &#8211; it seemed a good idea at the time, and ticked most of the boxes above. The syntax is often a bit esoteric, and the tools used to generate output frequently a bit flaky (texi2html has caused me many headaches over the years thanks to  poorly documented breaking changes), but it worked most of the time.</p>
<p>I&#8217;ve been meaning to replace this tool chain with something else for new projects for a while, and <a href="http://www.docbook.org/" target="_blank">DocBook</a> sprung to mind since it&#8217;s the &#8216;new standard&#8217; for technical documentation. It&#8217;s quite popular with open source projects now and it&#8217;s the preferred format for many publishers such as <a href="http://oreilly.com/" target="_blank">O&#8217;Reilly</a>. In the short term, I want to write some developer instructions for OGRE for our future Mercurial setup, but in the long term, I&#8217;d really like a good documentation tool chain for all sorts of other purposes, and Texinfo feels increasingly unsatisfactory these days.</p>
<p>Having spent some time this week establishing a new working tool chain, and encountering &amp; resolving a number of issues along the way, I thought I&#8217;d share my setup with you.</p>
<p><span id="more-2592"></span><strong>Overview</strong></p>
<p>The tool chain I&#8217;ve settled on is shown below. I&#8217;ve concentrated on the PDF output route because this tends to be the most complex:</p>
<p><a href="http://www.stevestreeting.com/wp-content/uploads/2010/03/docbook_sequence.png"><img class="size-full wp-image-2593 alignnone" title="docbook_sequence" src="http://www.stevestreeting.com/wp-content/uploads/2010/03/docbook_sequence.png" alt="" width="600" height="72" /></a></p>
<p>I chose to use <a href="http://www.methods.co.nz/asciidoc" target="_blank">AsciiDoc</a>, which was kindly suggested to me by <a href="http://twitter.com/tuan_kuranes" target="_blank">tuan kuranes</a>, in order to produce my DocBook XML from plain text. DocBook is XML, and like all XML, editing it by hand is an overly verbose affair, and prone to human error &#8211; specifically DocBook has a lot of long tag names which makes typing them very, very tedious and generally inefficient. Now, of course you can use GUI tools to hide these inefficiencies from you, and to that end you might want to try tools like <a href="http://www.xmlmind.com/xmleditor/" target="_blank">XMLMind</a> (free for non-commercial use) and <a href="http://www.syntext.com/" target="_blank">Syntext</a> (open source edition) to do this, or even just Eclipse or Visual Studio with the DTD hooked in for auto-completion. But there are 2 reasons why I chose not to do that:</p>
<ol>
<li>Maybe I&#8217;m just old-skool, but to me relying on a GUI tool to mask how awkward content is to write is the coding equivalent of &#8216;papering over the cracks&#8217;. I would rather resolve the fundamental problem than simply hide it from myself.</li>
<li>Even if you hide the XML from your own eyes, it causes problems elsewhere. XML doesn&#8217;t diff very well, and XML generated from a GUI tool diffs even less well, making source control of the content less useful; change tracking is cumbersome and merging an absolute nightmare.</li>
</ol>
<p>AsciiDoc plain text content is fast and simple to write, it&#8217;s easily readable, diffs well and doesn&#8217;t require any special editing tools. It&#8217;s similar to Texinfo, but less esoteric and the tools are far more modern.</p>
<p><strong>Customising the tool chain</strong></p>
<p>AsciiDoc comes with the ability to generate HTML (single or chunked) or DocBook XML directly, and you can feed the DocBook through other transformations to produce PDF or HTML Help files. I was particularly interested in the PDF route, for which AsciiDoc provides an automated toolchain called <a href="http://www.methods.co.nz/asciidoc/a2x.1.html" target="_blank">a2x</a>. However, I found that this wasn&#8217;t good enough for my needs, because the default XSL process wasn&#8217;t capable of handling code syntax highlighting &amp; line numbers, unless you used dblatex rather than FOP as the PDF generator which adds its own problems. dblatex is awkward to get working on Windows, and it also requires a LaTeX implementation &#8211; a route which seemed perverse to me since I was trying to avoid &#8216;old&#8217; tools. If I was going to end up going through LaTeX I might as well just write it in that in the first place! So it seemed a hack to go that way, I wanted to keep the direct DocBook to PDF generation.</p>
<p>So, the answer was to replace a2x with my own series of steps, which replaced the XSL processing (which is done with xsltproc in a2x) with Saxon, a Java-based XSL processor which can be extended with syntax highlighting relatively easily.</p>
<p><strong>Installing the tools</strong></p>
<p>I&#8217;ll go over the installation on Windows, but it&#8217;s mostly the same on Mac / Linux, if anything slightly easier since the packages are often already installed. <strong>Edit:</strong> I&#8217;ve successfully followed my own instructions here and got the same tool chain running great on Mac OS X, so Linux should be fine too. <strong>/Edit </strong>You will need:</p>
<ul>
<li><a href="http://www.methods.co.nz/asciidoc/" target="_blank">AsciiDoc</a> (I&#8217;m using 8.5.3)</li>
<li><a href="http://www.python.org" target="_blank">Python</a> (I&#8217;ve tested with 2.5 and 2.6)</li>
<li><a href="http://saxon.sourceforge.net/#F6.5.5" target="_blank">Saxon 6.5</a> (the latest Saxon is 9 but that&#8217;s for XSL 2.0, DocBook is XSL 1.0 and Saxon 6.5 is the stable for that)</li>
<li><a href="http://xmlgraphics.apache.org/fop/" target="_blank">Apache FOP</a> (I&#8217;m using 0.95)</li>
<li><a href="http://www.java.com/en/" target="_blank">Java runtime</a> (I&#8217;m using 1.6)</li>
<li><a href="http://sourceforge.net/projects/xslthl/" target="_blank">XSLTHL</a> syntax highlighting implementation</li>
<li>Technically optional, to avoid network access on processing DocBook, but IMO you want this:
<ul>
<li><a href="http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip" target="_blank">DocBook XML</a> and <a href="http://sourceforge.net/project/showfiles.php?group_id=21935" target="_blank">DocBook XSL</a> files</li>
<li>Apache Commons <a href="http://www.apache.org/dist/xml/commons/xml-commons-resolver-latest.zip" target="_blank">resolver.jar</a></li>
</ul>
</li>
</ul>
<p style="font-size: x-small;">Note: optionally you can also install XML tools such as xmllint to validate the XML you&#8217;re producing, but you don&#8217;t need to do this generally. AsciiDoc will normally expect you to install xsltproc and xmllint  for example for a2x to work, but we won&#8217;t be using it.</p>
<p><strong>Base Configuration</strong></p>
<ol>
<li>Run the installers for Python and Java if you haven&#8217;t done already, and make sure they&#8217;re both on your system path</li>
<li>Extract the other archives somewhere on your disk &#8211; personally I put them all underneath a common &#8216;DocBook&#8217; root folder</li>
<li>Add the FOP root folder to your system path too &#8211; not necessarily required but it&#8217;s convenient</li>
</ol>
<p><strong>Create local mappings for DocBook URIs</strong></p>
<p><strong> </strong>When processing XSL, <a href="http://saxon.sourceforge.net/#F6.5.5" target="_blank">Saxon</a> will quite happily pull DocBook definitions from the internet, but this will slow the process down, which is especially noticeable when processing small documents. So, instead I favour making the global URIs resolve to the local copies of the <a href="http://www.docbook.org/schemas/4x" target="_blank">DocBook XML</a> and <a href="http://docbook.sourceforge.net/projects/xsl/" target="_blank">DocBook XSL</a> that we downloaded earlier. In Saxon, you do this via a CatalogManager.properties file which must be somewhere on your Java classpath. For me, the file looked like this:</p>
<pre class="brush: bash;">
catalogs=E:/UsefulResources/DocBook/docbook-xsl-1.75.2/catalog.xml;E:/UsefulResources/DocBook/docbook/4.5/catalog.xml
relative-catalogs=false
static-catalog=yes
catalog-class-name=org.apache.xml.resolver.Resolver
verbosity=1
</pre>
<p>Notice how I just reference the &#8216;catalog.xml&#8217; files that are included in the DocBook XML and XSL distributions; these files include the mappings from the URIs to the local files. I saved this file as e:\UsefulResources\DocBook\CatalogManager.properties, and added this folder to my classpath (see &#8216;Running the toolchain&#8217; below). You can skip this step if you want, but it will speed up your XSL processing considerably so it&#8217;s highly recommended.</p>
<p><strong>Defining a custom style</strong></p>
<p>AsciiDoc helpfully comes with some default stylesheets for PDF output, but I supplemented them to get source code highlighting and line numbering working via <a href="http://sourceforge.net/projects/xslthl/" target="_blank">XSLTHL</a>, which doesn&#8217;t work (via FOP) in the standard release. Also, I figured that I&#8217;m going to want to customise the styles eventually anyway, so I might as well know how to do it. It&#8217;s actually very easy &#8211; just define an XSL stylesheet which pulls in the existing AsciiDoc base definitions, and adds to them.</p>
<p>Here&#8217;s my simple stylesheet example: <a href="http://www.stevestreeting.com/downloads/fo_steve.xsl.txt" target="_blank">fo_steve.xsl</a>.</p>
<p>Most of this file is simply referencing the base stylesheets, enabling syntax colouring and line numbering (where opted for), and doing a single simple style tweak to code syntax highlighting &#8211; setting keywords to be red. Obviously there&#8217;s lots more you can do, this was just a test to prove the concept works.</p>
<p><strong>Running the tool chain</strong></p>
<p>It might look like there are a lot of moving parts here, but it actually fits together fairly simply, especially once you&#8217;ve done the setup as described above. Processing a text file to PDF is simply 3 stages, which can be simply scripted &#8211; much like a2x.py does in AsciiDoc in fact, except that we&#8217;re replacing xsltproc with Saxon for greater flexibility (and it also works better in Windows). In this example, I&#8217;ll be demonstrating how this works with an example file from the AsciiDoc release, &#8216;doc/source-highlight-filter.txt&#8217;, since it demonstrates the use of the syntax highlighter which is what prompted my deviation from a2x in the first place.</p>
<p>For comparison with the final PDF linked at the bottom, here&#8217;s the AsciiDoc input file: <a href="http://www.stevestreeting.com/downloads/source-highlight-filter.txt" target="_blank">source-highlight-filter.txt</a></p>
<p><span style="text-decoration: underline;">Step 1 &#8211; run AsciiDoc to create DocBook</span></p>
<p>Assuming you&#8217;re in the AsciiDoc root folder already:</p>
<pre class="brush: bash;">

python asciidoc.py --backend docbook  --doctype article  --out-file doc/source-highlight-filter.xml doc/source-highlight-filter.txt
</pre>
<p>That was easy &#8211; you now have a DocBook XML file at doc/source-highlight-filter.xml containing the DocBook representation of your far more friendly text file. a2x usually runs xmllint against this to verify it, but I&#8217;m not doing that, especially because it&#8217;s not part of my install steps and these Unix-oriented tools require a separate setup process.</p>
<p><span style="text-decoration: underline;">Step 2 &#8211; Run Saxon to turn DocBook XML into XSL-FO</span></p>
<p>This step requires quite a lot of typing so this is why you&#8217;ll almost certainly want to script it! Replace my &#8220;E:/UsefulResources/DocBook&#8221; with the real paths you&#8217;ve used when unzipping the packages listed above.</p>
<pre class="brush: bash;">

java -cp &quot;E:/UsefulResources/DocBook/saxon6/saxon.jar;E:/UsefulResources/DocBook/xslthl/xslthl-2.0.1.jar;E:/UsefulResources/DocBook/docbook-xsl-1.75.2/extensions/saxon65.jar;E:/UsefulResources/DocBook/xml-commons-resolver-1.2/resolver.jar;E:/UsefulResources/DocBook&quot; -Dxslthl.config=&quot;file:///E:/UsefulResources/DocBook/docbook-xsl-1.75.2/highlighting/xslthl-config.xml&quot; com.icl.saxon.StyleSheet -x org.apache.xml.resolver.tools.ResolvingXMLReader -y org.apache.xml.resolver.tools.ResolvingXMLReader -r org.apache.xml.resolver.tools.CatalogResolver -o doc\source-highlight-filter.fo doc\source-highlight-filter.xml E:\UsefulResources\DocBook\fo_steve.xsl
</pre>
<p>If you wanted to make the command-line simpler, you could update your CLASSPATH environment variable with the contents of the -cp option above and then omit it from the command line. Personally I&#8217;ve put this inside a batch file anyway so it doesn&#8217;t matter to me. <strong>Note:</strong> on Mac and Linux you should replace the semi-colons (&#8216;;&#8217;) separating each element of the classpath with a colon (&#8216;:&#8217;) instead.</p>
<p>I&#8217;ve called my custom stylesheet, described in the &#8216;Define a custom style&#8217; section above, &#8220;fo_steve.xsl&#8221; but of course you can call yours whatever you like and use individual ones per document if you wish.</p>
<p><span style="text-decoration: underline;">Step 3 &#8211; Run FOP to create PDF</span></p>
<p>The simplest of the steps, all you need to do now is run Apache FOP on the .fo file created from the last step to produce a PDF:</p>
<pre class="brush: bash;">

fop -fo doc\source-highlight-filter.fo -pdf doc\source-highlight-filter.pdf
</pre>
<p>And the final result should look something like this: <a href="http://www.stevestreeting.com/downloads/source-highlight-filter.pdf" target="_blank">source-highlight-filter.pdf</a></p>
<p><strong>Conclusion</strong></p>
<p>I&#8217;m really happy with this new tool chain; the input format is really easy to write and plays nice with source control, and the output quality is extremely good, including language-sensitive code highlighting and rich style customisation. It&#8217;s also cross-platform, standards-based, and built on mature yet still modern open source components. This will definitely be the way that I write my technical documentation in future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevestreeting.com/2010/03/07/building-a-new-technical-documentation-tool-chain/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

