<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.2" -->
<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/"
	>

<channel>
	<title>Sapphire In Steel</title>
	<link>http://sapphiresteel.com/wpblog</link>
	<description>The cutting edge of Ruby</description>
	<pubDate>Sun, 04 May 2008 09:30:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<item>
		<title>Ruby In Steel 0.6 - now with debugging</title>
		<link>http://sapphiresteel.com/wpblog/2006/06/12/ruby-in-steel-07-now-with-debugging/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/06/12/ruby-in-steel-07-now-with-debugging/#comments</comments>
		<pubDate>Mon, 12 Jun 2006 13:50:35 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>steel</category>
		<guid isPermaLink="false">http://sapphiresteel.com/wpblog/2006/06/12/ruby-in-steel-07-now-with-debugging/</guid>
		<description><![CDATA[Ruby In Steel 0.6 is now available for download:
http://www.sapphiresteel.com/Steel-Download-and-Change-Log
Please note that this Blog and its RSS Feed are no longer up to date. For the latest information on Sapphire In Steel, use the main site at: http://www.sapphiresteel.com and subscribe to our new RSS feed: http://www.sapphiresteel.com/backend.php3

]]></description>
			<content:encoded><![CDATA[<p>Ruby In Steel 0.6 is now available for download:</p>
<p><a href="http://www.sapphiresteel.com/Steel-Download-and-Change-Log">http://www.sapphiresteel.com/Steel-Download-and-Change-Log</a></p>
<p>Please note that this Blog and its RSS Feed are no longer up to date. For the latest information on Sapphire In Steel, use the main site at: <a href="http://www.sapphiresteel.com/">http://www.sapphiresteel.com</a> and subscribe to our new RSS feed: <a href="http://www.sapphiresteel.com/backend.php3">http://www.sapphiresteel.com/backend.php3</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/06/12/ruby-in-steel-07-now-with-debugging/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The New Sapphire In Steel Web Site</title>
		<link>http://sapphiresteel.com/wpblog/2006/05/14/the-new-sapphire-in-steel-web-site/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/05/14/the-new-sapphire-in-steel-web-site/#comments</comments>
		<pubDate>Sun, 14 May 2006 11:56:31 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>news</category>
	<category>steel</category>
		<guid isPermaLink="false">http://sapphiresteel.com/wpblog/2006/05/14/the-new-sapphire-in-steel-web-site/</guid>
		<description><![CDATA[As you may have noticed, we have now redesigned this site using the SPIP CMS. This provides us with many more features than are available when using WordPress - the software that manages this Blog.
It also has threaded &#8216;comment forums&#8217; which should make it much easier to leave feedback.
From now on we won&#8217;t be using [...]]]></description>
			<content:encoded><![CDATA[<p>As you may have noticed, we have now redesigned this site using the SPIP CMS. This provides us with many more features than are available when using WordPress - the software that manages this Blog.</p>
<p>It also has threaded &#8216;comment forums&#8217; which should make it much easier to leave feedback.</p>
<p>From now on we won&#8217;t be using this WordPress blog though we&#8217;ll leave it online for now just in case you want to browse through older posts. However, if you want to keep up to date with the development of Sapphire and Ruby In Steel, please be sure to log onto the main site:<br />
http://www.sapphiresteel.com<br />
and subscribe to our new RSS feed:<br />
http://www.sapphiresteel.com/backend.php3</p>
<p>best wishes<br />
Huw
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/05/14/the-new-sapphire-in-steel-web-site/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Major Update to the Sapphire In Steel Site</title>
		<link>http://sapphiresteel.com/wpblog/2006/05/11/major-update-to-the-sapphire-in-steel-site/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/05/11/major-update-to-the-sapphire-in-steel-site/#comments</comments>
		<pubDate>Thu, 11 May 2006 18:29:49 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>news</category>
		<guid isPermaLink="false">http://sapphiresteel.com/wpblog/2006/05/11/major-update-to-the-sapphire-in-steel-site/</guid>
		<description><![CDATA[Having initially tried to run this site in the form of this WordPress blog and some static HTML pages, we have now come to the conclusion that this combination is not up to the job   . We have therefore been working on a completely new, fully dynamic site which we&#8217;ll be installing over [...]]]></description>
			<content:encoded><![CDATA[<p>Having initially tried to run this site in the form of this WordPress blog and some static HTML pages, we have now come to the conclusion that this combination is not up to the job <img src='http://sapphiresteel.com/wpblog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  . We have therefore been working on a completely new, fully dynamic site which we&#8217;ll be installing over the next week or so. We&#8217;ve developed this in the odd moments which we have free when not developing Steel (ok, so we don&#8217;t sleep much these days) using the excellent site management software, <a href="http://www.spip.net/" target="_blank">SPIP</a>. No, it&#8217;s not written in Ruby; it&#8217;s PHP, but hey, we&#8217;re not linguistic chauvinists (in any case, SPIP&#8217;s version of PHP is decidedly French - it&#8217;s peppered with <em>Boucles</em> rather than Loops, <em>Rubriques</em> instead of Sections and so on).</p>
<p>The simple fact of the matter is that we tried out something like a dozen different CMS (Content Management Systems) scripts and decided that SPIP was by far the best for our requirements. Gradually we&#8217;ll be moving most (or all) of the content of this site into SPIP. For the time being, you can carry on referring to this Blog for any news. Naturally we&#8217;ll let you know when the Blog itself will be ready to migrate to SPIP.</p>
<p>Incidentally, for those of you who have subscribed to our RSS feed, I&#8217;m afraid that, due to the fact that we&#8217;ve had to move WordPress into a new directory, the direct link to its RSS feed is now broken. Apologies for that but WordPress provides no (obvious) way of maintaining the directory structure to a feed when the software itself is moved. At any rate, we&#8217;ll have a new Feed online soon when SPIP is up and running.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/05/11/major-update-to-the-sapphire-in-steel-site/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby In Steel - Rails Support?</title>
		<link>http://sapphiresteel.com/wpblog/2006/05/10/ruby-in-steel-rails-support/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/05/10/ruby-in-steel-rails-support/#comments</comments>
		<pubDate>Wed, 10 May 2006 15:49:28 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>news</category>
	<category>ruby</category>
	<category>steel</category>
	<category>rails</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/05/10/ruby-in-steel-rails-support/</guid>
		<description><![CDATA[People have been asking us if we&#8217;ll be providing support for Rails programming in Steel. The answer, in brief, is: yes! Absolutely. We plan to provide full, integrated support for Rails programming in a future release. We&#8217;ll soon be publishing a revised Roadmap to give more detail of  features in development and our proposed release schedule.

]]></description>
			<content:encoded><![CDATA[<p>People have been asking us if we&#8217;ll be providing support for Rails programming in Steel. The answer, in brief, is: yes! Absolutely. We plan to provide full, integrated support for Rails programming in a future release. We&#8217;ll soon be publishing a revised <a href="http://www.sapphiresteel.com/static/pages/software/download.html">Roadmap</a> to give more detail of  features in development and our proposed release schedule.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/05/10/ruby-in-steel-rails-support/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby In Steel - screenshots of debugger</title>
		<link>http://sapphiresteel.com/wpblog/2006/05/08/ruby-in-steel-screenshots-of-debugger/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/05/08/ruby-in-steel-screenshots-of-debugger/#comments</comments>
		<pubDate>Mon, 08 May 2006 12:48:14 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>ruby</category>
	<category>steel</category>
	<category>programming</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/05/08/ruby-in-steel-screenshots-of-debugger/</guid>
		<description><![CDATA[We’ve made much better progress than we’d anticipated with the Ruby debugger for Visual Studio. Initially we had planned the debugger in 0.6 release of Ruby In Steel to take the form of breakpoints plus a ‘code evaluation’ window. In fact, we have come much further than that. It will now include the following features:

breakpoints
locals  [...]]]></description>
			<content:encoded><![CDATA[<p>We’ve made much better progress than we’d anticipated with the Ruby debugger for Visual Studio. Initially we had planned the debugger in 0.6 release of <strong>Ruby In Steel</strong> to take the form of breakpoints plus a ‘code evaluation’ window. In fact, we have come much further than that. It will now include the following features:</p>
<ul>
<li>breakpoints</li>
<li>locals  window</li>
<li>drag-and-drop watch variables</li>
<li>call stack</li>
<li>tracing with step into / step over</li>
<li>interactive debugging console</li>
</ul>
<p><img id="image24" alt="Ruby In Steel Debugger" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/0_6_debugging.gif" /> </p>
<p>This is still some way short of the complete debugging which we have planned. For example, the 0.6 release won’t have conditional breakpoints, ‘drilling down’ into variables or the ability to change the values of variables while debugging; we’ll be adding these features in a later version. Let’s take a quick run through the features it will have…</p>
<p><strong>Breakpoints</strong></p>
<p><img id="image25" alt="breakpoints" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/0_6_breakpoints.gif" /></p>
<p>Steel lets you add breakpoints to your Ruby programs by clicking in the margin of selected code lines. You can selectively enable/disable selected (or all) breakpoints in this breakpoints window.</p>
<p><strong>Locals</strong></p>
<p> <img id="image26" alt="0_6_locals.gif" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/0_6_locals.gif" /></p>
<p>The Locals window automatically monitors and displays the values of local variables</p>
<p><strong>Watch</strong></p>
<p> <img id="image27" alt="watch" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/0_6_watch.gif" /></p>
<p>You can enter the names of variables (or drag and drop variables from the editor window) in the Watch pane</p>
<p><strong>Call Stack</strong></p>
<p> <img id="image28" alt="call stack" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/0_6_callstack.gif" /></p>
<p>When your code is running several methods deep you can see this instantly in the Call Stack pane</p>
<p><strong>Debug Console</strong></p>
<p> <img id="image29" alt="debug console" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/0_6_debug_console.gif" /></p>
<p>The interactive console not only display the output from the program you are debugging; it also lets you evaluate expressions – for example, enter the name of an object to inspect it or call a specific method to see the return value.</p>
<p>Beta version 0.6 of Ruby In Steel will be available for download from this site by the end of May.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/05/08/ruby-in-steel-screenshots-of-debugger/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby Debugger in Steel - Latest News</title>
		<link>http://sapphiresteel.com/wpblog/2006/05/03/ruby-debugger-in-steel-latest-news/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/05/03/ruby-debugger-in-steel-latest-news/#comments</comments>
		<pubDate>Wed, 03 May 2006 19:50:41 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>news</category>
	<category>ruby</category>
	<category>steel</category>
	<category>programming</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/05/03/ruby-debugger-in-steel-latest-news/</guid>
		<description><![CDATA[
Ah, it&#8217;s such a relief to have some decent debugging at last! We are currently working on beta 0.6 of Ruby In Steel (which will be available for download at the end of May). The big new feature in this version is the debugger. Currently this is still in its very early days, so don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image22" alt="Ruby Debugger" src="http://sapphiresteel.com/wpblog/wp-content/uploads/2006/05/steel-debugger-one.gif" /></p>
<p>Ah, it&#8217;s such a relief to have some decent debugging at last! We are currently working on beta 0.6 of <strong>Ruby In Steel</strong> (which will be available for download at the end of May). The big new feature in this version is the debugger. Currently this is still in its very early days, so don&#8217;t expect to have all the bells and whistles available in C# (<em>yet</em>). We&#8217;ll be bolting on a few more bells and whistles in a later version. For now we are integrating the &#8217;standard&#8217; Ruby debugging features. So far we have point-and-click breakpoints and the ability to trace into and over your code using the usual Visual Studio keystrokes. The debug inspection itself is done at an interactive prompt. So, when you hit a breakpoint you can, for example, print or inspect variables and evaluate expressions. Later on we&#8217;ll be adding in the usual Visual Studio inspector windows to let you watch and drill down into variables. There&#8217;s still a lot of work to be done to get all those goodies added into the mix. For now, though, I am still on a slight high at being able to do visual debugging and tracing of Ruby programs at all&#8230; <img src='http://sapphiresteel.com/wpblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/05/03/ruby-debugger-in-steel-latest-news/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby debuggers</title>
		<link>http://sapphiresteel.com/wpblog/2006/04/24/ruby-debuggers/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/04/24/ruby-debuggers/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 20:42:59 +0000</pubDate>
		<dc:creator>Dermot</dc:creator>
		
	<category>ruby</category>
	<category>steel</category>
	<category>visual studio integration</category>
	<category>programming</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/04/24/ruby-debuggers/</guid>
		<description><![CDATA[I’ve now got the basic debugger more or less sorted. The next step in to build an ‘expression evaluator’ so that the watch window will work. It doesn’t look too bad, but it’s another half dozen or so COM interfaces to implement. The problem with this stuff is that it’s so low level. But to [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve now got the basic debugger more or less sorted. The next step in to build an ‘expression evaluator’ so that the watch window will work. It doesn’t look too bad, but it’s another half dozen or so COM interfaces to implement. The problem with this stuff is that it’s so low level. But to be honest, I can’t figure out a way Microsoft could have done it and yet retain the flexibility required to cover almost any situation.</p>
<p>For example, breakpoints aren’t just a simple ‘stop here’ sort of thing. You can have many breakpoints coming off one ‘pending’ breakpoint – breakpoints that only fire when a particular condition occurs, say. The these can either be ‘bound’ or in ‘error’. For a simple debugger like my current one, this is overkill, but you still have to abide by the Visual Studio model.</p>
<p>While doing the debugger, I did some research on existing Ruby debuggers. The results were quite interesting. The standard Ruby debugger, debug.rb, apparently executes around 100 times slower than running Ruby code without the debugger. Now that’s simply horrible. I wouldn’t want to debug any serious program with that. Active State have improved on this with their debugger to around 50 times. Better, but still unusable for a large program, I would think. Both of these debuggers use the tracing mechanism built into the Ruby interpreter to get a hook into the evaluator event source. However, it’s a pretty unsatisfactory way to go about things.</p>
<p>The last one I looked at was Arachno Ruby. This seems to have a 50 percent slowdown. That’s more like it! The problem is that Arachno has had to patch the Ruby interpreter to get this to work and patched interpreters are bad news. Not only are they non-standard, but you have to maintain them as well. Arachno currently doesn’t support 1.8.4 for example.</p>
<p>However, I’ve figured out a better way of running the Ruby interpreter in a fast debug mode without patching it. The trouble is, it isn’t at all easy to implement. The current Steel debugger (beta 0.6, not yet released) is just using the original slow debug.rb. The fast debugger will have to wait for the commercial version of Steel.</p>
<p>I had a good look at Arachno. Nice ideas there but there’s something slightly amiss. Say you want to write an IDE for Ruby, Perl, PHP and Python. Ok, ambitious – but doable: Active State have something there along those lines; probably taken them well over 20 man-years at a guess. Now let’s add in the fact that you want to be able to run it on Windows, Linux and Mac OS. Hmm, that’s challenging: making things portable is hard – just look at the work that’s gone into Ruby. So what do you chose to write it in: GNU Eiffel and some open source graphics package?? Now, that’s the heroic school of programming. The result (I’m guessing really) seems to have been that Arachno has spent a fair bit of time getting these wonderful open source things to work properly. That’s great if you have the time, money and inclination (personally I don’t). Still, I wish Arachno well.</p>
<p>Building an IDE of any sort is a  big job (far more than one person can reasonably undertake). That’s why I’ve decided to stick firmly to Visual Studio – and that’s difficult enough. It does limit the scope to Ruby on Windows, but I’m happy with that for two reasons. First, I think it’s doable by two people in a reasonable timeframe. And secondly, there doesn’t seem to be any money in Linux products. Over and over again, I’ve seen companies produce stuff for Linux (Borland with Kylix is a notable example) only to withdraw after a short while. It’s true that a number of people have made money out of support for open source products. But I don’t know of many that have made money out of the raw product itself.</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/04/24/ruby-debuggers/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby In Steel IDE - first beta now available</title>
		<link>http://sapphiresteel.com/wpblog/2006/04/23/ruby-in-steel-ide-first-beta-now-available/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/04/23/ruby-in-steel-ide-first-beta-now-available/#comments</comments>
		<pubDate>Sun, 23 Apr 2006 19:41:35 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>news</category>
	<category>ruby</category>
	<category>steel</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/04/23/ruby-in-steel-ide-first-beta-now-available/</guid>
		<description><![CDATA[The first public beta of the Steel IDE for programming Ruby in Visual Studio 2005 is now available for download. Ruby In Steel 0.5.12 provides syntax sensitive code colouring and collapsing; a fully integrated interactive console which can be docked within the Visual Studio environment; integrated syntax error handling - click on the error message [...]]]></description>
			<content:encoded><![CDATA[<p>The first public beta of the <strong>Steel IDE</strong> for programming Ruby in Visual Studio 2005 is now available for download. Ruby In Steel 0.5.12 provides syntax sensitive code colouring and collapsing; a fully integrated interactive console which can be docked within the Visual Studio environment; integrated syntax error handling - click on the error message to locate the problem line in your source code; automatic bracket highlighting; bracket matching to move your cursor between brackets; a project management pane in which you can arrange groups of Ruby projects as branches in a tree; auto-commenting and uncommenting of Ruby code; plus many of the same editing features you would expect in any Visual Studio project such as multi-level undo/redo, split-window editing; toggle-bookmark and find/replace with regular expressions.</p>
<p>From now on, we shall be issuing regularly updated beta versions of Ruby In Steel (at one or two monthly intervals) with new features added in each release.</p>
<p><a href="http://www.sapphiresteel.com/static/pages/software/download.html">Download Ruby In Steel</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/04/23/ruby-in-steel-ide-first-beta-now-available/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Using Ruby Strings</title>
		<link>http://sapphiresteel.com/wpblog/2006/04/15/using-ruby-strings/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/04/15/using-ruby-strings/#comments</comments>
		<pubDate>Sat, 15 Apr 2006 12:42:26 +0000</pubDate>
		<dc:creator>Huw</dc:creator>
		
	<category>news</category>
	<category>ruby</category>
	<category>steel</category>
	<category>programming</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/04/15/using-ruby-strings/</guid>
		<description><![CDATA[In most programming languages, strings are pretty dull things. Ruby&#8217;s strings are a whole lot more interesting, however. They let you do anything from evaluating program code to launching external applications. They also come in a bewildering variety which, to be frank, is pretty damn&#8217; confusing to a newcomer to the language.
The latest article in [...]]]></description>
			<content:encoded><![CDATA[<p>In most programming languages, strings are pretty dull things. Ruby&#8217;s strings are a whole lot more interesting, however. They let you do anything from evaluating program code to launching external applications. They also come in a bewildering variety which, to be frank, is pretty damn&#8217; confusing to a newcomer to the language.</p>
<p>The latest article in the <a href="http://www.bitwisemag.com/copy/programming/ruby/intro/1/ruby3.html" target="_blank">Bitwise Guide To Ruby</a> cuts through the confusion of Ruby strings. If you are new to Ruby, I hope you&#8217;ll find it useful.</p>
<p>Meanwhile, for the benefit of anyone who&#8217;s keen to know when we&#8217;ll finally be putting online a version of the <strong>Ruby In Steel IDE</strong> for Visual Studio Studio 2005. Well, we&#8217;ve already committed ourselves to a first public beta before the end of April - and that commitment stands. We&#8217;re mid-way through April at the moment, so that gives us a couple more weeks to smooth out the wrinkles and iron out the bugs. ;)</p>
<p>Keep an eye on this site for more news&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/04/15/using-ruby-strings/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Debug bootstrap</title>
		<link>http://sapphiresteel.com/wpblog/2006/04/11/debug-bootstrap/</link>
		<comments>http://sapphiresteel.com/wpblog/2006/04/11/debug-bootstrap/#comments</comments>
		<pubDate>Tue, 11 Apr 2006 22:08:42 +0000</pubDate>
		<dc:creator>Dermot</dc:creator>
		
	<category>steel</category>
	<category>visual studio integration</category>
	<category>programming</category>
		<guid isPermaLink="false">http://sapphiresteel.com/2006/04/11/debug-bootstrap/</guid>
		<description><![CDATA[It&#8217;s taken me a good five days to get my head round the Visual Studio Debugger. For my first attempt, I tried to trap the Set Breakpoint command and go from there. Nope. Not even close. The debugger is a lot more complicated than that. It&#8217;s not made any easier by having documentation that&#8217;s aimed [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s taken me a good five days to get my head round the Visual Studio Debugger. For my first attempt, I tried to trap the Set Breakpoint command and go from there. Nope. Not even close. The debugger is a lot more complicated than that. It&#8217;s not made any easier by having documentation that&#8217;s aimed at a C++ implementation rather than a C# one. After a fruitless day spent trying to hack it in C#, I worked through the TextInterpreter example (which doesn&#8217;t work properly in the beta VSIP SDK I&#8217;m currently using). Even though it&#8217;s in C++, I got the general idea and was able to build a managed version reasonably easily - I&#8217;d definitely start with the C++ tutorial if I was doing it again.</p>
<p>The main problem with the debugger is that to build a simple (let alone one that lets you &#8216;edit and run&#8217;, say) you have to implement about ten COM interfaces. Then you have to build some sort of state machine on it&#8217;s own thread - plus any worker threads to handle the input and output to the Ruby interpreter itself. Each of the COM interface names starts with &#8216;IDebug&#8217; so there&#8217;s IDebugProcess, IDebugProgram, IDebugProgramNode - and so on. Damned confusing. Then each interface has about ten methods and while they don&#8217;t all need coding, they need to be considered. It&#8217;s not a small job - and that&#8217;s before you get to any Ruby stuff.</p>
<p>One thing that struck me as I was doing the C# bits after the C++ tutorial, was how much faster it is to code in C#. Even with the ATL wizard, it still takes a lot longer than implementing the same interfaces with C#. I have to say that I&#8217;m coming round to the idea that Microsoft has done a reasonable job with COM and C#.</p>
<p>In passing, I found a tricky problem with the basic  IDE. The Steel splash icon had vanished (this appears on the Visual Studio startup splash screen along with C#, VB, etc.). The thing was, it had been visible in the past - but no longer! It turns out that the splash icons and menu commands are installed when you do a &#8216;devenv /setup&#8217; command. But setup works differently from when you just run the IDE. In particular, the DTE automation isn&#8217;t initialised. The IDE setup sequence calls the package &#8216;Initialize&#8217; command before the splash icon is loaded. If you try to access automation in the package Initialise, an exception is thrown and the icon loading is never called! Worse, nothing tells you this interesting fact. You have to turn logging on and look in the log file. The solution is to test for a null DTE in Initialize: if you are running setup, this is null, otherwise it&#8217;s set to something sensible.</p>
<p>I&#8217;m a big fan of VSIP, but it sure isn&#8217;t simple. There&#8217;s just a lot of stuff to learn.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://sapphiresteel.com/wpblog/2006/04/11/debug-bootstrap/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
