<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog of Ortz</title>
	
	<link>http://blog.ortz.org</link>
	<description>The blog of Brian Ortiz aka Ortzinator, developer, artist, and the coolest guy you know.</description>
	<lastBuildDate>Sat, 31 Oct 2009 16:29:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/blog_of_ortz" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Mercurial</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/izPzV89XgcY/</link>
		<comments>http://blog.ortz.org/2009/10/14/mercurial/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 01:15:46 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Mercurial]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=262</guid>
		<description><![CDATA[Updated 10/31: You don&#8217;t need a pass for the repo anymore.
I was on mid-term break the past two days. (Yeah only two. ugh.) I had been looking at Mercurial the past few days so I took the opportunity to switch OrtzIRC over to use Mercurial!
I really like Mercurial. I like how simple it is, even [...]]]></description>
			<content:encoded><![CDATA[<p><em>Updated 10/31: You don&#8217;t need a pass for the repo anymore.</em></p>
<p>I was on mid-term break the past two days. (Yeah only two. ugh.) I had been looking at <a href="http://mercurial.selenic.com/wiki/">Mercurial </a>the past few days so I took the opportunity to switch OrtzIRC over to use Mercurial!</p>
<p>I really like Mercurial. I like how simple it is, even compared to SVN. Whenever I did something with SVN I felt like I was walking through a minefield. And I did manage to get my legs blown off a few times. (I looked at Git but it made me <a href="http://www.ericsink.com/entries/git_index.html">bleed from the ears</a>.)</p>
<p>The switch was ridiculously easy. The only hard part was the fact that the hook for my CIA bot didn&#8217;t work, which should&#8217;ve been an easy fix, except I don&#8217;t know Python that well and Mercurial doesn&#8217;t have any docs for writing hooks that I could find. So I spent most of the day yesterday and part of this morning crawling through Mercurial&#8217;s changelogs and source.</p>
<p>Anyway, here&#8217;s the repo <a href="http://hg.ortzirc.com/ortzirc/">http://hg.ortzirc.com/ortzirc/</a>.</p>
<p>I&#8217;m keeping the SVN repo up for now, but I&#8217;ll probably delete it pretty soon.</p>
<p>I also switched my issue tracking to <a href="http://www.fogcreek.com/FogBugz/">FogBugz</a>, which I&#8217;m also liking so far. (Free for up to two users) I may post more on that when I&#8217;ve used it more.</p>
<p>And as a result of all this, Trac is no longer useful to me. Can&#8217;t say I&#8217;ll miss it.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/BDTewCT1ADUnriqDaJv6tnhaamU/0/da"><img src="http://feedads.g.doubleclick.net/~a/BDTewCT1ADUnriqDaJv6tnhaamU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BDTewCT1ADUnriqDaJv6tnhaamU/1/da"><img src="http://feedads.g.doubleclick.net/~a/BDTewCT1ADUnriqDaJv6tnhaamU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/izPzV89XgcY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/10/14/mercurial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/10/14/mercurial/</feedburner:origLink></item>
		<item>
		<title>Progress</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/vPbiGvqbxRM/</link>
		<comments>http://blog.ortz.org/2009/10/06/progress/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 19:38:20 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=251</guid>
		<description><![CDATA[Finally got over a little hump recently with OrtzIRC.
I decided to dump ADO.NET and thus SQLite. I like SQLite, just not ADO.NET.
IRC settings are now stored as object and serialized to XML. Here&#8217;s an example.

&#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62;
&#60;EpicServerList&#62;
  &#60;Network Name=&#34;Gamesurge&#34;&#62;
    &#60;Server Description=&#34;Randoms&#34; Url=&#34;irc.gamesurge.net&#34; Ports=&#34;6667&#34; /&#62;
    &#60;Server Description=&#34;Burstfire&#34; Url=&#34;Burstfire.UK.EU.GameSurge.net&#34; Ports=&#34;6667&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Finally got over a little hump recently with OrtzIRC.</p>
<p>I decided to dump ADO.NET and thus SQLite. I like SQLite, just not ADO.NET.</p>
<p>IRC settings are now stored as object and serialized to XML. Here&#8217;s an example.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;EpicServerList<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Network</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;Gamesurge&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Server</span> <span style="color: #000066;">Description</span>=<span style="color: #ff0000;">&quot;Randoms&quot;</span> <span style="color: #000066;">Url</span>=<span style="color: #ff0000;">&quot;irc.gamesurge.net&quot;</span> <span style="color: #000066;">Ports</span>=<span style="color: #ff0000;">&quot;6667&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Server</span> <span style="color: #000066;">Description</span>=<span style="color: #ff0000;">&quot;Burstfire&quot;</span> <span style="color: #000066;">Url</span>=<span style="color: #ff0000;">&quot;Burstfire.UK.EU.GameSurge.net&quot;</span> <span style="color: #000066;">Ports</span>=<span style="color: #ff0000;">&quot;6667&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Network<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Network</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;Freenode&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Server</span> <span style="color: #000066;">Description</span>=<span style="color: #ff0000;">&quot;Random&quot;</span> <span style="color: #000066;">Url</span>=<span style="color: #ff0000;">&quot;chat.freenode.net&quot;</span> <span style="color: #000066;">Ports</span>=<span style="color: #ff0000;">&quot;6667&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Network<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/EpicServerList<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>I&#8217;ll probably make a tool that will parse the settings from your current IRC client and build an XML file with this schema. What I&#8217;m hoping to eventually have is a Creative Commons directory of IRC networks/servers.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/irqzXsFJrs16n6_eoGeFCLAWu4I/0/da"><img src="http://feedads.g.doubleclick.net/~a/irqzXsFJrs16n6_eoGeFCLAWu4I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/irqzXsFJrs16n6_eoGeFCLAWu4I/1/da"><img src="http://feedads.g.doubleclick.net/~a/irqzXsFJrs16n6_eoGeFCLAWu4I/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/vPbiGvqbxRM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/10/06/progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/10/06/progress/</feedburner:origLink></item>
		<item>
		<title>Help OrtzIRC</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/fMDhQhcG_us/</link>
		<comments>http://blog.ortz.org/2009/09/24/help-ortzirc/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 00:22:10 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=245</guid>
		<description><![CDATA[Who doesn&#8217;t like a good ol&#8217; survey?
Loading&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Who doesn&#8217;t like a good ol&#8217; survey?</p>
<p><iframe src="http://spreadsheets.google.com/embeddedform?key=tJe52cRDrzMluUSYz38ni0g" width="670" height="881" frameborder="0" marginheight="0" marginwidth="0">Loading&#8230;</iframe></p>

<p><a href="http://feedads.g.doubleclick.net/~a/jvlUnViEnURePTOwkpxegcc2qsc/0/da"><img src="http://feedads.g.doubleclick.net/~a/jvlUnViEnURePTOwkpxegcc2qsc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/jvlUnViEnURePTOwkpxegcc2qsc/1/da"><img src="http://feedads.g.doubleclick.net/~a/jvlUnViEnURePTOwkpxegcc2qsc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/fMDhQhcG_us" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/09/24/help-ortzirc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/09/24/help-ortzirc/</feedburner:origLink></item>
		<item>
		<title>IE4 – Browser of the Future</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/Ipe0Zo5c7-A/</link>
		<comments>http://blog.ortz.org/2009/08/13/ie4-browser-of-the-future/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 19:18:14 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=241</guid>
		<description><![CDATA[I came across this item on ebay just now, and thought the first sentence from the description was interesting:
Internet Explorer 4 is not just another Web broswer-it&#8217;s the first step toward a desktop computing environment that mimics the Internet in such a way that the browser becomes the operating system
Internet Explorer 4 was released in [...]]]></description>
			<content:encoded><![CDATA[<p>I came across <a href="http://cgi.ebay.com/Internet-Explorer-4-Browsing-and-Beyond_W0QQitemZ110396544398QQcategoryZ378QQrdZ1QQssPageNameZWINQ3aCONGRATSQ3aRECOQ3aBINQQcmdZViewItem">this item</a> on ebay just now, and thought the first sentence from the description was interesting:</p>
<blockquote><p>Internet Explorer 4 is not just another Web broswer-it&#8217;s the first step toward a desktop computing environment that mimics the Internet <strong>in such a way that the browser becomes the operating system</strong></p></blockquote>
<p><a href="http://en.wikipedia.org/wiki/Internet_Explorer_4">Internet Explorer 4</a> was released in 1997, more than a decade ago, and more than a decade before <a href="http://en.wikipedia.org/wiki/Google_Chrome">Google Chrome</a> and now the <a href="http://en.wikipedia.org/wiki/Google_Chrome_OS">Google Chrome OS</a>.</p>
<p>Though the above description might not have been warranted, I thought it was interesting considering the direction browsers are taking today.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/LCwaAgsE9gTjzPr0E3phOt3GbFs/0/da"><img src="http://feedads.g.doubleclick.net/~a/LCwaAgsE9gTjzPr0E3phOt3GbFs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/LCwaAgsE9gTjzPr0E3phOt3GbFs/1/da"><img src="http://feedads.g.doubleclick.net/~a/LCwaAgsE9gTjzPr0E3phOt3GbFs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/Ipe0Zo5c7-A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/08/13/ie4-browser-of-the-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/08/13/ie4-browser-of-the-future/</feedburner:origLink></item>
		<item>
		<title>Dynamic Command Plugins</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/jVCxvaD8Hfk/</link>
		<comments>http://blog.ortz.org/2009/04/12/dynamic-command-plugins/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 18:13:26 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=222</guid>
		<description><![CDATA[I finished a major feature of OrtzIRC recently, so I thought I would write a bit about how it works.
First of all, a big thanks to Max for being the grease when my gears wouldn&#8217;t turn, so to speak.   And for talking me into doing commands this way instead of mine, which would [...]]]></description>
			<content:encoded><![CDATA[<p>I finished a major feature of OrtzIRC recently, so I thought I would write a bit about how it works.</p>
<p>First of all, a big thanks to <a href="http://maxschmeling.blogspot.com/">Max</a> for being the grease when my gears wouldn&#8217;t turn, so to speak. <img src='http://blog.ortz.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  And for talking me into doing commands this way instead of mine, which would not have worked out as well.</p>
<p>One of the goals with OrtzIRC is extensibility. OrtzIRC will have many categories of plugins which you write with your favorite .NET language, compile, and place in the plugins folder, much like Paint.NET. (Unlike Paint.NET, OrtzIRC will stay open source. wink wink) The first plugin category is commands.</p>
<p>Here&#8217;s what the &#8220;say&#8221; command looks like:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">namespace</span> OrtzIRC.<span style="color: #0000FF;">Commands</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">using</span> <span style="color: #008080;">OrtzIRC.Common</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF;">using</span> <span style="color: #008080;">OrtzIRC.PluginFramework</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
    <span style="color: #008080; font-style: italic;">/// Parts a channel</span>
    <span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
    <span style="color: #000000;">&#91;</span>Plugin<span style="color: #000000;">&#93;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Say <span style="color: #008000;">:</span> ICommand
    <span style="color: #000000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
        <span style="color: #008080; font-style: italic;">/// Sends a message to the current channel</span>
        <span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;channel&quot;&gt;&lt;/param&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;message&quot;&gt;&lt;/param&gt;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Execute<span style="color: #000000;">&#40;</span>Channel channel, <span style="color: #FF0000;">string</span> message<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            channel.<span style="color: #0000FF;">Say</span><span style="color: #000000;">&#40;</span>message<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Like with most IRC clients, &#8220;say&#8221; is the only command called automatically (when you type into the command box without specifying a command).</p>
<p>Commands must follow these rules to work properly:</p>
<ol>
<li>The class must implement the <tt>ICommand</tt> interface. At the moment this interface just lets the plugin loader know that it&#8217;s a command.</li>
<li>The class must also have the <tt>Plugin</tt> attribute. <tt>Plugin</tt> takes an optional string parameter to specify the name of the plugin (in this case the name of the command you type to execute the command, ie &#8220;/say&#8221;) otherwise the plugin&#8217;s name is the name of the class.</li>
<li>The command class must have at least one public <tt>Execute</tt> method. This method is what OrtzIRC calls when you type in a command.</li>
<li>The type of the first parameter in each of the Execute methods must be one of the following:
<ul>
<li><tt>Channel</tt></li>
<li><tt>Server</tt></li>
<li><tt>PrivateMessageSession</tt></li>
</ul>
<p>This parameter represents the context in which the command was executed, in other words, the window. (A channel window, PM window&#8230;)</li>
<li>The type of each of the remaining parameters must be either <tt>string</tt> or <tt>ChannelInfo</tt>. The <tt>ChannelInfo</tt> object is simply to let the command know that the user specified a channel name, ie &#8220;#luahelp&#8221;.</li>
<li>If you want autocomplete support the <tt>Execute</tt> methods must each have proper XML docs. (This has not yet been implemented, I will discuss it in more detail when it is)</li>
</ol>
<p>If these rules are not followed, the command will either not be loaded or not called when the user attempts to execute it. When a user types in a command, the plugin system looks through the commands it has loaded and looks for one that meets all these requirements and whose parameters match the parameters given by the user.</p>
<p>This command system is much more dynamic and easier on the programmer than other systems I have seen, which usually require the programmer to manage arguments manually and add a lot of redundant code.</p>
<p>Questions, comments, suggestions welcome.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/teL5uW-66_3iDsiJ5oyl-YSMBYA/0/da"><img src="http://feedads.g.doubleclick.net/~a/teL5uW-66_3iDsiJ5oyl-YSMBYA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/teL5uW-66_3iDsiJ5oyl-YSMBYA/1/da"><img src="http://feedads.g.doubleclick.net/~a/teL5uW-66_3iDsiJ5oyl-YSMBYA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/jVCxvaD8Hfk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/04/12/dynamic-command-plugins/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/04/12/dynamic-command-plugins/</feedburner:origLink></item>
		<item>
		<title>OrtzIRC Progress</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/BVS6d7hCYyU/</link>
		<comments>http://blog.ortz.org/2009/04/08/ortzirc-progress-2/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 03:44:40 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=220</guid>
		<description><![CDATA[&#8216;Bout time for a quick update!
OrtzIRC&#8217;s first (major) feature is in; Drop-In Commands.  I&#8217;ll post more detail in the future but basically you write some commands in C#, compile it, plop it in the plugins directory, and restart OrtzIRC. The command code is dynamically called when you enter an IRC command. I haven&#8217;t decided on [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;Bout time for a quick update!</p>
<p>OrtzIRC&#8217;s first (major) feature is in; Drop-In Commands.  I&#8217;ll post more detail in the future but basically you write some commands in C#, compile it, plop it in the plugins directory, and restart OrtzIRC. The command code is dynamically called when you enter an IRC command. I haven&#8217;t decided on scripting support but it&#8217;s not out of the question.</p>
<p>Just a few more core functionality features to put in like server settings and favorite channels and I&#8217;ll be ready to call it &#8220;alpha&#8221; and get ahold of some testers!</p>
<p>I&#8217;ll try to twitter about progress with OrtzIRC more. Also, I&#8217;d use hashtags if hashtags.org worked&#8230;</p>

<p><a href="http://feedads.g.doubleclick.net/~a/_VDR6SKNLmoX1c4HNjvhxT9Z6ic/0/da"><img src="http://feedads.g.doubleclick.net/~a/_VDR6SKNLmoX1c4HNjvhxT9Z6ic/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_VDR6SKNLmoX1c4HNjvhxT9Z6ic/1/da"><img src="http://feedads.g.doubleclick.net/~a/_VDR6SKNLmoX1c4HNjvhxT9Z6ic/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/BVS6d7hCYyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/04/08/ortzirc-progress-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/04/08/ortzirc-progress-2/</feedburner:origLink></item>
		<item>
		<title>4 Free Installers</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/PAonrDvf_S8/</link>
		<comments>http://blog.ortz.org/2009/02/05/4-free-installers/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 03:52:46 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=214</guid>
		<description><![CDATA[Via a wiki answer on StackOverflow:
WiX

Very powerful and flexible.
Can produce MSI packages (Microsoft deployment format of choice)
Almost no documentation
Very steep learning curve.
XML-based.
Recommended for very complex installators.

InnoSetup

Cannot produce MSI packages.
Based on INI files (less powerful but very low learning curve)
Possible to inject Pascal procedures for extra flexibility.
Probably the best choice for 90% of programs.

NSIS

Cannot produce MSI [...]]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://stackoverflow.com/questions/137657/free-install-wizard-software">a wiki answer</a> on <a href="http://stackoverflow.com">StackOverflow</a>:</p>
<blockquote><p><strong><a rel="nofollow" href="http://wix.sourceforge.net/">WiX</a></strong></p>
<ul>
<li><strong>Very powerful and flexible</strong>.</li>
<li>Can produce MSI packages (Microsoft deployment format of choice)</li>
<li><strong>Almost no documentation</strong></li>
<li><strong>Very steep learning curve.</strong></li>
<li>XML-based.</li>
<li>Recommended for very complex installators.</li>
</ul>
<p><strong><a rel="nofollow" href="http://www.innosetup.com/isinfo.php">InnoSetup</a></strong></p>
<ul>
<li>Cannot produce MSI packages.</li>
<li><strong>Based on INI files (less powerful but very low learning curve)</strong></li>
<li>Possible to inject Pascal procedures for extra flexibility.</li>
<li><strong>Probably the best choice for 90% of programs.</strong></li>
</ul>
<p><strong><a rel="nofollow" href="http://nsis.sourceforge.net/Main_Page">NSIS</a></strong></p>
<ul>
<li>Cannot produce MSI packages.</li>
<li>Fully scripted, very powerful but at cost of high learning curve.</li>
<li><strong>Recommened if WiX is too much and InnoSetup not enough.</strong></li>
</ul>
<p><strong><a rel="nofollow" href="http://www.advancedinstaller.com/">AdvancedInstaller</a></strong></p>
<ul>
<li>Basic version is free.</li>
<li>Can produce MSI packages.</li>
<li><strong>Very good user-interface, almost no learning curve to get things done.</strong></li>
<li>XML-based (but schema is not very user-friendly, doesn&#8217;t really matter as you would use GUI editor anyway)</li>
<li>The best option if you have only basic installer requirements and don&#8217;t have time to learn something new.</li>
</ul>
</blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/18FDJ1mlNV8eukVwBPA5xiedYWw/0/da"><img src="http://feedads.g.doubleclick.net/~a/18FDJ1mlNV8eukVwBPA5xiedYWw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/18FDJ1mlNV8eukVwBPA5xiedYWw/1/da"><img src="http://feedads.g.doubleclick.net/~a/18FDJ1mlNV8eukVwBPA5xiedYWw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/PAonrDvf_S8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/02/05/4-free-installers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/02/05/4-free-installers/</feedburner:origLink></item>
		<item>
		<title>New Host</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/ua5VqsvJGrw/</link>
		<comments>http://blog.ortz.org/2009/01/05/new-host/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 05:33:25 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[Flaming Head]]></category>
		<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=208</guid>
		<description><![CDATA[I took advantage of the deal Dreamhost was offering. 2 years unlimited bandwidth, unlimited space for $20!!
So no more downtime! (yay!)
You&#8217;ll probably get tons of 404&#8217;s so please have patience while I transfer everything.
]]></description>
			<content:encoded><![CDATA[<p>I took advantage of the deal Dreamhost was offering. 2 years unlimited bandwidth, unlimited space for <span style="text-decoration: underline;"><strong>$20!!</strong></span></p>
<p>So no more downtime! (yay!)</p>
<p>You&#8217;ll probably get tons of 404&#8217;s so please have patience while I transfer everything.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/a4PaS8CSXAc_02JKSqwoy0MeihM/0/da"><img src="http://feedads.g.doubleclick.net/~a/a4PaS8CSXAc_02JKSqwoy0MeihM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/a4PaS8CSXAc_02JKSqwoy0MeihM/1/da"><img src="http://feedads.g.doubleclick.net/~a/a4PaS8CSXAc_02JKSqwoy0MeihM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/ua5VqsvJGrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2009/01/05/new-host/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2009/01/05/new-host/</feedburner:origLink></item>
		<item>
		<title>OrtzIRC Update</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/rBKvIx64KU8/</link>
		<comments>http://blog.ortz.org/2008/12/30/ortzirc-update-4/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 02:41:06 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MAF]]></category>
		<category><![CDATA[MEF]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[System.AddIn]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=186</guid>
		<description><![CDATA[Time for another update.
Last time I posted about OrtzIRC, I mentioned I was looking at using System.AddIn as the framework for OrtzIRC&#8217;s plugins. (I&#8217;ll just call it MAF for Managed AddIn Framework, what it used to be called) Well the biggest problem with MAF is that it&#8217;s so freaking complicated. After I finally sat down [...]]]></description>
			<content:encoded><![CDATA[<p>Time for another update.</p>
<p><a href="http://blog.ortz.org/2008/11/23/ortzirc-update-3/">Last time</a> I posted about <a href="http://code.google.com/p/ortzirc/">OrtzIRC</a>, I mentioned I was looking at using <a href="http://www.codeplex.com/clraddins">System.AddIn</a> as the framework for OrtzIRC&#8217;s plugins. (I&#8217;ll just call it MAF for Managed AddIn Framework, what it used to be called) Well the biggest problem with MAF is that it&#8217;s so freaking complicated. After I finally sat down for a while and read up on it, it just seemed to get more and more complex. And even more so when I started asking &#8220;well, how would I do this?&#8221;. For instance, <em>everything </em>that crosses the isolation boundary needs a contract. Events, collections (you have to use IListContract), everything. So for OrtzIRC this meant every single event (something like two dozen) needed to be redefined as contracts. (Or wrapped, or whatever) Another problem is that <strong>nobody uses it</strong>. I&#8217;ve only found two projects on CodePlex that use it and virtually no blog posts about it. I&#8217;ll admit, I never completely understood it all, but I&#8217;m pretty sure it would&#8217;ve been a LOT of work. Our own way may also be a lot of work, but at least it&#8217;s our own way. <img src='http://blog.ortz.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Which is what I really wanted to discuss today&#8230;</p>
<p>As a quick side note, I did discover the <a href="http://www.codeplex.com/MEF">Managed Extensibility Framework</a>, being developed by Microsoft, presumably for future inclusion in the .NET framework. It looks really nice. Much simpler than MAF. And more popular too, at least on <a href="http://stackoverflow.com/questions/tagged/mef">Stack Overflow</a>. It&#8217;s a really young project though, and although they&#8217;re making it rather clear that MEF is here to stay, I think I&#8217;ll wait until CTP to give it serious consideration.</p>
<p>So Max and I had a disagreement about how to do the command plugins but that has been resolved (he won lol). So I&#8217;ll just point you to his <a href="http://maxschmeling.blogspot.com/2008/08/ortzirc.html">two</a> <a href="http://maxschmeling.blogspot.com/2008/08/irc-commands.html">posts</a> he wrote about it rather than re-explain it.</p>
<p>Onward and upward!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/mMDOEm6zITP1NoK7c-qIASDh5-M/0/da"><img src="http://feedads.g.doubleclick.net/~a/mMDOEm6zITP1NoK7c-qIASDh5-M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mMDOEm6zITP1NoK7c-qIASDh5-M/1/da"><img src="http://feedads.g.doubleclick.net/~a/mMDOEm6zITP1NoK7c-qIASDh5-M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/rBKvIx64KU8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2008/12/30/ortzirc-update-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2008/12/30/ortzirc-update-4/</feedburner:origLink></item>
		<item>
		<title>Making HTML Purifier Work With CodeIgniter</title>
		<link>http://feedproxy.google.com/~r/blog_of_ortz/~3/X-1NB9mqVJ4/</link>
		<comments>http://blog.ortz.org/2008/12/30/making-html-purifier-work-with-codeigniter/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 02:34:42 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[HTML Purifier]]></category>

		<guid isPermaLink="false">http://blog.ortz.org/?p=191</guid>
		<description><![CDATA[There&#8217;s a post here about getting it to work, but it&#8217;s old. Since then, the include statements for HTML Purifier were moved to their own file. In a normal script you would include the HTMLPurifier.includes.php file, but this isn&#8217;t in line with how CodeIgniter loads libraries, so it requires some hacking to get working.

 Download [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a post <a href="http://mindloop.be/htmlpurifier-and-the-codeigniter-framework/">here</a> about getting it to work, but it&#8217;s old. Since then, the include statements for <a href="http://htmlpurifier.org/">HTML Purifier</a> were moved to their own file. In a normal script you would include the HTMLPurifier.includes.php file, but this isn&#8217;t in line with how CodeIgniter <a href="http://codeigniter.com/user_guide/general/creating_libraries.html">loads libraries</a>, so it requires some hacking to get working.</p>
<ol>
<li> <a href="http://htmlpurifier.org/download.html">Download</a> HTML Purifier and put the contents of the library folder into your codeigniter /system/application/libraries folder.</li>
<li>Open HTMLPurifier.includes.php and change

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require</span> <span style="color: #0000ff;">'HTMLPurifier.php'</span><span style="color: #339933;">;</span></pre></div></div>

<p> to</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//require 'HTMLPurifier.php';</span></pre></div></div>

</li>
<li>Open HTMLPurifier.php and add this just under &lt;?php

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTMLPurifier.includes.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
</ol>
<p>And that&#8217;s all! Load with</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">library</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTMLPurifier'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><a href="http://htmlpurifier.org">HTML Purifier</a></p>
<p><a href="http://htmlpurifier.org/docs.html">HTML Purifier Docs</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/Gj6IoPzTtgG9307LQUCRthR9z8M/0/da"><img src="http://feedads.g.doubleclick.net/~a/Gj6IoPzTtgG9307LQUCRthR9z8M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Gj6IoPzTtgG9307LQUCRthR9z8M/1/da"><img src="http://feedads.g.doubleclick.net/~a/Gj6IoPzTtgG9307LQUCRthR9z8M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/blog_of_ortz/~4/X-1NB9mqVJ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.ortz.org/2008/12/30/making-html-purifier-work-with-codeigniter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.ortz.org/2008/12/30/making-html-purifier-work-with-codeigniter/</feedburner:origLink></item>
	</channel>
</rss>
