<?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>Dysfunctional Programming &#187; projects</title>
	<atom:link href="http://www.joshmatthews.net/blog/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joshmatthews.net/blog</link>
	<description>/* You are not expected to understand this */</description>
	<lastBuildDate>Tue, 24 Jan 2012 20:50:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>smartmake redux: harder, better, faster, stronger</title>
		<link>http://www.joshmatthews.net/blog/2012/01/smartmake-redux-harder-better-faster-stronger/</link>
		<comments>http://www.joshmatthews.net/blog/2012/01/smartmake-redux-harder-better-faster-stronger/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 20:43:21 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=150</guid>
		<description><![CDATA[Do you get frustrated about how long it takes to build Firefox after you&#8217;ve only made a small change to a single file? Have you heard the words &#8220;incremental build&#8221;, or tried to only build one or two directories but can&#8217;t figure out why your changes aren&#8217;t showing up? You are not alone. I released [...]]]></description>
			<content:encoded><![CDATA[<p>Do you get frustrated about how long it takes to build Firefox after you&#8217;ve only made a small change to a single file? Have you heard the words &#8220;incremental build&#8221;, or tried to only build one or two directories but can&#8217;t figure out why your changes aren&#8217;t showing up?</p>
<p>You are not alone.</p>
<p>I released my <a href="http://hg.mozilla.org/users/josh_joshmatthews.net/smartmake">smartmake</a> tool last year to allow people to specify then directories they&#8217;ve changed, and in return the tool would perform a correct incremental build. No hassle, no sweat. The name was deceptive; it was a pretty dumb tool, but it got the job done with a little help from the user. However, there is a rule that any build system tool eventually reimplements the functionality of make, and so I am proud to release <a href="http://hg.mozilla.org/users/josh_joshmatthews.net/smartmake">smartmake v2</a>, which requires less work than ever before to produce correct incremental builds.</p>
<p>Thanks to the hard work of the illustrious Till Schneidereit (till on IRC), smartmake now finds every source file modified since the last time you performed an incremental build, and performs a (mostly) minimal rebuild. It will also complain if it comes across any modified files for which it doesn&#8217;t have any dependency information, and suggest you perform a full build instead.</p>
<p>Go ahead, give it a shot! Tell me (or Till) what goes wrong so that we can fix it. I recommend doing a full build, then making a small change and running <code>smartmake.py '5 minutes ago'</code> to kick it off and get the timestamp caching happening.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2012/01/smartmake-redux-harder-better-faster-stronger/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Firefox regression hunter VM!</title>
		<link>http://www.joshmatthews.net/blog/2012/01/a-firefox-regression-hunter-vm/</link>
		<comments>http://www.joshmatthews.net/blog/2012/01/a-firefox-regression-hunter-vm/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 09:03:56 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=143</guid>
		<description><![CDATA[I am happy to announce the first public unveiling of my Fox in a Box project. The enthusiasm for my idea of putting together a dev VM was loud and clear in my last post, mainly from testers who expressed interest in hunting regressions at a more granular level. The README in the first link [...]]]></description>
			<content:encoded><![CDATA[<p>I am happy to announce the first public unveiling of my <a href="https://github.com/jdm/foxinabox">Fox in a Box</a> project. The enthusiasm for my idea of putting together a dev VM was loud and clear in <a href="http://www.joshmatthews.net/blog/2011/10/a-firefox-dev-vm/">my last post</a>, mainly from testers who expressed interest in hunting regressions at a more granular level. The README in the first link hopefully contains enough details for anybody to get themselves set up with a minimal Ubuntu 11.04 VM with a preset clone of mozilla-central ready to build. I experienced clobber build times of 30-45 minutes in my tests; your mileage may vary. So please, run <code>$ git clone git://github.com/jdm/foxinabox.git</code>, follow the README and let me know how it goes for you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2012/01/a-firefox-regression-hunter-vm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Fast and the Furious: bzexport</title>
		<link>http://www.joshmatthews.net/blog/2011/07/the-fast-and-the-furious-bzexport/</link>
		<comments>http://www.joshmatthews.net/blog/2011/07/the-fast-and-the-furious-bzexport/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 23:18:03 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=126</guid>
		<description><![CDATA[If you&#8217;re a bzexport user, you&#8217;ll want to pull the latest revision. It&#8217;s recently been getting slower due to the number of http requests that need to be made (the tradeoff here is that it&#8217;s also been getting more correct), but I&#8217;ve pushed three patches that have reversed that downward slide into the molasses. By [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re a <a href="http://hg.mozilla.org/users/tmielczarek_mozilla.com/bzexport/">bzexport</a> user, you&#8217;ll want to pull the latest revision. It&#8217;s recently been getting slower due to the number of http requests that need to be made (the tradeoff here is that it&#8217;s also been getting more correct), but I&#8217;ve pushed three patches that have reversed that downward slide into the molasses. By sending more data than is strictly necessary, caching information such as user name to email translations, and avoiding fetching data that rarely changes, I&#8217;ve noticeably improved the running time of bzexport on my machine. Give it a shot!</p>
<p>If you&#8217;re not a bzexport user, and you write patches that are submitted to bugzilla, you&#8217;re missing out. Bzexport simplifies that process of getting a patch out of your local machine and into the hands of your reviewer, making you a happier and more productive person.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2011/07/the-fast-and-the-furious-bzexport/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nsCOMPtr has never been so pretty</title>
		<link>http://www.joshmatthews.net/blog/2011/06/nscomptr-has-never-been-so-pretty/</link>
		<comments>http://www.joshmatthews.net/blog/2011/06/nscomptr-has-never-been-so-pretty/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 20:39:52 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=117</guid>
		<description><![CDATA[Jim Blandy announced his archer-mozilla pretty-printers for Spidermonkey late last year. I&#8217;ve used them a few times while working on some JS proxy bugs, and I&#8217;ve found them to be invaluable. So invaluable, in fact, that I&#8217;ve written a bunch of pretty-printers for some pain points outside of js/. If this prospect excites you so [...]]]></description>
			<content:encoded><![CDATA[<p>Jim Blandy announced his <a href="http://itcouldbesomuchbetter.wordpress.com/2010/12/20/debugging-spidermonkey-with-archer-2/">archer-mozilla</a> pretty-printers for Spidermonkey late last year. I&#8217;ve used them a few times while working on some JS proxy bugs, and I&#8217;ve found them to be invaluable. So invaluable, in fact, that I&#8217;ve written a bunch of pretty-printers for some pain points outside of js/.  If this prospect excites you so much that you can&#8217;t be bothered to read the remaining examples, you can acquire the code from <a href="http://hg.mozilla.org/users/josh_joshmatthews.net/archer-mozilla/">its hg repo</a>. Please note, you&#8217;ll need to be using gdb >7.2 (meaning probably <a href="http://www.gnu.org/software/gdb/current/">trunk</a> at the time of writing) due to dependencies on the dynamic_type feature which was recently added.</p>
<h2>What&#8217;s supported right now:</h2>
<h3>nsCOMPtr&lt;nsIFoo&gt;</h3>
<p>If you print an nsCOMPtr, you&#8217;ll see one of two things:<br />
<code>[(nsIFoo*) 0x0]</code><br />
or<br />
<code>[(nsConcreteFoo*) 0x12345678]</code></p>
<p>In addition, pretty-printers chain, so if there&#8217;s a pretty printer for nsConcreteFoo*, you&#8217;ll see that printed instead of just the pointer value.  Furthermore, nsRefPtr and nsAutoPtr are also supported, and maybe nsWeakPtr (untested).</p>
<h3>nsCString/nsString</h3>
<p>It prints the string inline, up to the limit specified by gdb. This probably only works for ascii strings at the moment; the code is a bit of a mess.</p>
<h3>nsTArray/InfallibleTArray</h3>
<p>You&#8217;ll get output along the lines of <code>[0x12345678, 0x12345678]</code> at the moment. Like the smart pointers, each printed element will be pretty-printed if possible.</p>
<h3>nsStandardURL*</h3>
<p>You&#8217;ll see the spec printed. This works wonderfully when you&#8217;re looking at an object with nsCOMPtr&lt;nsIURI&gt; foo, where foo is actually pointing to an nsStandardURL object.</p>
<h3>Tagged reference counts</h3>
<p>You know in cycle-collected objects when the refcount shows you <code>mTagged = 0x8</code>? Yeah, not any more.</p>
<h3>PRPackedBool</h3>
<p>I found the existing display of <code>mBoolVal = 1 '\001'</code> to be silly.</p>
<h2>What&#8217;s coming up?</h2>
<p>I&#8217;ve got a list of things that still need fixing/improving, and I&#8217;m open to suggestions/patches.</p>
<ul>
<li>Auto arrays &#8211; the kinda-sorta work right now, but it looks gross.</li>
<li>COM/void/observer arrays &#8211; don&#8217;t work at all</li>
<li>Hashtables &#8211; don&#8217;t work at all right now</li>
<li>Stricter regexes for matching types &#8211; things like pointers to arrays are matched by the nsTArray printer right now</li>
<li>Auto strings &#8211; I don&#8217;t remember if they don&#8217;t work at all or semi-work</li>
<li>PRUnichar* &#8211; doesn&#8217;t work.</li>
</ul>
<p>and so on and so forth. It&#8217;s really not difficult to write more printers, and it improves the output of gdb immensely in my opinion. Give it a shot! The instructions for how to set this up can be found in the README file. You&#8217;ll need a version of gdb > 7.2 (probably trunk, at the time of writing), since my printers rely on gdb.Type.dynamic_type.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2011/06/nscomptr-has-never-been-so-pretty/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cancelling builds from the console, now easier than ever!</title>
		<link>http://www.joshmatthews.net/blog/2011/04/build-cancellation-from-the-console-gets-some-loving/</link>
		<comments>http://www.joshmatthews.net/blog/2011/04/build-cancellation-from-the-console-gets-some-loving/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 18:19:29 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=103</guid>
		<description><![CDATA[The self-serve tools, specifically cancel.py has received some important usability upgrades at the urging of jst and ehsan. Now, simply running python cancel.py will be enough to get you going &#8211; you&#8217;ll be prompted for your username, password, branch and hg revision. The builds displayed also show their state (running, pending or complete) as well, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hg.mozilla.org/users/josh_joshmatthews.net/self-serve-tools/">The self-serve tools</a>, specifically cancel.py has received some important usability upgrades at the urging of jst and ehsan.  Now, simply running
<pre>python cancel.py</pre>
<p> will be enough to get you going &#8211; you&#8217;ll be prompted for your username, password, branch and hg revision.  The builds displayed also show their state (running, pending or complete) as well, so it&#8217;s easier to find what you&#8217;re looking for.  Let me know if there are more changes you&#8217;d like made!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2011/04/build-cancellation-from-the-console-gets-some-loving/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Self-serve, now in bulk</title>
		<link>http://www.joshmatthews.net/blog/2011/03/self-serve-now-in-bulk/</link>
		<comments>http://www.joshmatthews.net/blog/2011/03/self-serve-now-in-bulk/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 03:38:06 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=92</guid>
		<description><![CDATA[Update: the tool is now easier to use and doesn&#8217;t require adding your password as an argument. See this post for more details. I&#8217;m a big fan of the self-serve tool that RelEng provided for people with LDAP access. When I can see a try build going bad, I can cancel all the remaining builds [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> the tool is now easier to use and doesn&#8217;t require adding your password as an argument. See <a href="http://www.joshmatthews.net/blog/2011/04/build-cancellation-from-the-console-gets-some-loving/">this post</a> for more details.</p>
<p>I&#8217;m a big fan of the <a href="https://build.mozilla.org/buildapi/self-serve/">self-serve tool</a> that RelEng provided for people with LDAP access.  When I can see a try build going bad, I can cancel all the remaining builds and free up resources, or retrigger completed builds if I want to get extra results.  Unfortunately, the server is fairly slow to respond and the UI to perform these actions is clumsy.  Luckily, there&#8217;s a really simple API available to allow anyone with access to make use of these tools in more traditional (read: non-graphical) means.  Allow me to introduce you to a new repo I set up today to make working with the self-serve API easier &#8211; <a href="http://hg.mozilla.org/users/josh_joshmatthews.net/self-serve-tools/">self-serve tools</a>.  <code>selfserve.py</code> contains simple wrappers for every API point exposed, and some basic documentation of the values returned by most of the calls.  <code>cancel.py</code> is an example of a really simple tool that can be built on top of the wrappers to allow for bulk cancellation.  Here&#8217;s what a session looks like:</p>
<pre>[jdm@Phaethon self-serve-tools]$ python cancel.py -u "jmatthews@mozilla.com" -p my5ecureP4ssword123 -r 306838f27b33 -b try
1: Linux x86-64 tryserver leak test build
2: Linux tryserver build
3: OS X 10.6.2 tryserver build
4: WINNT 5.2 tryserver build
5: Maemo 5 QT tryserver build
6: OS X 10.6.2 tryserver leak test build
7: Maemo 5 GTK tryserver build
8: Android R7 tryserver build
9: Linux tryserver leak test build
10: WINNT 5.2 tryserver leak test build
11: OS X 10.5.2 tryserver leak test build
12: Linux QT tryserver build
13: Linux x86-64 tryserver build
14: all
Builds to cancel: 1 3 5
Cancelling Linux x86-64 tryserver leak test build
Cancelling OS X 10.6.2 tryserver build
Cancelling Maemo 5 QT tryserver build
</pre>
<p>This is just the first cut, but I&#8217;m excited not to have to use the web interface any more.  Please feel free to add further documentation, or even new tools!  I&#8217;m excited to see what other people can build with this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2011/03/self-serve-now-in-bulk/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve seen the future, brother: it is dynamic additions to the status bar that don&#8217;t block the main process.</title>
		<link>http://www.joshmatthews.net/blog/2010/03/ive-seen-the-future-brother-it-is-dynamic-additions-to-the-status-bar-that-dont-block-the-main-process/</link>
		<comments>http://www.joshmatthews.net/blog/2010/03/ive-seen-the-future-brother-it-is-dynamic-additions-to-the-status-bar-that-dont-block-the-main-process/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 21:04:45 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=69</guid>
		<description><![CDATA[You&#8217;re looking at a mind-bogglingly alpha Jetpack prototype running out of process. Yesterday was a black triangle moment for me, as I finally saw the culmination of 2.5 months of work to make the words &#8220;Gmail it&#8221; appear in the status bar. In this implementation, when a Jetpack tries to do something that doesn&#8217;t really [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joshmatthews.net/blog/stuffz/oopj.png"><img src="http://www.joshmatthews.net/blog/stuffz/oopj.png" alt="" title="Out of process Jetpack" ></a></p>
<p>You&#8217;re looking at a mind-bogglingly alpha Jetpack prototype running out of process.  Yesterday was a <a href="http://philosophistry.com/archives/2009/01/what-is-a-black.html">black triangle moment</a> for me, as I finally saw the culmination of 2.5 months of work to make the words &#8220;Gmail it&#8221; appear in the status bar.</p>
<p>In this implementation, when a Jetpack tries to do something that doesn&#8217;t really make sense in its own process (say, adding an element to the status bar), it proxies this operation to the chrome process and continues on its way.  Theoretically this allows the main chrome to focus on important things like being responsive or not freezing, so the main work of running Jetpack scripts can be delegated to another process.</p>
<p>There&#8217;s lots and lots more work from here (for example, clicking &#8220;Gmail it&#8221; does nothing for various reasons I need to explore), but this inauspicious screenshot demonstrates that the out of process future is alive and kicking!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2010/03/ive-seen-the-future-brother-it-is-dynamic-additions-to-the-status-bar-that-dont-block-the-main-process/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Megazeux debugger on github</title>
		<link>http://www.joshmatthews.net/blog/2010/03/megazeux-debugger-on-github/</link>
		<comments>http://www.joshmatthews.net/blog/2010/03/megazeux-debugger-on-github/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 10:14:45 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[megazeux]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=65</guid>
		<description><![CDATA[The official Megazeux repository recently moved to github, allowing me the opportunity to create my own fork and move my debugger work into a more public sphere. Accordingly, you can now visit my repo for all the most recent robotic debugging developments.]]></description>
			<content:encoded><![CDATA[<p>The official <a href="http://www.github.com/ajs1984/megazeux">Megazeux repository</a> recently moved to github, allowing me the opportunity to create my own fork and move my debugger work into a more public sphere.  Accordingly, you can now visit <a href="http://www.github.com/jdm/megazeux">my repo</a> for all the most recent robotic debugging developments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2010/03/megazeux-debugger-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-compiling with MinGW on Fedora</title>
		<link>http://www.joshmatthews.net/blog/2010/02/cross-compiling-with-mingw-on-fedora/</link>
		<comments>http://www.joshmatthews.net/blog/2010/02/cross-compiling-with-mingw-on-fedora/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 13:22:29 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[megazeux]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=55</guid>
		<description><![CDATA[My goodness, I&#8217;m impressed. Having released the first iteration of my robotic debugger, I was informed that the fork()/exec() combo isn&#8217;t portable to Windows. Nobody volunteered any patches immediately, so I decided to read up on cross-compiling since I really dislike having to reboot into my other partition. Turns out that the entire MinGW stack [...]]]></description>
			<content:encoded><![CDATA[<p>My goodness, I&#8217;m impressed.  Having <a href="http://www.digitalmzx.net/forums/index.php?showtopic=14776&#038;hl=">released</a> the first iteration of my robotic debugger, I was informed that the fork()/exec() combo isn&#8217;t portable to Windows.  Nobody volunteered any patches immediately, so I decided to read up on cross-compiling since I really dislike having to reboot into my other partition.  Turns out that the entire MinGW stack has been packaged up for Fedora, meaning that all I had to do in the end was:<br />
<code># yum install mingw32-gcc mingw32-gcc-c++ mingw32-libpng mingw32-SDL<br />
$ mingw32-make -j2</code></p>
<p>It wasn&#8217;t quite that easy &#8211; since Megazeux uses a non-standard configure script, I had to correct a few faulty assumptions.  I never figured out the correct way to use
<pre>/usr/i686-pc-mingw32/sys-root/mingw/bin/sdl-config</pre>
<p> instead of the default one, so that got hardcoded somewhere.  Also, Megazeux relies on libogg and libvorbis, which haven&#8217;t been pushed to the fedora repository yet (packaging limbo ahoy!), but I was able to grab some rpms that the mingw32 packager helpfully left lying around.  All in all, a very successful and satisfying experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2010/02/cross-compiling-with-mingw-on-fedora/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Break me off a piece of that Megazeux debugger</title>
		<link>http://www.joshmatthews.net/blog/2010/01/break-me-off-a-piece-of-that-megazeux-debugger/</link>
		<comments>http://www.joshmatthews.net/blog/2010/01/break-me-off-a-piece-of-that-megazeux-debugger/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 22:45:31 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[megazeux]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=53</guid>
		<description><![CDATA[Breaking news: breakpoints now exist in the debugger. There&#8217;s no indication that they exist until execution reaches them unless you look in the console window , but they&#8217;re there! Next up: differentiating between active line, current line, and line + breakpoint in the robot editor syntax highlighting. Apart from that, the debugger is now fairly [...]]]></description>
			<content:encoded><![CDATA[<p>Breaking news: breakpoints now exist in the debugger.  There&#8217;s no indication that they exist until execution reaches them unless you look in the console window , but they&#8217;re there!  Next up: differentiating between active line, current line, and line + breakpoint in the robot editor syntax highlighting.  Apart from that, the debugger is now fairly functional &#8211; stepping, continuing, and breaking, and most importantly quitting are all zipping along as happy as can be.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2010/01/break-me-off-a-piece-of-that-megazeux-debugger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

