<?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>4thmouse.com &#187; Programming</title>
	<atom:link href="http://4thmouse.com/index.php/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://4thmouse.com</link>
	<description>Software Engineering.</description>
	<lastBuildDate>Wed, 28 Jul 2010 03:38:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>More fun with Java (scope and duplicates)</title>
		<link>http://4thmouse.com/index.php/2010/07/27/more-fun-with-java-scope-and-duplicates/</link>
		<comments>http://4thmouse.com/index.php/2010/07/27/more-fun-with-java-scope-and-duplicates/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 03:32:56 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[scope]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=398</guid>
		<description><![CDATA[I thought this was interesting&#8230; In Java, a block scoped variable may conflict with a local variable declared later in method scope, but not previously (as shown below):

class A&#123;
  public static void main&#40;String args&#91;&#93;&#41;&#123;
    &#123;int k = 5;&#125;
    int k = 12; //this is OK
    [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2010/07/27/more-fun-with-java-scope-and-duplicates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protected within Java Enums</title>
		<link>http://4thmouse.com/index.php/2010/07/22/protected-within-java-enums/</link>
		<comments>http://4thmouse.com/index.php/2010/07/22/protected-within-java-enums/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 16:37:30 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[enum]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=385</guid>
		<description><![CDATA[I just noticed that java enums allow protected member variables and methods. Why is this interesting? Can you think of any code that might actually make use of a protected member in an enum (as opposed to private)? Example after the jump (warning, not practical&#8230;).


package enumerations;
&#160;
public enum ExampleEnum&#123;
    FIRST&#123;
    [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2010/07/22/protected-within-java-enums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWIG, Java, and JRuby</title>
		<link>http://4thmouse.com/index.php/2010/07/22/swig-java-and-jruby/</link>
		<comments>http://4thmouse.com/index.php/2010/07/22/swig-java-and-jruby/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 12:30:47 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=364</guid>
		<description><![CDATA[Providing a robust, maintainable, and interactive interface to your C/C++ application can be a challenge, but I&#8217;ve found that a combination of SWIG, Java, and JRuby (or Jython if you prefer) makes for a very powerful combination.

NOTE: All code is available here.
All languages have their trade offs: C/C++ is speedy, but hard to maintain and [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2010/07/22/swig-java-and-jruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opening a TUN Device on UNIX</title>
		<link>http://4thmouse.com/index.php/2009/11/19/opening-a-tun-device-on-unix/</link>
		<comments>http://4thmouse.com/index.php/2009/11/19/opening-a-tun-device-on-unix/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 13:18:36 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[CentOs]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[RHEL]]></category>
		<category><![CDATA[tap]]></category>
		<category><![CDATA[tun]]></category>
		<category><![CDATA[tunnel interface]]></category>
		<category><![CDATA[tuntap]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtual interface]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=286</guid>
		<description><![CDATA[The TUN/TAP interface under Linux provides user space access to Transport (Ethernet) or Network Layer (IP) traffic by allowing a developer to create a &#8220;virtual&#8221; interface that can be openend in user space as a file descriptor.

What is it Used For?
The TUN/TAP interface is most often used by tunneling applications like openVPN. In that scenario, [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2009/11/19/opening-a-tun-device-on-unix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RSS and mercurial</title>
		<link>http://4thmouse.com/index.php/2009/10/27/rss-and-mercurial/</link>
		<comments>http://4thmouse.com/index.php/2009/10/27/rss-and-mercurial/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 01:44:20 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[hgwebdir]]></category>
		<category><![CDATA[hgwweb]]></category>
		<category><![CDATA[individual file]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[source control]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=228</guid>
		<description><![CDATA[In a surprisingly well-kept secret, HgWeb and HgWebDir support RSS. Details below.

mercurial is a neat distributed revision control tool which has a web interface called HgWeb. Anyway although there are no links on the web page generated by HgWeb nor any obvious documentation with regards to RSS, you can get it.
Even on a per-file basis! [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2009/10/27/rss-and-mercurial/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why is XML Better?</title>
		<link>http://4thmouse.com/index.php/2009/07/24/why-is-xml-better/</link>
		<comments>http://4thmouse.com/index.php/2009/07/24/why-is-xml-better/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 15:41:22 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XSLT]]></category>
		<category><![CDATA[standard]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=201</guid>
		<description><![CDATA[Why is XML better than custom internal formats? Isn&#8217;t a non-standard set of XML tags basically equivalent to a custom format when using data internally to an application? Absolutely not, and here is why.

Why the Article
I still regularly run into the idea that there isn&#8217;t really much to XML. Essentially XML is just another text [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2009/07/24/why-is-xml-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DVSL: An Alternative to XSLT</title>
		<link>http://4thmouse.com/index.php/2009/06/26/dvsl-an-alternative-to-xslt/</link>
		<comments>http://4thmouse.com/index.php/2009/06/26/dvsl-an-alternative-to-xslt/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 12:44:16 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XSLT]]></category>
		<category><![CDATA[dvsl]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=189</guid>
		<description><![CDATA[DVSL is a fairly small, little known, product associated with the Velocity project over at Apache which takes the best part of XSLT: XPATH, and replaces the verbose and frustrating scripting of XSLT with a java-based template language instead.

What&#8217;s Wrong With XSLT?
Limited
The biggest problem with XSLT is the problem I have with custom-written domain-specific languages [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2009/06/26/dvsl-an-alternative-to-xslt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spirit Vs. Lex/yacc/et al.</title>
		<link>http://4thmouse.com/index.php/2008/12/10/spirit-vs-lexyaccet-al/</link>
		<comments>http://4thmouse.com/index.php/2008/12/10/spirit-vs-lexyaccet-al/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 20:26:39 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[BNF]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[boost::spirit]]></category>
		<category><![CDATA[LALR]]></category>
		<category><![CDATA[Lex]]></category>
		<category><![CDATA[spirit]]></category>
		<category><![CDATA[Yac]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=153</guid>
		<description><![CDATA[What are the differences and when should I use one or the other?

What is Lex/Yacc?
Lex and Yacc are some fairly ancient GNU tools which you can use to parse custom LALR languages (typically programming languages). Lex and Yacc are actually separate programs which generate C code from a custom language unique to each.
Lex generates code [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/12/10/spirit-vs-lexyaccet-al/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boost Spirit III (Adding Error Handling)</title>
		<link>http://4thmouse.com/index.php/2008/11/04/boost-spirit-iii-adding-error-handling/</link>
		<comments>http://4thmouse.com/index.php/2008/11/04/boost-spirit-iii-adding-error-handling/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 20:51:31 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[boost::spirit]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[grammar parser]]></category>
		<category><![CDATA[parse_error]]></category>
		<category><![CDATA[spirit]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=119</guid>
		<description><![CDATA[This article expands the example from the previous two, here and here, to add more specific error information.
As always the full code from the example is available here here.

The Problem
In our previous example an error simply resulted in a generic error message and a printout of the location at which the error occurred.
Ideally we should [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/11/04/boost-spirit-iii-adding-error-handling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Writing a custom check macro for the BOOST test library</title>
		<link>http://4thmouse.com/index.php/2008/10/13/writing-a-custom-check-macro-for-the-boost-test-library/</link>
		<comments>http://4thmouse.com/index.php/2008/10/13/writing-a-custom-check-macro-for-the-boost-test-library/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 14:36:22 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[boost test]]></category>
		<category><![CDATA[boost test library]]></category>
		<category><![CDATA[check macro]]></category>
		<category><![CDATA[custom macro]]></category>
		<category><![CDATA[require macro]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[warn macro]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=82</guid>
		<description><![CDATA[In this article I demonstrate how to write your own check macros for the boost test library (not guaranteed to work in the future)
Full source code for this example can be downloaded here.

The problem
For the purposes of this article I would like to verify that a collection is monotonically increasing. There are a couple ways [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/10/13/writing-a-custom-check-macro-for-the-boost-test-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
