<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Outten.net</title>
    <link>http://www.outten.net/weblog/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Fighting Fires</title>
      <description>&lt;p&gt;I have run across &lt;a href="http://agileartisans.com/main/blog/62"&gt;this&lt;/a&gt; a few times in my career, but with a slightly different twist.  With my current team, it doesn't really happen with the developers (we are pretty conscious about seeing things from each other's point of view), but it occurs more often with the people in the analysis/support role.  They sometimes overreact to something just to be "firefighting" instead of maintaining a stable environment and understanding what is important to the larger set of users.  &lt;/p&gt;

&lt;p&gt;Still a very &lt;a href="http://www.testearly.com/2007/08/17/fire-your-best-peoplereward-the-lazy-ones/"&gt;good article&lt;/a&gt; from the developer perspective.&lt;/p&gt;</description>
      <pubDate>Mon, 01 Oct 2007 22:32:52 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:3fdd7c27-bb7e-4c52-b064-76e2e6560cec</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/10/01/fighting-fires</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Mercurial - Distributed Revision Control</title>
      <description>&lt;p&gt;Recently, I have tried &lt;a href="http://git.or.cz/"&gt;several&lt;/a&gt; &lt;a href="http://bazaar-vcs.org/"&gt;other&lt;/a&gt; version control systems to see what they were like as opposed to the &lt;a href="http://subversion.tigris.org/"&gt;normal one&lt;/a&gt;.  After trying these, I have come to like &lt;a href="http://www.selenic.com/mercurial/wiki/"&gt;Mercurial&lt;/a&gt; (or "hg" from the command line).  It is a &lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;distributed revision control&lt;/a&gt; application.  Why would I be interested especially when there is &lt;a href="http://subversion.tigris.org/"&gt;subversion&lt;/a&gt;?  Let's take a quick look.&lt;/p&gt;

&lt;p&gt;I have a scripts directory that is in "~/.bin".  I wanted to version all the files in that directory and back them up somewhere.  Here is what I did:&lt;/p&gt;

&lt;pre&gt;
  $ cd ~/.bin
  $ hg init                # initialize the repository
  $ hg add .               # add all of the files in the current directory
  $ hg commit              # commit the file to hg
&lt;/pre&gt;

&lt;p&gt;Now if I change any file, I can run &lt;em&gt;hg status&lt;/em&gt; or &lt;em&gt;hg diff&lt;/em&gt; with similar results as svn.  Once I am done, I just run &lt;em&gt;hg commit&lt;/em&gt; to update the local repository.&lt;/p&gt;

&lt;p&gt;What about backing up the files?&lt;/p&gt;

&lt;pre&gt;
  $ hg push ssh://someothercomputer.cam/backup_bin  # push the repository to a server
&lt;/pre&gt;

&lt;p&gt;Pretty easy.  No svn import and then checkout.  Visit the &lt;a href="http://www.selenic.com/mercurial/wiki/"&gt;site&lt;/a&gt; or read the &lt;a href="http://hgbook.red-bean.com/hgbook.html"&gt;book&lt;/a&gt; to see the other powerful features.&lt;/p&gt;</description>
      <pubDate>Mon, 03 Sep 2007 22:17:14 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:54d3d6fe-869c-431b-a851-be9840b2617b</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/09/03/mercurial-distributed-revision-control</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Busy Summer Technically</title>
      <description>&lt;p&gt;I thought I should post on what has been going on with me.  It has been a busy summer.  I attended two great conferences: &lt;a href="http://www.nofluffjuststuff.com/conference/raleigh/2007/07/index.html"&gt;Research Triangle Software Symposium&lt;/a&gt; and &lt;a href="http://www.rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt;.  I got some good information from both of these.&lt;/p&gt;&lt;h3&gt;NFJS&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://www.nofluffjuststuff.com/conference/raleigh/2007/07/index.html"&gt;Research Triangle Software Symposium&lt;/a&gt; (NFJS) was a good conference again this year.  It was the 3rd one I have been to and I came away having learned something every time.  This year the 2 main concepts I was impressed with were the &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile Development&lt;/a&gt; sessions and the discussions around &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; and &lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt;.  &lt;/p&gt;

