<?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>DMDirc Development Blog &#187; General</title>
	<atom:link href="http://blog.dmdirc.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dmdirc.com</link>
	<description>DMDirc Development Blog</description>
	<lastBuildDate>Wed, 24 Mar 2010 07:53:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Intelligent channel names</title>
		<link>http://blog.dmdirc.com/2010/03/24/intelligent-channel-names/</link>
		<comments>http://blog.dmdirc.com/2010/03/24/intelligent-channel-names/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 07:53:09 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Intelligence]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=292</guid>
		<description><![CDATA[As you can probably gather from DMDirc&#8217;s tagline, we like making DMDirc act intelligently. One of our latest set of changes revolves around intelligent handling of channel names. Say you join a channel and a friendly person advises you to try some others out for size: &#60;Person&#62; Hey, you, why don't you join #channel2 (and [...]]]></description>
			<content:encoded><![CDATA[<p>As you can probably gather from DMDirc&#8217;s tagline, we like making DMDirc act intelligently. One of our latest set of changes revolves around intelligent handling of channel names. Say you join a channel and a friendly person advises you to try some others out for size:</p>
<p><code>&lt;Person&gt; Hey, you, why don't you join #channel2 (and maybe #channel3)?</code></p>
<p>DMDirc now applies the same intelligent linking algorithms we use for URLs to channel names, so we can intelligently figure out what was probably meant to be part of the channel name, and what was punctuation following it. With our new &#8220;<code>stylechannels</code>&#8221; option enabled, that message will show up as:</p>
<p><code>&lt;Person&gt; Hey, you, why don't you join <span style="color: green;text-decoration: underline">#channel2</span> (and maybe <span style="color: green;text-decoration: underline">#channel3</span>)?</code></p>
<p>As you can see, we now correctly realise that the &#8220;)&#8221; and &#8220;?&#8221; at the end of #channel3 probably weren&#8217;t intended to be part of the channel name. And with <code>stylechannels</code> enabled you&#8217;ll be able to see exactly where you&#8217;re going to end up before clicking.</p>
<p>But we&#8217;re not done yet! What if you&#8217;re more of a keyboard aficionado than a mouse lover? You want to use the /join command, but don&#8217;t think there&#8217;s an easy way to get that channel name that was just mentioned without copying it by hand or resorting to the mouse? Think again &#8211; DMDirc now has intelligent tab completion for its /join command. This keeps an eye out for any linked channel names, and suggests any you&#8217;re not already in when you hit tab! So after our friendly user suggests two channels to us, we can type:</p>
<p><code>/join <em>&lt;tab&gt;</em></code></p>
<p>And DMDirc will suggest <code>#channel2</code> and <code>#channel3</code>. What&#8217;s more, if you decide you want to join multiple channels, recent upgrades to our tab completer allow the join command to offer useful suggestions if you comma-separate the channels:</p>
<p><code>/join #help,<em>&lt;tab&gt;</em></code></p>
<p>Will offer the suggestions <code>#help,#channel2</code> and <code>#help,#channel3</code>.</p>
<p>All of these features will be available in DMDirc 0.6.4, which should be out at the start of July. If you can&#8217;t wait that long, you can try a <a href="http://www.dmdirc.com/nightly">nightly build</a>. Think of any more ways we can make DMDirc intelligent? Leave a comment, poke <a href="http://twitter.com/DMDirc">@DMDirc</a> on Twitter, or you can of course join us <a href="irc://irc.quakenet.org/DMDirc">on IRC</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2010/03/24/intelligent-channel-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving the DMDirc release cycle</title>
		<link>http://blog.dmdirc.com/2009/07/05/improving-the-dmdirc-release-cycle/</link>
		<comments>http://blog.dmdirc.com/2009/07/05/improving-the-dmdirc-release-cycle/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 14:16:58 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[QA]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=224</guid>
		<description><![CDATA[Once again, we are looking at improving the DMDirc release cycle. First, a bit of history. When we first started with DMDirc back in 2007 we had very regular releases, but these have slowly started getting longer and longer: 0.1 was released on the 1st of March 2007 0.2 quickly followed 5 days later (6th [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, we are looking at improving the DMDirc release cycle. First, a bit of history. When we first started with DMDirc back in 2007 we had very regular releases, but these have slowly started getting longer and longer:</p>
<ul>
<li>0.1 was released on the 1st of March 2007</li>
<li>0.2 quickly followed <strong>5 days</strong> later (6th March)</li>
<li>0.3 was <strong>1 month, 18 days</strong> after that (24th April)</li>
<li>0.4 followed after <strong>1 month, 18 days</strong> again (11th June)</li>
<li>0.5 then came <strong>3 months, 15 days</strong> later (26th September)</li>
<li>0.5.1 was then released as a bug fix a mere <strong>11 days</strong> after that (7th October)</li>
</ul>
<p>So that was six releases in just over 7 months. We were happy to be doing regular releases as we felt it was more likely to keep users with us as the client evolved quickly. However, this pace soon died down and <strong>3 months, 23 days</strong> later (which was at the time the longest we&#8217;d gone without a release), with no sign of 0.6 being finished any time soon, we made the decision to release 0.5.5. This was intended as a half-way point between 0.5 and 0.6 to try and keep the releases regular, with the idea that 0.6 would follow in a similar time scale. This was not quite the case, as it took us a further <strong>7 months, 12 days</strong> before 0.6 was released!</p>
<p>Shortly before the release of 0.6 we looked at the time between releases, and took the decision to split our workload for 0.7 into 3 separate parts (as described <a href="http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/">here</a>) in order to try and bring the release time down to a more reasonable time scale. After some time it became obvious from the amount of outstanding issues for 0.6.3 that this again wouldn&#8217;t work, as six months in we still had a large number of major features outstanding. We therefore decided once again to split the release further into a set of &#8220;milestone&#8221; releases — 0.6.3m1 (which we&#8217;ve just released), 0.6.3m2 (up next) and then probably 0.6.3 proper. These milestone releases were supposed to be point in time where we thought the client was in a good state that we would finish anything we were working on, tidy up the code and release.</p>
<p>Well, <strong>9 months, 16 days</strong> after the release of 0.6 we released the long-awaited version 0.6.3m1. We once again took a hard look at this and have come to the conclusion that this simply isn&#8217;t acceptable, despite two attempts at breaking the release down it still took us 9 months to do what essentially boils down to 1/9th of the 0.7 release we had originally planned (assuming that 0.6.6 and 0.7 will also be split into two milestone releases).</p>
<p>So now we are going to introduce yet another change to our release cycle. We are going to continue with 0.6.3, 0.6.6 and 0.7 as separate release targets, but instead tweak how we handle milestone releases. Currently we decide to release a milestone randomly when we feel that the client is stable, instead we are going to try and stick to a reasonably fixed release cycle of <strong>4 months</strong> in between releases. Approximately 3 months after the last release we are going to start the process of preparing for a milestone release. This will entail a feature freeze and the bumping of any non-essential issues back to the next milestone. Following this we will finish any currently outstanding issues (or bump them if there is still too much to do), a reasonably quick QA cycle (during which we open up the UNSTABLE updater channel to allow for testing of the upcoming release) and then release after the 4th month and repeat.</p>
<p>So with this new release cycle we hope to go back to our original faster-paced release strategy without losing any of the quality we like in a release, and should be looking at releasing the next milestone on or around the <strong>1st of November</strong>, so watch out during October for news of the pending release of 0.6.3m2!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2009/07/05/improving-the-dmdirc-release-cycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving the development process</title>
		<link>http://blog.dmdirc.com/2008/08/31/improving-the-development-process/</link>
		<comments>http://blog.dmdirc.com/2008/08/31/improving-the-development-process/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 17:09:16 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=70</guid>
		<description><![CDATA[One of the things that makes DMDirc good (in my opinion) is that the three main developers actively use it pretty much all day, every day. We are all very, very heavy IRC users (unlike the author of mIRC for instance, who admits to only occasionally using IRC), which is what led to us [re]starting [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that makes DMDirc good (in my opinion) is that the three main developers actively use it pretty much all day, every day. We are all very, very heavy IRC users (unlike the author of mIRC for instance, who <a href="http://www.mirc.com/khaled/faq.html">admits to only occasionally using IRC</a>), which is what led to us [re]starting DMDirc development — when we all switched to Linux, we couldn&#8217;t find an existing client that any of us really liked.</p>
<p>From the start we wanted DMDirc to be an excellent client, and we quickly got it into a usable state (I have logs showing me using it in early May 2007).  To help us do this we registered with Google Code, which provided us with a Subversion repository, download hosting and an issue tracker.</p>
<p>In addition to the tools on Google Code we also wrote a service that received error reports from DMDirc clients, and allowed developers to browse them using a web interface. This system never really worked too well; it meant that we in effect had two systems for tracking errors, the automated error system (which was checked manually, and therefore quite infrequently) and the user-facing Google Code issue tracker. The Google Code issue tracker also had quite a few issues of its own [ba-dum-tish] that posed problems for us: we didn&#8217;t have much control over it, Google were slow to improve it, and it didn&#8217;t allow for dependencies or private issues. The lack of private issues was the reason we felt the need to have two separate systems at the time — automatically reported errors may in some cases contain private information, so we can&#8217;t show them publicly.</p>
<p>Sometime just before DMDirc 0.5.5 was released, we decided to start using <a href="http://mantisbt.org">Mantis</a> as our primary issue tracker. Mantis, whilst not perfect, gave us the control we wanted — it&#8217;s written in PHP (which, like Java, we all know very well), and is easy enough to modify. We imported all of our existing issues from Google Code, using a <a href="http://bugs.dmdirc.com/patches/1.1.0/IssueScrape.py">Python script</a> (yay for multi-language proficiency!) to screenscrape the website and build an XML file, and then a <a href="http://bugs.dmdirc.com/patches/1.1.0/import.phps">PHP script</a> to read the XML file and import the issues into Mantis. With the issues imported, we set about modifying Mantis to better suit our needs.</p>
<p>We (well, Chris and I) had got quite used to using the issue &#8216;grid view&#8217; offered by Google code, so one of the first things we did when switching to Mantis was implementing our <a href="http://bugs.dmdirc.com/view_grid_page.php">own version</a> of it. We also improved the error reporting backend to raise new Mantis issues (marked as private, of course). Later on, we also enabled SVN integration, which initially meant writing a script to parse e-mails from Google Code (where our SVN repository was still hosted) and passing the information on to Mantis for it to use. After a while, we modified the integration to include links to <a href="http://fisheye.dmdirc.com">our Fisheye instance</a>, and also map Subversion users to Mantis users in order to add comments with the appropriate username instead of just &#8216;SVN user&#8217;.</p>
<p>More recently, we&#8217;ve improved the Fisheye aspect of the integration dramatically; we now access Fisheye and include its representation of the changes directly in Mantis, allowing you to see a list of affected files and even view diffs of the changes without leaving the issue page. We also parse any stack traces in the issue description, and automatically link relevant lines to the Fisheye view of the specified file and revision, if the information is available. You can see an example of both of these modifications in <a href="http://bugs.dmdirc.com/view.php?id=1330">this issue</a>.</p>
<p>Now, as I mentioned above, we are all heavy IRC users so having to periodically check Mantis for new bugs wasn&#8217;t very appealing to us, so we modified it some more so that it communicated with an IRC bot we have which is designed to relay notifications. Mantis tells us everything that happens — new issues, edited issues, property changes on issues — anything that happens there, we instantly know about it.</p>
<p>This setup worked well for us for about 4 months, after which we decided to switch over to using a self-hosted SVN Repository, which opened up even more possibilities. We added post-commit hooks to replace the email-parsing hacks for Mantis support, enabled reporting of commits to IRC, and created a pre-commit hook to make sure that every commit was linked to an issue on Mantis.</p>
<p>Not long after that we discovered and implemented <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a> into our development process. Bamboo is a <a href="http://en.wikipedia.org/wiki/Continuous_Integration">Continuous Integration</a> server, which means that every time we commit something to the trunk (or active branches), it will rebuild the project on our server, run our collection of unit tests and then publish and store the results. Bamboo also notifies us via Jabber if you cause a build to fail. Of course this wasn&#8217;t quite perfect, and after a short while we discovered a <a href="http://confluence.atlassian.com/display/BAMEXT/Pre-Post+Build+Command+Plugin">plugin</a> that can execute post-build scripts. One Bash script later and Bamboo was reporting to IRC like everything else. We also, of course, integrated Bamboo with Mantis. If you check <a href="http://bugs.dmdirc.com/view.php?id=1330">this issue</a> again you will see that the results of the build from Bamboo are also reported under the the commit that triggered it.</p>
<p>As mentioned before, we have a collection of <a href="http://en.wikipedia.org/wiki/Unit_testing">unit tests</a> to make sure things work as expected. Every so often we generate <a href="http://reports.dmdirc.com/frame-clover.html">Clover reports</a> to show how much code coverage we have, and in the last month we have also discovered and began using the <a href="http://fest.easytesting.org/">FEST</a> Swing library to allow us to start unit testing the DMDirc GUI.</p>
<p>So as you can see, what we have now is a very tightly integrated system to help ensure that DMDirc is a quality product. Everything reports to IRC so we know as soon as things happen, our issue tracker is almost omnipotent in that it can tell nearly everything about an issue from being raised to being fixed, and to top it all off, we have <a href="http://www.nagios.org/">Nagios</a> running and monitoring it all for us (and of course, this reports to IRC also!)</p>
<p>Of course this setup wouldn&#8217;t be possible if it wasn&#8217;t for a few choice products provided for free — <a href="http://mantisbt.org">Mantis</a>, <a href="http://www.atlassian.com/software/fisheye/">Fisheye</a>, <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a>, <a href="http://www.atlassian.com/software/clover">Clover</a> and many others. We would like to thank the developers of these products for helping us make DMDirc great.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/08/31/improving-the-development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing the intelligent IRC client</title>
		<link>http://blog.dmdirc.com/2008/08/07/introducing-the-intelligent-irc-client/</link>
		<comments>http://blog.dmdirc.com/2008/08/07/introducing-the-intelligent-irc-client/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 22:09:04 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Intelligence]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=65</guid>
		<description><![CDATA[If you&#8217;re reading this via our website, you may have already noticed that DMDirc has undergone a small re-branding. We now use the tagline &#8220;the intelligent IRC client&#8221; across all the DMDirc sites (apart from the addons site which is undergoing an overhaul — you can take a sneak peak at what it&#8217;s going to [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re reading this via our website, you may have already noticed that DMDirc has undergone a small re-branding. We now use the tagline &#8220;the intelligent IRC client&#8221; across all the DMDirc sites (apart from the <a href="http://addons.dmdirc.com/">addons site</a> which is undergoing an overhaul — you can take a sneak peak at what it&#8217;s going to be like over at the <a href="http://addons-dev.dmdirc.com/">development site</a>). This tagline has also found its way into the &#8216;About&#8217; dialog in recent nightly builds.</p>
<p>Why &#8220;the intelligent IRC client&#8221;? Well, we think DMDirc&#8217;s built-in &#8216;intelligence&#8217; is the most significant aspect that sets it apart from other clients. We&#8217;ve yet to see another IRC client that has tab-completion anywhere near the quality of DMDirc&#8217;s, or that parses links as well as we do. We have more enhancements coming for both of these areas, too, as well as plans to make other DMDirc features more &#8216;intelligent&#8217;.</p>
<p>While the two areas mentioned above may not seem ground-shatteringly important, they improve the usability of the client quite a lot. The difference they make is most noticeable when you use another IRC client, and find that you can no longer tab-complete command names, or that a link in the topic includes a closing quotation mark when you click on it, which means you have to do something extra (open the manual to look up the command name, manually copy the URL or modify it in the browser, etc) in order to do/find out what you want, instead of it just working.</p>
<p>DMDirc 0.6 (coming soon; we&#8217;re going to be pushing out an alpha version this weekend) features a lot of enhancements to the &#8216;intelligent&#8217; aspects of DMDirc, some of which we&#8217;ve <a href="http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/">discussed previously</a>. But, as always, we&#8217;d love to hear from you if you have any suggestions on how we could make DMDirc more intelligent. Feel free to leave a comment on this post, <a href="http://bugs.dmdirc.com/bug_report_advanced_page.php">create a new issue</a> on the issue tracker, join us in <a href="irc://irc.quakenet.org/dmdirc">#DMDirc on Quakenet</a>, or use the feedback form found in the Help menu in the client itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/08/07/introducing-the-intelligent-irc-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking ahead to DMDirc 0.7</title>
		<link>http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/</link>
		<comments>http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 11:44:17 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=61</guid>
		<description><![CDATA[With DMDirc 0.6 coming soon (hopefully — we still have a few bits and pieces to finish off), we&#8217;re starting to look ahead towards the next major branch: DMDirc 0.7. The 0.7 branch has several major new features, namely sever lists and a revamped update system, both of which have extensive core and UI components. [...]]]></description>
			<content:encoded><![CDATA[<p>With DMDirc 0.6 coming soon (hopefully — we still have a few bits and pieces to finish off), we&#8217;re starting to look ahead towards the next major branch: DMDirc 0.7.  The 0.7 branch has several major new features, namely sever lists and a revamped update system, both of which have extensive core and UI components.  There are also a large number of smaller features and enhancements: we have over 80 issues open for the 0.7 branch, and this number is growing fairly steadily.</p>
<p>Looking back on the 0.6 branch, one of the things we&#8217;d like to change most is the length of time between each release. Ignoring security and bug fixes, there was a four month gap between 0.5 and 0.5.5, and it looks like DMDirc 0.6 will be released between six and seven months after that. This isn&#8217;t because we&#8217;re getting lazy, or because we care less about DMDirc than we did when we released the first few versions (which were all inside of the same month); it&#8217;s because we&#8217;re implementing more features, fixing more bugs, and doing more behind-the-scenes work (improving the DMDirc code base) than we have in previous releases.  To combat this somewhat, we&#8217;re aiming to make three releases as part of the 0.7 development series &#8211; DMDirc 0.6.3, 0.6.6 and 0.7. We&#8217;ve allocated issues to each release to try and balance the time it will take (DMDirc 0.5.5 wasn&#8217;t a pre-planned release and, as you can tell from the timing, didn&#8217;t split the workload too well), so hopefully we&#8217;ll be able to make releases somewhat more frequently than we have been.</p>
<p>Pre-planning these sub-releases has also enabled us to organise issues better so that we&#8217;re working on (and releasing) related features at the same time. The rough focus of each release is described below. Note that these are just the major, overarching themes; each release also contains a good helping of smaller, independent enhancements.</p>
<ul>
<li>DMDirc 0.6.3: Server lists, input/command improvements, plugin improvements</li>
<li>DMDirc 0.6.6: Updater overall, installer and launcher improvements</li>
<li>DMDirc 0.7: Channel and general window/UI improvements</li>
</ul>
<p>Of course, if you can&#8217;t wait for releases to try out all the new features, you can download a <a href="http://www.dmdirc.com/en/nightlies">nightly build</a>, which can auto-update with the latest features and bug fixes each day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Website and subversion changes</title>
		<link>http://blog.dmdirc.com/2008/04/10/website-and-subversion-changes/</link>
		<comments>http://blog.dmdirc.com/2008/04/10/website-and-subversion-changes/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 19:17:45 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=50</guid>
		<description><![CDATA[As you may have noticed if you&#8217;re a regular visitor, the DMDirc website has recently been given a lick of paint. There is now a common header across all of the DMDirc sites (the main website, addons site, bug tracker and blog), which allows easy navigation between all aspects of the DMDirc website, and is [...]]]></description>
			<content:encoded><![CDATA[<p>As you may have noticed if you&#8217;re a regular visitor, the DMDirc website has recently been given a lick of paint. There is now a common header across all of the DMDirc sites (the main website, addons site, bug tracker and blog), which allows easy navigation between all aspects of the DMDirc website, and is a lot better looking than the old header, too!</p>
<p>We have also relocated our subversion repository from its previous home at Google&#8217;s Project Hosting service, to our own server. We made this switch because of the fairly poor uptime of Google&#8217;s offering, and the seemingly random delays between commits being made and announcement e-mails being sent. If you have the DMDirc source code checked out from our subversion repository, follow the instructions <a href="http://www.dmdirc.com/svn">here</a> to migrate to the new repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/04/10/website-and-subversion-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Support</title>
		<link>http://blog.dmdirc.com/2008/03/06/os-x-support/</link>
		<comments>http://blog.dmdirc.com/2008/03/06/os-x-support/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 09:41:28 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2008/03/06/os-x-support/</guid>
		<description><![CDATA[Now that Apple have re-released their &#8216;developer preview&#8217; of Java 6, we can begin work on improving DMDirc&#8217;s compatibility with OS X. Currently the release only works on 64-bit Intel processors (Xeons or Core2Duos &#8211; not CoreDuos, CoreSolos or PowerPCs) running Leopard. They had previously released a developer preview for Tiger, but we do not [...]]]></description>
			<content:encoded><![CDATA[<p>Now that Apple have re-released their &#8216;developer preview&#8217; of Java 6, we can begin work on improving DMDirc&#8217;s compatibility with OS X. Currently the release only works on 64-bit Intel processors (Xeons or Core2Duos &#8211; not CoreDuos, CoreSolos or PowerPCs) running Leopard. They had previously released a developer preview for Tiger, but we do not have access to it, so are unable to tell how well it works with DMDirc (if at all).</p>
<p>If your machine fits the bill, you can download the developer preview from the Apple Developer site:</p>
<ul>
<li>Go to <a href="http://www.apple.com/java">http://www.apple.com/java</a></li>
<li>Click on &#8220;Java Downloads&#8221;</li>
<li>Click on &#8220;Java SE 6 Developer Preview&#8221; &mdash; <em>This will redirect you to the ADC site.</em></li>
<li>Login to the ADC site (<em>you may need to register first.</em>)</li>
<li>Click on &#8220;Downloads&#8221;</li>
<li>Click on &#8220;Java&#8221; in the sidebar</li>
<li>Download the &#8220;Java SE 6 Developer Preview&#8221;</li>
<li>Install</li>
</ul>
<p>Once you have the developer preview installed, you can download a nightly build of DMDirc from <a href="http://www.dmdirc.com/nightlies">http://www.dmdirc.com/nightlies</a> or you can build your own by checking out the source code from our subversion repository (if you have the developer tools installed) by running the following commands:<br />
<code><br />
svn checkout http://dmdirc.googlecode.com/svn/trunk/ dmdirc<br />
cd dmdirc/trunk/installer<br />
./release.sh --target osx this<br />
mv output/DMDirc.dmg ~/Desktop/DMDirc.dmg<br />
</code></p>
<p>Now you can mount the image, and drag DMDirc to the applications folder to install it.</p>
<p>However, at the moment there is a bug with the &#8220;First Run Wizard&#8221; that we use to extract plugins and actions for the first time, so you will need to run the following in a terminal prior to running the client to make it work. This assumes that you installed DMDirc into the Applications folder and not somewhere else.<br />
<em>Edit:</em> This bug has been fixed.<br />
<code><br />
mkdir -p ~/Library/Preferences/DMDirc/<br />
cd ~/Library/Preferences/DMDirc/<br />
unzip /Applications/DMDirc.app/Contents/Resources/Java/DMDirc.jar plugins/*.jar com/dmdirc/actions/defaults/*<br />
mv com/dmdirc/actions/defaults actions<br />
rm -Rf com<br />
echo "general.firstRun=false" >> dmdirc.config<br />
echo "general.addonrevision=10" >> dmdirc.config<br />
echo "updater.enable=true" >> dmdirc.config<br />
echo "general.submitErrors=true" >> dmdirc.config<br />
</code></p>
<p>The last two lines can be omitted if you do not wish to receive update notifications, or automatically send error reports to the developers. We would however prefer you to have them both enabled.</p>
<p>Now you can enjoy DMDirc on OS X :)</p>
<p>Feel free to raise any issues on our <a href="http://bugs.dmdirc.com/">bug tracker</a>, leave a comment here, or contact us in #DMDirc on Quakenet</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/03/06/os-x-support/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Even more intelligent tab completion</title>
		<link>http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/</link>
		<comments>http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 13:21:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Intelligence]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/</guid>
		<description><![CDATA[In DMDirc 0.5 we introduced a feature described in the release notes as &#8220;intelligent tab completion for commands&#8221; (introduced in this blog post), which allowed commands to tell the tab completer about the arguments that they&#8217;re expecting. In that incarnation, commands can specify a bunch of extra words to add, and can toggle whether the [...]]]></description>
			<content:encoded><![CDATA[<p>In DMDirc 0.5 we introduced a feature described in the release notes as &#8220;intelligent tab completion for commands&#8221; (introduced in <a href="http://blog.dmdirc.com/2007/08/18/introducing-intelligent-command-completion/">this blog post</a>), which allowed commands to tell the tab completer about the arguments that they&#8217;re expecting. In that incarnation, commands can specify a bunch of extra words to add, and can toggle whether the default tab completion targets (nicknames, channel names, command names) are used.</p>
<p>In DMDirc 0.6, we&#8217;ve taken this one step further. Commands can now specify exactly what group(s) of targets should be used &#8211; so, for example, the first argument of the <code>/ctcp</code> command will now only tab complete to nicknames and channel names (but not command names, as it would have done in DMDirc 0.5).</p>
<p>We&#8217;ve also added support for what I call &#8220;deferred intelligent tab completion&#8221;. This comes in to play with the half-dozen or so commands that take another command as one of their arguments, such as the <code>/alias</code> command, which takes an alias name and then a command to associate with that alias. So, say you want to create an alias to start a timer that will CTCP PING a certain person after five seconds. You type: <code>/ali<strong>&lt;tab&gt;</strong> ping /tim<strong>&lt;tab&gt;</strong> 1 5 /ctcp Nickname <strong>&lt;tab&gt;</strong></code>. When you hit that final tab, DMDirc suggests eight standard CTCP types (PING, FINGER, VERSION, etc&#8230;), even though the CTCP command is in the middle of a much larger command. How&#8217;s that for intelligent tab completion?</p>
<p>As far as I&#8217;m aware, no other IRC client comes close to the intelligence of DMDirc 0.5&#8242;s tab completer, so DMDirc 0.6&#8242;s puts us leagues ahead of the competition in that respect. But, as ever, we&#8217;re eager to hear any feedback or suggestions that you might have &#8211; feel free to leave a comment here, drop by #DMDirc on Quakenet to talk to us, or use the &#8220;Send feedback&#8221; feature (available in the help menu) of DMDirc 0.5.5.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DMDirc 0.5 released</title>
		<link>http://blog.dmdirc.com/2007/09/26/dmdirc-05-released/</link>
		<comments>http://blog.dmdirc.com/2007/09/26/dmdirc-05-released/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 15:28:58 +0000</pubDate>
		<dc:creator>greboid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/09/26/39/</guid>
		<description><![CDATA[We have just released version 0.5 of DMDirc. 0.5 has just under 100 features or improvements and 77 bug fixes since 0.4, the major additions in 0.5 are * Added action wrappers for aliases and performs * Added intelligent tab completion for commands * Added server settings dialog * Added support for themes * Added [...]]]></description>
			<content:encoded><![CDATA[<p>We have just released version 0.5 of DMDirc.</p>
<p>0.5 has just under 100 features or improvements and 77 bug fixes since 0.4, the major additions in 0.5 are</p>
<p>    * Added action wrappers for aliases and performs<br />
    * Added intelligent tab completion for commands<br />
    * Added server settings dialog<br />
    * Added support for themes<br />
    * Added support for character transcoding<br />
    * Added support for various command-line options<br />
    * Added installers for Windows and Linux </p>
<p>See the <a href="http://code.google.com/p/dmdirc/wiki/ChangelogNoughtPointFive">changelog</a> for more information on this release. As always we recommend existing users to upgrade, and non-users to give it a go, come visit us in #DMDirc on Quakenet (see the help menu) with your feedback or just to visit.</p>
<p>0.5 can be downloaded for <a href="http://dmdirc.googlecode.com/files/DMDirc0.5_installer.exe">windows</a> and <a href="http://dmdirc.googlecode.com/files/DMDirc0.5_installer.run">linux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/09/26/dmdirc-05-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing intelligent command completion</title>
		<link>http://blog.dmdirc.com/2007/08/18/introducing-intelligent-command-completion/</link>
		<comments>http://blog.dmdirc.com/2007/08/18/introducing-intelligent-command-completion/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 23:09:53 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/08/18/introducing-intelligent-command-completion/</guid>
		<description><![CDATA[One of the first new features introduced after the release of DMDirc 0.4 was the intelligent command completion system. This allows commands to tell the tab completer about their arguments. The best way to explain this is with a few examples: The /ctcp command: type /ctcp someone &#60;tab&#62;&#60;tab&#62;, and instead of getting a standard tab-completable [...]]]></description>
			<content:encoded><![CDATA[<p>One of the first new features introduced after the release of DMDirc 0.4 was the intelligent command completion system. This allows commands to tell the tab completer about their arguments. The best way to explain this is with a few examples:</p>
<p>The <strong>/ctcp</strong> command: type <code>/ctcp someone &lt;tab&gt;&lt;tab&gt;</code>, and instead of getting a standard tab-completable targets (such as command names, channel names, etc), you get the following:</p>
<blockquote><p>00:03:18 | Multiple possibilities: VERSION, ACTION, USERINFO, CLIENTINFO, PING, FINGER, SOURCE, TIME</p></blockquote>
<p>The <strong>/loadplugin</strong> and <strong>/reloadplugin</strong> commands allow you to tab complete the class names of relevant plugins.</p>
<p>One last example: the <strong>/set</strong> command allows you to tab complete both the domain and option names, so instead of <code>/set general showcolourdialog</code>, you can type <code>/set g&lt;tab&gt; sh&lt;tab&gt;c&lt;tab&gt;</code>.</p>
<p>This may not seem like much, but once you get used to using it, it&#8217;s hard to cope without it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/08/18/introducing-intelligent-command-completion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>0.4 is a go!</title>
		<link>http://blog.dmdirc.com/2007/06/11/04-is-a-go/</link>
		<comments>http://blog.dmdirc.com/2007/06/11/04-is-a-go/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 03:28:40 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/06/11/04-is-a-go/</guid>
		<description><![CDATA[We have just released version 0.4 of DMDirc :) (Applause). 0.4 Brings many improvements over previous versions, with over 500 svn commits since 0.3, 0.4 includes amongst other things: The actions system (See these two blog posts) The plugins system (See this blog post) Completely new, faster, text pane Searching Over 100 improvements bug fixes [...]]]></description>
			<content:encoded><![CDATA[<p>We have just released version 0.4 of DMDirc :) (Applause).</p>
<p>0.4 Brings many improvements over previous versions, with over 500 svn commits since 0.3, 0.4 includes amongst other things:</p>
<ul>
<li> The actions system (See <a href="http://blog.dmdirc.com/2007/05/11/introducing-actions/">these</a> <a href="http://blog.dmdirc.com/2007/05/25/actions-now-with-added-ui/">two</a> blog posts)
<li> The plugins system (See <a href="http://blog.dmdirc.com/2007/05/26/plugins/">this</a> blog post)
<li> Completely new, faster, text pane
<li> Searching
<li> Over 100 improvements bug fixes
</ul>
<p>See the <a href="http://code.google.com/p/dmdirc/wiki/ChangelogNoughtPointFour">changelog</a> and <a href="http://code.google.com/p/dmdirc/wiki/GuideToNoughtPointFour">readme</a> for more information on this release. We encourage existing users to upgrade, and non-users to give it a go, and let us know in #DMDirc on Quakenet what you think :)</p>
<p>0.4 can be downloaded <a href="http://dmdirc.googlecode.com/files/DMDirc-0.4.zip">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/06/11/04-is-a-go/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Meet the developers</title>
		<link>http://blog.dmdirc.com/2007/05/03/meet-the-developers/</link>
		<comments>http://blog.dmdirc.com/2007/05/03/meet-the-developers/#comments</comments>
		<pubDate>Thu, 03 May 2007 14:22:31 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/05/03/meet-the-developers/</guid>
		<description><![CDATA[This is a brief introduction to DMDirc&#8217;s developers. I&#8217;m Chris, aka MD87. I&#8217;m the &#8220;core&#8221; developer of DMDirc, which means I&#8217;m responsible for most of the back-end logic, handling data storage, and a small mountain of others things. I&#8217;m also apparently the best writer, so I&#8217;ll probably be the one who posts most to this [...]]]></description>
			<content:encoded><![CDATA[<p>This is a brief introduction to DMDirc&#8217;s developers.</p>
<p>I&#8217;m <strong>Chris</strong>, aka <strong>MD87</strong>.  I&#8217;m the &#8220;core&#8221; developer of DMDirc, which means I&#8217;m responsible for most of the back-end logic, handling data storage, and a small mountain of others things.  I&#8217;m also apparently the best writer, so I&#8217;ll probably be the one who posts most to this blog.</p>
<p>Next up, we have <strong>Shane</strong>, aka <strong>Dataforce</strong>.  He&#8217;s primarily in charge of the IRC Parser (the code that interfaces between the client and the IRC server), but is also working on the plugins system, and writing the logging plugin.  You can identity Shane&#8217;s code by the length of lines and the number of code conventions it breaks (if there are >300 char lines, and it breaks every convention you can think of, it&#8217;s probably his).</p>
<p>Last but not least, there&#8217;s <strong>Greg</strong>, aka <strong>Greboid</strong>.  He&#8217;s in charge of the client user interface, and can often be found complaining on IRC about problems he&#8217;s having with it (his latest favourite subject is the TextPane rewrite we have scheduled for 0.4).</p>
<p>So, that&#8217;s us.  We can all be found on IRC, in #DMDirc on Quakenet (irc.quakenet.org) among other places. We can also be contacted via e-mail by prepending our name (as above) to @dmdirc.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/05/03/meet-the-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to the DMDirc development blog</title>
		<link>http://blog.dmdirc.com/2007/05/02/welcome-to-the-dmdirc-development-blog/</link>
		<comments>http://blog.dmdirc.com/2007/05/02/welcome-to-the-dmdirc-development-blog/#comments</comments>
		<pubDate>Wed, 02 May 2007 19:43:26 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/05/02/welcome-to-the-dmdirc-development-blog/</guid>
		<description><![CDATA[Welcome to the DMDirc development blog. The idea behind this blog to allow us, the developers, to show off new features we&#8217;re implementing, discuss various aspects of IRC and writing an IRC client, and to get some feedback from our users. We&#8217;ll try to make semi-regular posts to keep everyone up to date with the [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to the DMDirc development blog.  The idea behind this blog to allow us, the developers, to show off new features we&#8217;re implementing, discuss various aspects of IRC and writing an IRC client, and to get some feedback from our users. We&#8217;ll try to make semi-regular posts to keep everyone up to date with the client&#8217;s status.</p>
<p>If you want to try the features we&#8217;re describing, you can try a nightly build, as explained on the <a href="http://www.dmdirc.com/development.html">development page</a> of our main website.  Please note that nightly builds may be horrendously buggy, so don&#8217;t be hugely surprised if one of them deletes your config files, makes your screen turn red, or sacrifices your first born child to the gods of IRC.</p>
<p>If you have any questions about DMDirc, want us to blog about anything in particular, or just want to chat, you can find all of the developers in #dmdirc on Quakenet (irc.quakenet.org).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/05/02/welcome-to-the-dmdirc-development-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
