<?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>NetHorus Blog</title>
	<atom:link href="http://blog.nethorus.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.nethorus.org</link>
	<description>NetHorus is an Open Source NMS</description>
	<lastBuildDate>Wed, 02 Jun 2010 21:56:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>More SNMP parsing</title>
		<link>http://blog.nethorus.org/?p=68</link>
		<comments>http://blog.nethorus.org/?p=68#comments</comments>
		<pubDate>Wed, 02 Jun 2010 21:56:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=68</guid>
		<description><![CDATA[I&#8217;m ready to tear my hair out. No wonder nobody else codes MIB parsers! Still working. I may come out of this alive&#8230;]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m ready to tear my hair out.  No wonder nobody else codes MIB parsers!</p>
<p>Still working.  I may come out of this alive&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=68</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parsing MIBs and tearing my hair out</title>
		<link>http://blog.nethorus.org/?p=66</link>
		<comments>http://blog.nethorus.org/?p=66#comments</comments>
		<pubDate>Mon, 03 May 2010 14:13:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=66</guid>
		<description><![CDATA[It&#8217;s a frustrating business, this &#8220;covert MIB files to something readable with Ruby&#8221;. Net-SNMP has it sorted with a %MIB object in perl with information on all the MIB files that it has processed. The biggest problem I face is that I need to parse all the MIB files using smidump (which I&#8217;ve already done), [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a frustrating business, this &#8220;covert MIB files to something readable with Ruby&#8221;.  Net-SNMP has it sorted with a %MIB object in perl with information on all the MIB files that it has processed.</p>
<p>The biggest problem I face is that I need to parse all the MIB files using smidump (which I&#8217;ve already done), and store them in memory in some half-sensible format which I can then sanity-check and insert in to a database.  The sanity checking is what&#8217;s taking time.</p>
<p>No wonder so many people do the &#8216;easy&#8217; bit of SNMP <img src='http://blog.nethorus.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=66</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More MIB parsing</title>
		<link>http://blog.nethorus.org/?p=64</link>
		<comments>http://blog.nethorus.org/?p=64#comments</comments>
		<pubDate>Thu, 25 Mar 2010 15:53:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=64</guid>
		<description><![CDATA[Crikey. Delving in to SMIv2 has opened up many avenues for problems. Still, I am battling through them and I&#8217;m nearly there with a MIB compiler. That&#8217;ll get SNMP table retrieval working again, and let me get on with coding an SNMP trap receiver.]]></description>
			<content:encoded><![CDATA[<p>Crikey.  Delving in to <a href="http://tools.ietf.org/html/rfc2578">SMIv2</a> has opened up many avenues for problems.  Still, I am battling through them and I&#8217;m nearly there with a MIB compiler.  That&#8217;ll get SNMP table retrieval working again, and let me get on with coding an SNMP trap receiver.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=64</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIB Parsing</title>
		<link>http://blog.nethorus.org/?p=63</link>
		<comments>http://blog.nethorus.org/?p=63#comments</comments>
		<pubDate>Wed, 17 Mar 2010 22:25:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=63</guid>
		<description><![CDATA[I&#8217;m not content with hard-coding a load of MIB-specific data in NetHorus. With the aid of smidump and REXML, I am working on converting MIBs to XML and importing them in to NetHorus. Unfortunately, this takes time and my social life is hectic at the moment. I miss my hour-long commutes and coding time]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not content with hard-coding a load of MIB-specific data in NetHorus.  With the aid of <a href="http://www.ibr.cs.tu-bs.de/projects/libsmi/smidump.html">smidump</a> and <a href="http://www.germane-software.com/software/rexml/">REXML</a>, I am working on converting MIBs to XML and importing them in to NetHorus.</p>
<p>Unfortunately, this takes time and my social life is hectic at the moment.  I miss my hour-long commutes and coding time <img src='http://blog.nethorus.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=63</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPAddr -&gt; IP</title>
		<link>http://blog.nethorus.org/?p=59</link>
		<comments>http://blog.nethorus.org/?p=59#comments</comments>
		<pubDate>Sun, 14 Feb 2010 15:06:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=59</guid>
		<description><![CDATA[A month or two ago, I&#8217;d noticed some RSpec tests were taking a long time to run. When my ADSL connection dropped out during the day, I found the tests took an increasingly long time to run. Strange &#8211; how can lack of Internet connectivity cause some straightforward specs to&#8230; aah, it&#8217;s because they&#8217;re doing [...]]]></description>
			<content:encoded><![CDATA[<p>A month or two ago, I&#8217;d noticed some <a href="http://rspec.info/">RSpec</a> tests were taking a long time to run.  When my ADSL connection dropped out during the day, I found the tests took an increasingly long time to run.  Strange &#8211; how can lack of Internet connectivity cause some straightforward specs to&#8230; aah, it&#8217;s because they&#8217;re doing DNS lookups all the time.</p>
<p><a href="http://www.deploy2.net/">Brian Candler</a>, a colleague of mine, then published the API-compatible (<strong>UPDATE: Brian reminds me it is <em>mostly</em> API-compatible &#8211; see his comment</strong>) <a href="http://github.com/deploy2/ruby-ip">ruby-ip</a>.  To quote verbatim:</p>
<blockquote><p><strong>Why not IPAddr?</strong></p>
<p>Ruby bundles an IPAddr class (ipaddr.rb). However there are a number of serious problems with this library.</p>
<ol>
<li>Given an IP address with a netmask or prefix (e.g. 192.0.2.0/24) it’s very hard to get access to the netmask part. It involves digging around instance variables.</li>
<li>It’s impossible to deal with an off-base address with prefix, because IPAddr forcibly masks it to the base. e.g. 192.0.2.53/24 is stored as 192.0.2.0/24</li>
<li>IPAddr uses calls to the socket library to validate IP addresses, and this can trigger spurious DNS lookups when given an invalid IP address. ruby-ip does not depend on the socket library at all, unless you require ‘ip/socket’ to have access to the Socket::AF_INET and Socket::AF_INET6 constants.</li>
</ol>
</blockquote>
<p>Today&#8217;s checkin waves goodbye to IPAddr, and gives a warm handshake to IP.  Thanks, Brian!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=59</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Making the perl in to ruby</title>
		<link>http://blog.nethorus.org/?p=57</link>
		<comments>http://blog.nethorus.org/?p=57#comments</comments>
		<pubDate>Sun, 24 Jan 2010 14:29:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=57</guid>
		<description><![CDATA[I think it&#8217;s high time I removed the SNMP proxy.  It&#8217;s coded in perl, which is a language I love and have used for years, but not one which fits in to NetHorus in any way that could be considered pretty. The history is concise &#8211; since NetHorus depends on SNMP heavily, it made sense [...]]]></description>
			<content:encoded><![CDATA[<p>I think it&#8217;s high time I removed the SNMP proxy.  It&#8217;s coded in perl, which is a language I love and have used for years, but not one which fits in to NetHorus in any way that could be considered pretty.</p>
<p>The history is concise &#8211; since NetHorus depends on SNMP heavily, it made sense to use Perl&#8217;s SNMP library to get things up and running.  I coded a proxy using XMLRPC, which Perl and Ruby both speak, with the intention of removing the Perl proxy at some time.</p>
<p>That time is now.  The <a href="http://snmplib.rubyforge.org/">SNMP support in Ruby</a> is there, some quick tests have shown it can import MIB files, so here goes&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=57</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to 2010</title>
		<link>http://blog.nethorus.org/?p=54</link>
		<comments>http://blog.nethorus.org/?p=54#comments</comments>
		<pubDate>Wed, 20 Jan 2010 08:02:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=54</guid>
		<description><![CDATA[Three or four months of development is now checked in to Subversion.  Over 90% of the code should be covered by RSpec tests, and there are two important new features: Background queue daemon, which queues jobs submitted from the web interface &#8211; and later, scheduled and reactive jobs. Worker process, which pulls jobs from the [...]]]></description>
			<content:encoded><![CDATA[<p>Three or four months of development is now checked in to Subversion.  Over 90% of the code should be covered by RSpec tests, and there are two important new features:</p>
<ul>
<li><strong>Background queue daemon</strong>, which queues jobs submitted from the web interface &#8211; and later, scheduled and reactive jobs.</li>
<li><strong>Worker process</strong>, which pulls jobs from the queue daemon and does the actual work.  A lot of the code from the Device model is now in a separate library.</li>
</ul>
<p>And what&#8217;s next on the roadmap?</p>
<ul>
<li><strong>Built-in SNMP support</strong> &#8211; no more external SNMP proxy.  I am biting the bullet and using Ruby&#8217;s SNMP support&#8230; wish me luck as it doesn&#8217;t appear to be as good as <a href="http://net-snmp.sourceforge.net/">Net-SNMP</a>!</li>
<li><strong>Scheduled jobs</strong>, such as backing up configurations every night (or more often)</li>
<li><strong>Cucumber support</strong> for testing.  Brian Candler (of <a href="http://www.deploy2.net/">deploy2.net</a>) has shown me exactly how cool it is.</li>
</ul>
<p>I am hoping to get a beta (or at least alpha) release out in the next few months.  That&#8217;s not bad going for somebody who has a full-time day job and a pretty busy social life <img src='http://blog.nethorus.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=54</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributed Ruby</title>
		<link>http://blog.nethorus.org/?p=52</link>
		<comments>http://blog.nethorus.org/?p=52#comments</comments>
		<pubDate>Sat, 12 Dec 2009 10:49:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=52</guid>
		<description><![CDATA[The cause of the silence this time?  Distributed Ruby (DRb).  It&#8217;s pretty magical, and I&#8217;m splitting out much of the Rails code in to Ruby code to be executed by a worker process. Anything long-running, such as inventorying a device, will happen in the background.  Anything instant will still happen in the background, but NetHorus [...]]]></description>
			<content:encoded><![CDATA[<p>The cause of the silence this time?  <a href="http://ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html">Distributed Ruby (DRb)</a>.  It&#8217;s pretty magical, and I&#8217;m splitting out much of the Rails code in to Ruby code to be executed by a worker process.</p>
<p>Anything long-running, such as inventorying a device, will happen in the background.  Anything instant will still happen in the background, but NetHorus will politely wait.</p>
<p>This is a fairly major change to NetHorus, and it does delay it being usable for a while longer.  Then again, if you need anything usable right now, you shouldn&#8217;t be using NetHorus anyway <img src='http://blog.nethorus.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=52</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new layout</title>
		<link>http://blog.nethorus.org/?p=47</link>
		<comments>http://blog.nethorus.org/?p=47#comments</comments>
		<pubDate>Tue, 22 Sep 2009 00:56:23 +0000</pubDate>
		<dc:creator>peter.hicks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=47</guid>
		<description><![CDATA[I am not the best at designing layouts &#8211; I&#8217;ll freely admit that.  Corinne Pritchard of Simply Understand, on the other hand, is really quite good at it. With her help (and a giant pizza), we have redesigned the stylesheet and overall layout.  The changes aren&#8217;t in NetHorus&#8217; Subversion repository just yet &#8211; give it [...]]]></description>
			<content:encoded><![CDATA[<p>I am not the best at designing layouts &#8211; I&#8217;ll freely admit that.  Corinne Pritchard of <a href="http://www.simplyunderstand.com/">Simply Understand</a>, on the other hand, is really quite good at it.</p>
<p>With her help (and a giant pizza), we have redesigned the stylesheet and overall layout.  The changes aren&#8217;t in <a href="http://svn.nethorus.org/websvn/">NetHorus&#8217; Subversion repository</a> just yet &#8211; give it a couple of days.</p>
<p><img class="size-full wp-image-48  alignnone" title="NetHorus: New Layout" src="http://blog.nethorus.org/wp-uploads/2009/09/nh_layout.png" alt="The new layout of NetHorus" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=47</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Development update</title>
		<link>http://blog.nethorus.org/?p=45</link>
		<comments>http://blog.nethorus.org/?p=45#comments</comments>
		<pubDate>Mon, 14 Sep 2009 06:58:54 +0000</pubDate>
		<dc:creator>peter.hicks</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nethorus.org/?p=45</guid>
		<description><![CDATA[More changes and updates &#8211; it&#8217;s been a whole 47 days since the last check-in, mostly due to my tardiness. Go check it out]]></description>
			<content:encoded><![CDATA[<p>More changes and updates &#8211; it&#8217;s been a whole 47 days since the last check-in, mostly due to my tardiness.</p>
<p>Go <a href="http://svn.nethorus.org/websvn/log.php?repname=nethorus&amp;path=%2Fnethorus%2F&amp;rev=0&amp;sc=0&amp;isdir=1">check it out</a> <img src='http://blog.nethorus.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nethorus.org/?feed=rss2&#038;p=45</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