&lt;h4&gt;&lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;From the &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile&lt;/a&gt; sessions, I learned 2 main things:  1) peer code review (thanks &lt;a href="http://agileartisans.com/"&gt;Jared&lt;/a&gt;) and 2) &lt;a href="http://alistair.cockburn.us/index.php/Earned-value_and_burn_charts"&gt;burn-up chart&lt;/a&gt;.  Both of these we have started using on our team.  The peer code review happens at the end of development right before you checkin your code.  It was recommended that you print out a copy of the &lt;em&gt;diff&lt;/em&gt; and ask a team member to review it.  Your team member has the right to say "no" (to avoid the &lt;a href="http://en.wikipedia.org/wiki/Context_switch"&gt;context switch&lt;/a&gt;).  When reviewing, give the team member some background on the issue and then go through the code with them.  It has helped communicate code changes and improve &lt;strong&gt;our&lt;/strong&gt; code (might be a good step before &lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;paired programming&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://alistair.cockburn.us/index.php/Earned-value_and_burn_charts"&gt;burn-up chart&lt;/a&gt; was a great idea that, I think, has been around for a while.  When a team member described it to me, we thought it was an excellent idea.  We have been struggling with how to predict (or even display) when a project we were on was going to have its first release.  This provides the insight on the number of things added and the number of things completed.  We have created one of these in the form of a &lt;a href="http://www.xprogramming.com/xpmag/BigVisibleCharts.htm"&gt;big visible chart&lt;/a&gt; at work.  I really like this idea and I expect to use it more in the future.&lt;/p&gt;

&lt;h4&gt;&lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;This was a very interesting topic at the conference.  Even though this was a Java focused conference, I was surprised how few people were familiar with &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt;.  When I saw &lt;a href="http://jasonrudolph.com/"&gt;Jason Rudolph's&lt;/a&gt; talk on &lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt;, I was impressed that a Java framework had managed to mimic &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt;.  Then I was surprised at the number of attendees that thought this was a &lt;em&gt;new&lt;/em&gt; idea.  It was &lt;em&gt;really&lt;/em&gt; cool and if we hadn't already started using &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; I would consider it (although there might still &lt;a href="http://docs.codehaus.org/display/GRAILS/Grails+vs+Rails+Benchmark"&gt;be reasons to consider it&lt;/a&gt;).  I have to mention that &lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt; is possible because of the dynamic language &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; written in Java.  The combination of the two make this a powerful framework.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://www.rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://www.rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt; was a single track conference with some outstanding information in it.  Several of the talks were on where to take &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; (or where it will take us).  We need to be aware of &lt;a href="http://en.wikipedia.org/wiki/Smalltalk"&gt;how other languages&lt;/a&gt; have failed in the past and how there are similarities with &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;.  Is &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; just a step to the next big thing?  Is [Metaprogramming][mpg] the next big thing?  Is &lt;a href="http://www.defmacro.org/ramblings/concurrency.html"&gt;concurrency&lt;/a&gt; going to be an issue?&lt;/p&gt;

&lt;p&gt;There was a talk about &lt;a href="http://merb.rubyforge.org/files/README.html"&gt;Merb&lt;/a&gt; which was interesting.  &lt;a href="http://brainspl.at/"&gt;Ezra Zygmuntowicz&lt;/a&gt; pointed out some of the issues he has with &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; that &lt;a href="http://merb.rubyforge.org/files/README.html"&gt;Merb&lt;/a&gt; tries to address.  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://jicksta.com/"&gt;Jay Phillips&lt;/a&gt; enlightened us with his domain knowledge on VoIP.  &lt;a href="http://adhearsion.com/"&gt;Adhearsion&lt;/a&gt; is the framework he wrote that is an API to &lt;a href="http://asterisk.org/"&gt;Asterisk&lt;/a&gt; (and others).  This looks like an interesting option when the family grows up (each member of the house could have their own extension).&lt;/p&gt;

&lt;p&gt;The lightning talks were great and I particularly liked the talk on unit testing without the database (see &lt;a href="http://www.dcmanges.com/blog/rails-unit-record-test-without-the-database"&gt;Dan Manges&lt;/a&gt; for more info).  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://agileartisans.com/"&gt;Jared's&lt;/a&gt; talk was on C extensions in Ruby.  It got me thinking about how we could speed up our applications with a few C extensions.&lt;/p&gt;

&lt;p&gt;Last was &lt;a href="http://marcelmolina.com/"&gt;Marcel Molina's&lt;/a&gt; talk, which was on code beauty.  It was a good talk and sparked many questions from the audience.  He said there are 3 qualities that we need to balance in our code:  proportion, integrity and clarity.  He provided an example.   I am going to use this as a rule of thumb when writing code.&lt;/p&gt;

&lt;p&gt;These are just my thoughts from the &lt;a href="http://www.rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt;, but you can form your own by &lt;a href="http://rubyhoedown2007.confreaks.com/"&gt;watching the videos&lt;/a&gt; for yourself.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Although it was a busy time for me, I am glad I attended both events (and that my family was okay with it).   It is important part of my career along with the &lt;a href="http://ruby.meetup.com/3/"&gt;local&lt;/a&gt; &lt;a href="http://agile.meetup.com/29/"&gt;meet ups&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sat, 18 Aug 2007 13:34:35 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:96b54158-8de6-4a3f-a352-dabf62fee7d7</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/08/18/busy-summer-technically</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Trying a Different Keyboard</title>
      <description>&lt;p&gt;I am giving the &lt;a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvorak keyboard&lt;/a&gt; a try.  I have read about it a few times, but I didn't realize how easy it is to &lt;a href="http://dvzine.org/type/index.html"&gt;try&lt;/a&gt;.  The latest &lt;a href="http://nubyonrails.com/articles/the-mechanics-of-programming"&gt;article&lt;/a&gt; I read said go "cold turkey" for a month.  I will give it a try.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My goals:&lt;/strong&gt; improve my accuracy and speed&lt;/p&gt;</description>
      <pubDate>Sun, 15 Jul 2007 21:50:18 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:bb2ebf9c-185b-4583-a070-47a53dce9ffc</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/07/15/trying-a-different-keyboard</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Setting Up Openvpn</title>
      <description>&lt;p&gt;Recently, I setup openvpn so I could connect to a network remotely.  I wanted to route traffic to that network via openvpn even through the machines on the remote network were public IP addresses.  Here is what I did.&lt;/p&gt;&lt;p&gt;For the most part, I followed the &lt;a href="http://openvpn.net/howto.html"&gt;howto&lt;/a&gt; and modified the example configuration files for the client on server.  In this post, I am going to try and capture the unusual things I ran across that I had to do.&lt;/p&gt;

&lt;p&gt;Here is the basic diagram.&lt;/p&gt;

&lt;pre&gt;
  Client                                          Server
  Machine               Openvpn Gateway           Machine
  192.168.30.100 --&gt;  10.8.30.1/10.8.30.2 --&gt;  155.40.100.43
&lt;/pre&gt;

&lt;p&gt;I wanted select subnets on the 155.40.x.x network to be routed through the openvpn connection.  Here is an example of the modification I made to the server.conf.  This has the openvpn server push route changes to the client for select subnets.&lt;/p&gt;

&lt;pre&gt;
  ...
  push "route 155.40.120.x 255.255.255.0"
  push "route 155.40.174.x 255.255.255.0"
  push "route 155.40.56.x  255.255.255.0"
  ...
&lt;/pre&gt;

&lt;p&gt;On the server, I had to add the following for routing the subnets via iptables.&lt;/p&gt;

&lt;pre&gt;
  # enable ip forwarding
  echo 1 &gt; /proc/sys/net/ipv4/ip_forward

  # setup nat routing
  iptables -t nat -A POSTROUTING -s 10.8.30.0/24 -o eth0 -j MASQUERADE
&lt;/pre&gt;

&lt;p&gt;The last iptables command was the tricky command to figure out.  Once I added it, I was able to connect to machines on those subnets (155.40.120,  155.40.174,  155.40.56) through the openvpn connection to 155.40.100.43.  I was able to confirm this by running the "traceroute" command.&lt;/p&gt;

&lt;pre&gt;
  $ traceroute 155.40.174.23
&lt;/pre&gt;

&lt;p&gt;That is a brief summary of what I did.  I am now able to connect to the select subnets via openvpn.  My new openvpn connection appears to have come through the &lt;em&gt;Remote Machine&lt;/em&gt;.   This suits my needs nicely.&lt;/p&gt;

&lt;p&gt;For more details on how to setup openvpn, see the &lt;a href="http://openvpn.net/"&gt;website&lt;/a&gt; for both the howto and the FAQs.&lt;/p&gt;</description>
      <pubDate>Sat, 26 May 2007 06:39:04 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:87f88a88-0e77-4bb4-bd34-10b248503707</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/05/26/setting-up-openvpn</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Power of Firefox with Extensions</title>
      <description>&lt;p&gt;I ran across the &lt;a href="http://lifehacker.com/software/gmail/lifehacker-code-better-gmail-firefox-extension-251923.php"&gt;Better Gmail&lt;/a&gt; extension for &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;Firefox&lt;/a&gt; today when I saw &lt;a href="http://lifehacker.com/software/gmail/hack-attack-supercharge-your-gmail-252737.php"&gt;this video&lt;/a&gt;.  I was very impressed and it made me take a brief look at &lt;a href="http://www.greasespot.net/"&gt;Greesemonkey&lt;/a&gt;.  I have definitely heard of &lt;a href="http://www.greasespot.net/"&gt;Greesemonkey&lt;/a&gt;, but I didn't think I knew of a real application for it.  This was until today when I saw &lt;a href="http://lifehacker.com/software/gmail/lifehacker-code-better-gmail-firefox-extension-251923.php"&gt;Better Gmail&lt;/a&gt;.  I started thinking about all of the web apps that I use daily and how I could improve them with &lt;a href="http://www.greasespot.net/"&gt;Greesemonkey&lt;/a&gt;.  There are several that need improvements especially in navigation.&lt;/p&gt;</description>
      <pubDate>Tue, 17 Apr 2007 18:45:45 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:f0249e11-f3de-4e6c-aef3-d0dd6795f58c</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/04/17/power-of-firefox-with-extensions</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Orlando to London</title>
      <description>&lt;p&gt;I like step #23 on the Google directions &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=orlando+to+london&amp;amp;layer=&amp;amp;sll=46.41149,-42.91675&amp;amp;sspn=64.464576,148.359375&amp;amp;ie=UTF8&amp;amp;z=3&amp;amp;ll=40.044438,-39.902344&amp;amp;spn=70.023538,148.359375&amp;amp;om=1"&gt;from Orlando to London&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sun, 01 Apr 2007 09:35:16 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:5f7f8caa-71da-4f27-b1ed-dc6a8bca98f9</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/04/01/orlando-to-london</link>
      <category>General</category>
    </item>
    <item>
      <title>Think</title>
      <description>&lt;p&gt;I have been using &lt;a href="http://www.freeverse.com/think/"&gt;Think&lt;/a&gt; lately (handy tool for focusing on a Mac).  Today when I was leaving work, it made me laugh to think that I quit &lt;em&gt;&lt;a href="http://www.freeverse.com/think/"&gt;Think&lt;/a&gt;&lt;/em&gt;ing.&lt;/p&gt;</description>
      <pubDate>Mon, 12 Mar 2007 21:24:51 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:d0871673-55f2-4f0e-8619-b36ab85f3470</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/03/12/think</link>
      <category>Tech</category>
    </item>
    <item>
      <title>Mount Remote Filesystems - MacFUSE</title>
      <description>&lt;p&gt;I ran across &lt;a href="http://code.google.com/p/macfuse/"&gt;MacFUSE&lt;/a&gt; a few weeks ago.  I read the instructions for compiling it and I didn't think it was worth the effort.  I recently found out that there are compiled versions and the instructions are in the &lt;em&gt;&lt;a href="http://code.google.com/p/macfuse/wiki/QUICKER_START_GUIDE"&gt;Quicker Start Guide&lt;/a&gt;&lt;/em&gt;.  The &lt;em&gt;sshfs&lt;/em&gt; application comes in extremely handy especially when used with my &lt;a href="http://macromates.com/"&gt;favorite editor&lt;/a&gt;.  I know this has been &lt;a href="http://googlemac.blogspot.com/2007/01/taming-mac-os-x-file-systems.html"&gt;blogged about already&lt;/a&gt;, but I just ran across it.  Make sure you checkout the video with some interesting ideas on how to use &lt;a href="http://code.google.com/p/macfuse/"&gt;MacFUSE&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Thu, 01 Feb 2007 22:29:16 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5c9287c9-ef59-47bd-896b-b6d998015fd8</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/02/01/mount-remote-filesystems-macfuse</link>
      <category>Tech</category>
    </item>
    <item>
      <title>GNU Screen</title>
      <description>&lt;p&gt;I have been using &lt;a href="http://en.wikipedia.org/wiki/GNU_Screen"&gt;GNU Screen&lt;/a&gt; for a couple of years.  It comes in very handy when accessing multiple terminal windows.  Yesterday, I found &lt;a href="http://gentoo-wiki.com/TIP_Using_screen"&gt;this tip page&lt;/a&gt; in the Gentoo wiki.  I was actually trying to figure out how to do something else when I stumbled onto &lt;a href="http://gentoo-wiki.com/TIP_Using_screen#Change_escape_sequence"&gt;changing the escape sequence&lt;/a&gt; section.  &lt;/p&gt;&lt;p&gt;As part of the bash shell, I frequently use the ctrl-e (end of line), ctrl-r (reverse history search) and ctrl-a (beginning of line).  I had looked for something like &lt;a href="http://gentoo-wiki.com/TIP_Using_screen#Change_escape_sequence"&gt;this&lt;/a&gt; before, but just didn't find it.  Since changing the escape sequence, I have the ctrl-a binding available again in the screen terminal shell.  I wonder how long it will take me to learn that the back-tick is my new escape sequence (it does seem more convenient when I remember).&lt;/p&gt;</description>
      <pubDate>Fri, 05 Jan 2007 22:05:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:53d74caa-62dc-451d-976e-9f9ab393d764</guid>
      <author>Richard</author>
      <link>http://www.outten.net/weblog/articles/2007/01/05/gnu-screen</link>
      <category>Tech</category>
    </item>
  </channel>
</rss>
