<?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>Blog of Ortz &#187; .NET</title>
	<atom:link href="http://ortz.org/tag/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://ortz.org</link>
	<description>The blog of Brian Ortiz aka Ortzinator, software developer, artist, and a swell guy.</description>
	<lastBuildDate>Thu, 22 Dec 2011 00:34:30 +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>WPF</title>
		<link>http://ortz.org/2010/10/03/wpf/</link>
		<comments>http://ortz.org/2010/10/03/wpf/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 01:30:45 +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[WPF]]></category>
		<guid isPermaLink="false">http://blog.ortz.org/?p=281</guid>
		<description><![CDATA[A while back (since I last blogged) I started reading WPF Unleashed, which I owned for some time but had put off reading. As I&#8217;m sure anyone who has learned WPF knows, it was a rough start, but soon I was getting the hang of it. Well, sort of. There are a lot of new [...]]]></description>
			<content:encoded><![CDATA[<p>A while back (since I last blogged) I started reading <a href="http://www.amazon.com/dp/0672328917">WPF Unleashed</a>, which I owned for some time but had put off reading. As I&#8217;m sure anyone who has learned WPF knows, it was a rough start, but soon I was getting the hang of it. Well, sort of. There are a lot of new concepts. You have to almost start from scratch because there&#8217;s not much knowledge you can bring over from Winforms. In fact, doing so can get you into trouble.</p>
<p>And then I discovered the keystone: the <a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx">Model-ViewModel-Model pattern</a>. It&#8217;s not that often that I get physically excited about something programming-related. Call me a dork, but I did a little fist pump while thinking about MVVM in the car one day.</p>
<p>What&#8217;s really exciting about all this the speed at which the new WPF front end for OrtzIRC is being developed. After just a few weeks of porting, the new front end is almost at the same functionality level as the old Winforms front end. And that&#8217;s as a WPF noob.</p>
<p><a href="http://blog.ortz.org/wp-content/uploads/2010/10/MainWindow-2010-09-25_14.03.30.png"><a href="http://blog.ortz.org/wp-content/uploads/2010/10/MainWindow-2010-09-25_14.03.301.png"><img class="alignnone size-full wp-image-284" style="border: 0pt none;" title="MainWindow-2010-09-25_14.03.30" src="http://blog.ortz.org/wp-content/uploads/2010/10/MainWindow-2010-09-25_14.03.301.png" alt="" width="668" height="433" /></a></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2010/10/03/wpf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Post</title>
		<link>http://ortz.org/2010/03/27/a-post/</link>
		<comments>http://ortz.org/2010/03/27/a-post/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 16:54:06 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[noise]]></category>
		<category><![CDATA[procedural]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://blog.ortz.org/?p=274</guid>
		<description><![CDATA[I get mad when people don&#8217;t blog so I&#8217;d better set a good example! I&#8217;ll be honest, I haven&#8217;t worked on OrtzIRC much. It needs more work that I&#8217;d first thought. The source is a mess and needs a lot of refactoring. I haven&#8217;t given up though, just taken a break! In place of OrtzIRC, [...]]]></description>
			<content:encoded><![CDATA[<p>I get mad when people don&#8217;t blog so I&#8217;d better set a good example!</p>
<p>I&#8217;ll be honest, I haven&#8217;t worked on OrtzIRC much. It needs more work that I&#8217;d first thought. The source is a mess and needs a lot of refactoring. I haven&#8217;t given up though, just taken a break!</p>
<p>In place of OrtzIRC, I&#8217;ve been working on the game I may have mentioned in the past. Hopefully the concept doesn&#8217;t turn out to be too unrealistic.</p>
<p>I&#8217;m planning on a space sim in the vein of Wing Commander, except it will be 2D top-down and not constrained to pre-determined &#8220;systems&#8221;. Everything will procedurally generated and the player will get around by &#8220;jumping&#8221; with an FTL drive to a set of coordinates, which may take you to something interesting, or take you to some empty space in the middle of nowhere.</p>
<p>Generating systems (at least visually) will be pretty easy. I think the challenge will be making those systems interesting and worth exploring. Another problem I can see is combat. In a 3D space sim, you fly the ship from a first-person perspective. But when it&#8217;s 2D to-down, you can&#8217;t do that. And so when you&#8217;re flying next to, or attacking, a ship much bigger than yours, you&#8217;d have to zoom out to see the other ship, at which point your ship would get very small on the screen and possibly make things difficult for you.</p>
<p>So many things to consider!</p>
<p>In the mean time, here are some screenshots:</p>
<p><img class="alignnone" title="Prcedural star field" alt="" src="http://dl.dropbox.com/u/313489/sshot6.png" width="667" height="521"></p>
<p><img class="alignnone" title="Generated planet test" alt="" src="http://dl.dropbox.com/u/313489/sshot.jpg" width="667" height="522"></p>
<p>The planet is still in the testing phase and is not yet &#8220;procedural&#8221;. The textures are generated with <a href="http://www.big-black-block.com/index.php?option=com_content&amp;view=article&amp;id=25&amp;Itemid=21">LibNoise.XNA</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2010/03/27/a-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progress</title>
		<link>http://ortz.org/2009/10/06/progress/</link>
		<comments>http://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; /&#62; &#60;/Network&#62; &#60;Network [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2009/10/06/progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Command Plugins</title>
		<link>http://ortz.org/2009/04/12/dynamic-command-plugins/</link>
		<comments>http://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 not [...]]]></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://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; font-weight: bold;">namespace</span> OrtzIRC<span style="color: #008000;">.</span><span style="color: #0000FF;">Commands</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">OrtzIRC.Common</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">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; /// Parts a channel /// &lt;/summary&gt;</span>
    <span style="color: #008000;">&#91;</span>Plugin<span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Say <span style="color: #008000;">:</span> ICommand
    <span style="color: #008000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">///&lt;summary&gt; /// Sends a message to the current channel /// &lt;/summary&gt;</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> Execute<span style="color: #008000;">&#40;</span>Channel channel, <span style="color: #6666cc; font-weight: bold;">string</span> message<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            channel<span style="color: #008000;">.</span><span style="color: #0000FF;">Say</span><span style="color: #008000;">&#40;</span>message<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#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>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2009/04/12/dynamic-command-plugins/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OrtzIRC Progress</title>
		<link>http://ortz.org/2009/04/08/ortzirc-progress-2/</link>
		<comments>http://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 [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2009/04/08/ortzirc-progress-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4 Free Installers</title>
		<link>http://ortz.org/2009/02/05/4-free-installers/</link>
		<comments>http://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 [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2009/02/05/4-free-installers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OrtzIRC Update</title>
		<link>http://ortz.org/2008/12/30/ortzirc-update-4/</link>
		<comments>http://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 [...]]]></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://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>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2008/12/30/ortzirc-update-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OrtzIRC Update</title>
		<link>http://ortz.org/2008/11/23/ortzirc-update-3/</link>
		<comments>http://ortz.org/2008/11/23/ortzirc-update-3/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 00:17:27 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[scripting]]></category>
		<guid isPermaLink="false">http://blog.ortz.org/?p=166</guid>
		<description><![CDATA[Just wanted to make a quick note about the progress of OrtzIRC. It&#8217;s been pretty slow lately. I really want to get commands in before I do anything else, just to get it in a semi-usable state. So this means taking a step back and trying to work out how to do plugins. We were [...]]]></description>
			<content:encoded><![CDATA[<p>Just wanted to make a quick note about the progress of <a href="http://www.ortzirc.com">OrtzIRC</a>.</p>
<p>It&#8217;s been pretty slow lately. I really want to get commands in before I do anything else, just to get it in a semi-usable state. So this means taking a step back and trying to work out how to do plugins.</p>
<p>We were kind of at a loss at first (I was anyway) but then I found out that .NET 3.5 had this new system for adding plugins to your apps <a href="http://msdn.microsoft.com/en-us/library/bb384241.aspx">System.AddIn</a>. So far this looks really nice, and I&#8217;ll be implementing it soon unless Max has any objections. The only issue I can see so far is that I don&#8217;t know how this will jibe with possibly adding scripting later on.</p>
<p>You can get updates more often by following me on <a href="http://twitter.com/ortzinator">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2008/11/23/ortzirc-update-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OrtzIRC Update</title>
		<link>http://ortz.org/2008/09/28/ortzirc-update-2/</link>
		<comments>http://ortz.org/2008/09/28/ortzirc-update-2/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 03:05:12 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[FlamingIRC]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Thresher]]></category>
		<category><![CDATA[XChat]]></category>
		<guid isPermaLink="false">http://blog.ortz.org/2008/09/28/ortzirc-update-2/</guid>
		<description><![CDATA[Progress has been slow, but it hasn&#8217;t stopped. It&#8217;s been a while since the last update so forgive me if I repeat anything. The biggest news to tell is probably FlamingIRC. I decided pretty early on that there was no need to reinvent the wheel and so decided against writing my own IRC lib. So [...]]]></description>
			<content:encoded><![CDATA[<p>Progress has been slow, but it hasn&#8217;t stopped. It&#8217;s been a while since the last update so forgive me if I repeat anything.</p>
<p>The biggest news to tell is probably FlamingIRC. I decided pretty early on that there was no need to reinvent the wheel and so decided against writing my own IRC lib. So I went with what seemed to be the most popular IRC library for .NET, <a href="http://thresher.sourceforge.net/" target="_blank">Thresher</a>. After having it pointed out to me how old and outdated the code for Thresher was (I think it was written for the first version of .NET) I decided to fork it and name it FlamingIRC. Sadly it&#8217;s under the GPL so it has to stay that way. I hate how viral GPL is. It&#8217;s very heavy-handed.</p>
<p><a href="http://maxschmeling.blogspot.com/" target="_blank">Max Schmeling</a> sort of gave OrtzIRC a shot of adrenaline, cleaning up some of my code and improving a lot of things overall. I just wish I could code as fast as him&#8230;</p>
<p>I&#8217;m still thinking about features to add, mainly plugins and scripting. I&#8217;ve been thinking that both a plugin system and a scripting system would be over kill, but that seems to be how <a href="http://xchat.org/" target="_blank">XChat</a> does it so I&#8217;ll have to do some more research. <strong>If you have any experience with implementing plugin systems and/or scripting systems or know where I can get some information on implementing them, please leave a comment!</strong></p>
<p>I don&#8217;t think I&#8217;ve linked to the project page yet, so <a href="http://www.ortzirc.com" target="_blank">here you go</a>. You can take a look at the code if you want but there really isn&#8217;t anything to see yet. However if you do happen to see any bugs, or if you have any feature requests feel free to open an issue. I also started a page on <span style="text-decoration: line-through;"><a href="http://code.google.com/p/ortzirc/wiki/Features" target="_blank">planned features</a></span>, mostly for my reference., which is obviously subject to frequent change.</p>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2008/09/28/ortzirc-update-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>OrtzIRC Update</title>
		<link>http://ortz.org/2008/08/10/ortzirc-update/</link>
		<comments>http://ortz.org/2008/08/10/ortzirc-update/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 18:02:21 +0000</pubDate>
		<dc:creator>Ortzinator</dc:creator>
				<category><![CDATA[OrtzIRC]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[IRC]]></category>
		<guid isPermaLink="false">http://blog.ortz.org/?p=85</guid>
		<description><![CDATA[After practically rewriting it 3 or 4 times, I&#8217;ve made some real progress on OrtzIRC. The basic structure is complete. Server and channel messages appear in separate windows, channel messages are formatted nicely, the nickname list is filled correctly now. Although commands aren&#8217;t parsed or handled yet, the command box keeps a history of commands [...]]]></description>
			<content:encoded><![CDATA[<p>After practically rewriting it 3 or 4 times, I&#8217;ve made some real progress on OrtzIRC.</p>
<p>The basic structure is complete. Server and channel messages appear in separate windows, channel messages are formatted nicely, the nickname list is filled correctly now. Although commands aren&#8217;t parsed or handled yet, the command box keeps a history of commands like mIRC and other clients do. Although it&#8217;s not anything new and it was simple to implement once I figured out how, I was really proud of the way it worked when I was done.</p>
<p>As far as actual features there&#8217;s not much to speak of at the moment. There&#8217;s still a lot of basic funtionality that needs to be worked out, like persistent user settings, server settings, favorite channels, auto-auth/identify, etc. I may write up a list of things that need to be implemented and post it.</p>
<p>I need to send a huge thanks to <a href="http://maxschmeling.blogspot.com/" target="_blank">Max Schmeling</a> for the loads of advice and direction as well as letting me pelt him with questions on a daily basis. Thanks Max!</p>
<p>Update: Here&#8217;s a screenshot:</p>
<p><a href="http://blog.ortz.org/wp-content/uploads/2008/08/ortzirc3.gif"><img class="aligncenter size-medium wp-image-87" title="ortzirc3" src="http://blog.ortz.org/wp-content/uploads/2008/08/ortzirc3-300x250.gif" alt="" width="300" height="250" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ortz.org/2008/08/10/ortzirc-update/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

