<?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>Colin Harrington</title>
	
	<link>http://colinharrington.net/blog</link>
	<description>Technologist, Consultant, Software Engineer, Entrepreneur and Musician</description>
	<lastBuildDate>Tue, 04 Oct 2011 01:46:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ColinHarrington" /><feedburner:info uri="colinharrington" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ColinHarrington</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>SSH without passwords (Public/Private Keys)</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/k1hfbvqkStc/</link>
		<comments>http://colinharrington.net/blog/2011/10/ssh-without-passwords-publicprivate-keys/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 01:46:57 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[pki]]></category>
		<category><![CDATA[public private keys]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=250</guid>
		<description><![CDATA[Public/Private Key Cryptography isn&#8217;t exactly new stuff in the world of Computing. It makes our world go round. It is the basis for secure communication in today&#8217;s world. HTTPS, SSL, TLS, SSH are all cryptographic protocols that use Public/Private key infrastructures. Without these protocols, we would think twice about using credit card, banking or any [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dl.dropbox.com/u/129843/opi/System-lock-screen.png" style="float: right; margin: 5px 0 5px 10px;" alt="Secure" title="security"><a href="http://en.wikipedia.org/wiki/Public-key_cryptography"> Public/Private Key Cryptography</a> isn&#8217;t exactly new stuff in the world of Computing.  It makes our world go round.  It is the basis for secure communication in today&#8217;s world. HTTPS, SSL, TLS, SSH are all <a href="http://en.wikipedia.org/wiki/Cryptographic_protocol ">cryptographic protocols</a> that use Public/Private key infrastructures.  Without these protocols, we would think twice about using credit card, banking or any other sensitive information on the Internet.</p>
<p>We all know that passwords aren&#8217;t very secure.  If you choose a password that is easy to remember then its easier to guess via brute force.  If you choose a password that is random or hard to remember then you are more likely to write it down.  Any well-versed digital community member already has many username/password credentials to remember so we are less likely to remember extremely difficult random passwords.  This is the password paradox, which leads me to look into managing access via public/private key pairs instead.</p>
<h2>Generate a public/private key pair (if you don&#8217;t have one already)</h2>
<p><a href="https://github.com/">Github</a> has an <a href="http://help.github.com/linux-set-up-git/#_set_up_ssh_keys">excellent tutorial with good illustrations</a> on how to generate ssh keys with <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&amp;sektion=1">ssh-keygen</a>, but here is an overview:</p>
<ul>
<li><em><strong>*Backup your existing keys*</strong></em> &#8212; if they exists so that you don&#8217;t overwrite them.</li>
<li>generate a new key with ssh-keygen</li>
</ul>
<p><em>Definitely setup a passphrase!</em> &#8211; Its like a password for your private key.  The passphrase is a second line of defence if anyone were to acquire your private key.</p>
<p>The <code>.pub</code> is your public key, you can safely share this anywhere, whereas the private key is entirely private!   <em>DO NOT</em> show anyone, don&#8217;t copy it anywhere and only securely back it up.. This is your new password and large liability if it fell into the wrong hands.</p>
<p>Example:<br />
<script src="https://gist.github.com/890007.js?file=gistfile1.txt"></script> Some folks like to generate and manage keypairs for each location, or at least manage certain levels of keys, but I&#8217;m not going to dive into that topic.</p>
<h2>Configure the Server (if needed)</h2>
<p>Make sure that the server has Public key authentication enabled (most do). for <a href="http://www.openssh.com/">OpenSSH</a> it would be the following in the <code>sshd_config</code>:</p>
<p style="padding-left: 30px;"><code>RSAAuthentication yes<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile	.ssh/authorized_keys</code></p>
<p>Then all you have to do is:</p>
<ul>
<li> Put your public key (the one ending in <code>.pub</code>) as a line in the <code>~/.ssh/authorized_keys</code> file (create it if it doesn&#8217;t exist)</li>
<li> Restart your SSH server</li>
<li> Log in without being prompted for a password</li>
</ul>
<p>This is really handy for managing servers especially on <a href="http://aws.amazon.com/ec2/">Amazon&#8217;s EC2</a>, local access between machines, <a href="http://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol">SFTP</a>, SSH tunneling, or even getting access to a jailbroken iPhone or any other device with <a href="http://www.openssh.com/">OpenSSH</a> installed on it.</p>
<p>The guys over at <a href="http://www.debian-administration.org">debian-administrator.org</a> wrote a good guide to <a href="http://www.debian-administration.org/articles/152 ">Password-less logins with OpenSSH</a> that is worth looking into if you have issues or want to dive deeper.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">Passwords aren’t very secure, you already know this. If you use one  that’s easy to remember, it’s easier to guess or brute-force (try many  options until one works). If you use one that’s random it’s hard to  remember, and thus you’re more inclined to write the password down. Both  of these are Very Bad Things™. This is why you’re using ssh keys.</div>

<p><a href="http://feedads.g.doubleclick.net/~a/m7xwKQLJPxEqtXr_qrJH1doJ528/0/da"><img src="http://feedads.g.doubleclick.net/~a/m7xwKQLJPxEqtXr_qrJH1doJ528/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/m7xwKQLJPxEqtXr_qrJH1doJ528/1/da"><img src="http://feedads.g.doubleclick.net/~a/m7xwKQLJPxEqtXr_qrJH1doJ528/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/k1hfbvqkStc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2011/10/ssh-without-passwords-publicprivate-keys/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2011/10/ssh-without-passwords-publicprivate-keys/</feedburner:origLink></item>
		<item>
		<title>Running MPIDE (ChipKIT’s Arduino IDE remake) on 64bit Ubuntu</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/lonzzALSNPM/</link>
		<comments>http://colinharrington.net/blog/2011/08/running-mpide-chipkits-arduino-ide-remake-64bit-ubuntu/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 20:40:50 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[chipkit]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=235</guid>
		<description><![CDATA[I recently got a ChipKIT Uno32 for a LED project that I&#8217;m working on.  The ChipKit is basically compatible with most Arduino code, but has a 32 bit chip with a clock rate that is 5x the speed of my Arduino Uno, as well as much more Flash &#38; SRAM space.  I am really excited [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got a <a href="http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,719,896&amp;Prod=CHIPKIT-UNO32">ChipKIT Uno32</a> for a LED project that I&#8217;m working on.  The ChipKit is basically compatible with most Arduino code, but has a 32 bit chip with a clock rate that is 5x the speed of my <a title="Arduino Uno" href="http://arduino.cc/en/Main/ArduinoBoardUno">Arduino Uno</a>, as well as much more Flash &amp; SRAM space.  I am really excited about it because we ran into performance issues with a slower 8-bit processor, and we are hoping that 32bit + 8x clock speed will put us back into the workable range.</p>
<p><img class="aligncenter" title="ChipKIT Uno32" src="http://www.colinharrington.net/images/chipkit-uno32.png" alt="Chipkit Uno32 board" width="500" height="373" /></p>
<p style="text-align: left;">The <a href="http://www.arduino.cc/en/Main/Software">Arduino IDE</a> (<a href="http://code.google.com/p/arduino/">hosted on google code</a>) doesn&#8217;t work with ChipKit so They remade the the IDE and called it MPIDE (Multi-Platform IDE) and its<a href="https://github.com/chipKIT32/chipKIT32-MAX"> hosted on Github</a>. The released binaries are <a href="https://github.com/chipKIT32/chipKIT32-MAX/downloads">found here</a>.</p>
<p style="text-align: left;"><img class="aligncenter" title="MPIDE Blink" src="http://www.colinharrington.net/images/mpide-blink.png" alt="MPIDE Blink"/>They have a <a href="http://www.chipkit.cc/wiki/index.php?title=MPIDE_Installation">decent wiki page on how to run MPIDE</a> which helped.</p>
<p>The article cited issues with 64 bit systems:</p>
<blockquote>
<h3>64bit Systems</h3>
<p>The binary packages for MPIDE are all built for 32bit Linux distributions, if you are running 64bit you need to have some additional libraries installed. You&#8217;ll need to have 32bit versions of libelf.so and libreadline.so to be able to program the chipKIT, these need to be in /usr/lib32. You may well need to sym-link these latest versions manually, installing these libs is a fairly advanced operation and will vary significantly between distributions.</p></blockquote>
<p>So this is what I had to do to get it running on 64 bit Ubuntu (Maverick/10.10):</p>
<p>1) Download the Linux Version and unpack it somwehere.</p>
<p>2) Getting librxtx-java and other jni items loadable via the LD_LIBRARY_PATH or CLASSPATH, <a href="http://colinharrington.net/blog/2010/11/arduino-ubuntu-10-10-maverick-meerkat-no-rxtxserial/">which I wrote a post about</a>.</p>
<p>3) The next issue that I ran into was a permissions issue</p>
<blockquote><p>Cannot run program &#8220;/home/username/mpide-0022-chipkit-linux32-20110619/hardware/pic32/compiler/pic32-tools/bin/pic32-g++&#8221;: java.io.IOException: error=13, Permission denied</p></blockquote>
<p>I initially solved it by chmodding everything in that directory, but that resulted in:</p>
<blockquote><p>pic32-g++: error trying to exec &#8216;cc1plus&#8217;: execvp: No such file or directory</p></blockquote>
<p>So I followed the advice <a href="http://www.chipkit.cc/forum/viewtopic.php?f=6&amp;t=41">in this forum post</a> and executed <code>chmod +x  -R ./hardware/pic32/compiler/</code> and that seemed to do it for me.  I think I was able to compile/verify the blink example at this point.</p>
<p>4) Add 32bit versions of libelf and libreadline6 to /usr/lib32:</p>
<p>The first error I ran into was:</p>
<p>/home/username/mpide-0022-chipkit-linux32-20110619/hardware/pic32/compiler/pic32-tools/bin/../pic32mx/bin/gcc/pic32mx/4.5.1/cc1plus: error while loading shared libraries: libelf.so.1: cannot open shared object file: No such file or directory</p>
<p>I solved this by downloading the <a href="http://packages.ubuntu.com/maverick/libelf1">i386 deb from here</a>, opening it with archive manager and copying <code>/usr/lib/libelf-0.147.so</code> to <code>/usr/lib32/libelf-0.147.so</code>. after this I creating the versioned symbolic link via <code>ln -s libelf-0.147.so libelf.so.1</code></p>
<p>Tried it again and was onto my next error:</p>
<blockquote><p>/home/username/mpide-0022-chipkit-linux32-20110619/hardware/tools/avrdude: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory</p></blockquote>
<p>Repeat the same process for <a href="http://packages.ubuntu.com/maverick/libreadline6">libreadline6</a> (which contains another required lib too) And I was able to upload the and run the blink example.</p>
<p>Now on to making the TLC Library work..</p>

<p><a href="http://feedads.g.doubleclick.net/~a/cFWFDA6h2maliNmS8GEzLjtLcEU/0/da"><img src="http://feedads.g.doubleclick.net/~a/cFWFDA6h2maliNmS8GEzLjtLcEU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cFWFDA6h2maliNmS8GEzLjtLcEU/1/da"><img src="http://feedads.g.doubleclick.net/~a/cFWFDA6h2maliNmS8GEzLjtLcEU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/lonzzALSNPM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2011/08/running-mpide-chipkits-arduino-ide-remake-64bit-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2011/08/running-mpide-chipkits-arduino-ide-remake-64bit-ubuntu/</feedburner:origLink></item>
		<item>
		<title>Synergy key-mappings between Linux and OSX</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/tyeUJ0-4lEo/</link>
		<comments>http://colinharrington.net/blog/2011/03/synergy-key-mappings-between-linux-and-osx/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 07:06:42 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Quick Synergy]]></category>
		<category><![CDATA[Synergy]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=216</guid>
		<description><![CDATA[I&#8217;ve been a fan of Synergy for years. If you aren&#8217;t familiar with Synergy, It basically allows me to control multiple computers using only one mouse and keyboard on the host machine. Synergy2 comes with a GUI on Windows, but for Linux or Apple/Mac OSX there isn&#8217;t a GUI packaged with synergy itself. I&#8217;ve since [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://colinharrington.net/blog/wp-content/uploads/2011/03/synergy-logo.png"><img class="alignright size-full wp-image-218" title="Synergy Logo" src="http://colinharrington.net/blog/wp-content/uploads/2011/03/synergy-logo.png" alt="" width="128" height="128" /></a>I&#8217;ve been a fan of <a href="http://synergy-foss.org/">Synergy</a> for years.  If you aren&#8217;t familiar with Synergy, It basically allows me to control multiple computers using only one mouse and keyboard on the host machine.</p>
<p><a href="http://synergy2.sourceforge.net/">Synergy2</a> comes with a GUI on Windows, but for Linux or Apple/Mac OSX there isn&#8217;t a GUI packaged with synergy itself.  I&#8217;ve since found the <a title="Quick Synergy" href="http://code.google.com/p/quicksynergy/">Quick Synergy GUI </a>to work fairly well between Windows and Linux since the key mappings are very similar.</p>
<p><a href="http://colinharrington.net/blog/wp-content/uploads/2011/03/QS-Share.png"><img class="size-full wp-image-220 aligncenter" title="Quick Synergy :: Share" src="http://colinharrington.net/blog/wp-content/uploads/2011/03/QS-Share.png" alt="" width="387" height="345" /></a></p>
<p>Installing it on Linux was a breeze: <code>sudo apt-get install quicksynergy</code></p>
<p><a href="http://colinharrington.net/blog/wp-content/uploads/2011/03/apt-get-install-quicksynergy.png"><img class="size-full wp-image-223 alignleft" title="sudo apt-get install quicksynergy" src="http://colinharrington.net/blog/wp-content/uploads/2011/03/apt-get-install-quicksynergy.png" alt="" width="309" height="29" /></a></p>
<p>&nbsp;</p>
<p>When I went to use OSX from a Linux Host, I found that Quick Synergy <a href="http://code.google.com/p/quicksynergy/issues/detail?id=10&amp;colspec=ID%20Type%20Status%20Priority%20Opsys%20Summary">wasn&#8217;t able to configure</a> the key mapping options that are needed to achieve keyboard zen.  &#8220;No Problem&#8221;, I thought, &#8220;I&#8217;ll just edit the settings file that QuickSynergy Uses&#8221; &#8211; but it turns out that the <a href="http://code.google.com/p/quicksynergy/issues/detail?id=10&amp;colspec=ID%20Type%20Status%20Priority%20Opsys%20Summary">changes are overwritten</a> and my GUI dreams died with that issue.</p>
<p>I ended up finding the <a href="http://superuser.com/questions/90223/synergy-key-mapping">right key modifiers</a> from Linux to OSX and reverted back to launching Synergy manually from the command line.  <code>synergys -f --config /path/to/synergy-config.conf</code></p>
<p><a href="http://colinharrington.net/blog/wp-content/uploads/2011/03/launching-synergy-manually.png"><img class="size-full wp-image-225" title="synergys -f --config /path/to/synergy-config.conf" src="http://colinharrington.net/blog/wp-content/uploads/2011/03/launching-synergy-manually.png" alt="" width="456" height="30" /></a></p>
<p>Its easy to setup aliases or other shortcuts but here is the magic sauce complete with key modifiers:<br />
<script src="https://gist.github.com/880848.js?file=gistfile1.txt"></script></p>

<p><a href="http://feedads.g.doubleclick.net/~a/LPfS7luHRIDAm7LR6lPu0Mm8g-A/0/da"><img src="http://feedads.g.doubleclick.net/~a/LPfS7luHRIDAm7LR6lPu0Mm8g-A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/LPfS7luHRIDAm7LR6lPu0Mm8g-A/1/da"><img src="http://feedads.g.doubleclick.net/~a/LPfS7luHRIDAm7LR6lPu0Mm8g-A/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/tyeUJ0-4lEo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2011/03/synergy-key-mappings-between-linux-and-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2011/03/synergy-key-mappings-between-linux-and-osx/</feedburner:origLink></item>
		<item>
		<title>Grails Experience :: Should we use Grails</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/ZpTmhky87AQ/</link>
		<comments>http://colinharrington.net/blog/2010/12/grails-experience-should-we-use-grails/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 16:29:56 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[Groovy-Grails]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=205</guid>
		<description><![CDATA[I am a Senior Consultant at Object Partners in Minneapolis, Minnesota. During the course of my work I was asked this question about my experience with Grails that I thought was worth sharing: Have you ever been on a grails/groovy project that failed because of - limitations/faults in the technology itself - the grails/groovy learning [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Grails Logo" src="http://www.colinharrington.net/images/grails-128x128-icon.png" alt="Grails Logo" width="128" height="128" />I am a Senior Consultant at <a href="http://www.objectpartners.com/">Object Partners</a> in Minneapolis, Minnesota.  During the course of my work I was asked this question about my experience with <a title="Grails" href="http://www.grails.org">Grails</a> that I thought was worth sharing:</p>
<blockquote><p>Have you ever been on a grails/groovy project that failed because of<br />
- limitations/faults in the technology itself<br />
- the grails/groovy learning curve</p></blockquote>
<p>Here was my response:</p>
<blockquote><p>Professionally, I have been a part of seven large Grails applications (+ more smaller endeavors).  Of those seven, three of them were moving to grails from another framework, two due to failures with other teams/technologies and one was a Spring to Grails migration.</p>
<p>None of those seven failed because of Grails &#8211; in fact &#8211; the clients were very happy with the speed of development.  Especially the rescue missions that had *very* tight timelines.  At one startup we had a quite substantial Grails app that had a Flex front-end.  When developing new stories, we found that the Flex front-end took ~80% of the time whereas the Grails components took 20% of our time and were very reasonable to test and maintain.</p>
<p>I&#8217;m not saying that we didn&#8217;t run into issues in learning curve or even issues/intricacies of Grails itself, but rather that we were able to make excellent progress and address those issues.  The community and open source nature of both Groovy and Grails turned out to be extremely helpful when addressing technical challenges.</p>
<p>On one of the projects that had a very tight timeline most of the developers weren&#8217;t even Java developers, but had done some Django, PHP, RoR experience.  The project was quite successful.  We were able to accomplish more in less than a month then another firm was able to do in six months before declaring failure with another framework.</p></blockquote>
<p>To add to my response, I would say that since testing is a priority and a first class citizen in Grails, it definitely added to the ongoing stability of the projects over time.  The sections of code that were tested typically ended up being much more coherent and stable over the course of the projects life.</p>
<p>How would you respond?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bX0ZgsiJljTlB1jV1P-giNV5Xqo/0/da"><img src="http://feedads.g.doubleclick.net/~a/bX0ZgsiJljTlB1jV1P-giNV5Xqo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bX0ZgsiJljTlB1jV1P-giNV5Xqo/1/da"><img src="http://feedads.g.doubleclick.net/~a/bX0ZgsiJljTlB1jV1P-giNV5Xqo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/ZpTmhky87AQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2010/12/grails-experience-should-we-use-grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2010/12/grails-experience-should-we-use-grails/</feedburner:origLink></item>
		<item>
		<title>Which process has that port open? (Linux / netstat -anp)</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/G7z7lxqXe6c/</link>
		<comments>http://colinharrington.net/blog/2010/12/which-process-has-that-port-open-linux-netstat-anp/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 04:37:59 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=48</guid>
		<description><![CDATA[Occasionally, I&#8217;ll have an application that I&#8217;m working on die spectacularly and still hold on to the open sockets / ports.Â  in Java you would see the java.net.BindException: Address already in use for an open port much like: java.net.BindException: Address already in use at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) ... It took me a [...]]]></description>
			<content:encoded><![CDATA[<p>Occasionally, I&#8217;ll have an application that I&#8217;m working on die spectacularly and still hold on to the open sockets / ports.Â  in Java you would see the <code>java.net.BindException</code>: Address already in use for an open port much like:</p>
<p><code>java.net.BindException: Address already in use<br />
at sun.nio.ch.Net.bind(Native Method)<br />
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)<br />
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)<br />
...<br />
</code></p>
<p>It took me a second to figure out how locate the process, but it turned out to be a really easy task using the <a href="http://linux.die.net/man/8/netstat">netstat</a> command by executing &#8216;<code>netstat -anp | grep 8080</code>&#8216; (a = all interfaces, n = numeric, p = show pid)Â  This isn&#8217;t perfect since it will still show you anything with a pid of 8080 (the port number I was looking for), but its a great quick-and dirtry way to identify the process.Â  and once I&#8217;ve found it I can kill it with a &#8216;<code>kill -9 &lt;pid&gt;</code>&#8216;</p>
<p><code>user@machine:~/$ netstat -anp | grep 8080<br />
tcp6Â Â Â Â Â Â  0Â Â Â Â Â  0 :::8080Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  :::*Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  LISTENÂ Â Â Â Â  19884/java<br />
user@machine:~/$ kill -9 19884</code></p>
<p>Which reminds me of this classic (please excuse the profanity):<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Fow7iUaKrq4?fs=1&amp;hl=en_US&amp;color1=0x3a3a3a&amp;color2=0x999999" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/Fow7iUaKrq4?fs=1&amp;hl=en_US&amp;color1=0x3a3a3a&amp;color2=0x999999" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>ps:<br />
Windows =&gt; <code>netstat -ano</code><br />
OSX =&gt; <code><a href="http://hintsforums.macworld.com/archive/index.php/t-56817.html">lsof -i -P</a></code></p>

<p><a href="http://feedads.g.doubleclick.net/~a/yh7i8dwZhD2QPHi0C_q9reet46w/0/da"><img src="http://feedads.g.doubleclick.net/~a/yh7i8dwZhD2QPHi0C_q9reet46w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/yh7i8dwZhD2QPHi0C_q9reet46w/1/da"><img src="http://feedads.g.doubleclick.net/~a/yh7i8dwZhD2QPHi0C_q9reet46w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/G7z7lxqXe6c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2010/12/which-process-has-that-port-open-linux-netstat-anp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2010/12/which-process-has-that-port-open-linux-netstat-anp/</feedburner:origLink></item>
		<item>
		<title>Arduino + Ubuntu 10.10 Maverick Meerkat :: no rxtxSerial in java.library.path</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/R4HusvoAa_s/</link>
		<comments>http://colinharrington.net/blog/2010/11/arduino-ubuntu-10-10-maverick-meerkat-no-rxtxserial/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 07:13:43 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=186</guid>
		<description><![CDATA[I&#8217;m just getting into the Arduino, and have an awesome project that I&#8217;m working on with some friends. I found the Arduino IDE in package manager, and went to install it sudo apt-get install arduino Or Via Synaptic: When I went to run it died with the following exception: A little googling turned up the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m just getting into the <a href="http://www.arduino.cc/" target="_blank">Arduino</a>, and have an awesome project that I&#8217;m working on with <a href="http://heath-bar.com/">some</a> <a href="http://twitter.com/#!/BassmanJB2">friends</a>.</p>
<div class="wp-caption aligncenter" style="width: 510px"><img title="Playing with a multi-color LED" src="http://www.colinharrington.net/images/multi-color-led.png" alt="Playing with a multi-color LED" width="500" height="373" /><p class="wp-caption-text">Playing with a multi-color LED</p></div>
<p>I found the Arduino IDE in package manager, and went to install it<br />
<code>sudo apt-get install arduino</code></p>
<p style="text-align: left;">Or Via Synaptic:<img class="aligncenter" title="Arduino via Synaptic" src="http://www.colinharrington.net/images/arduino-synaptic.png" alt="Arduino via Synaptic" width="464" height="76" /></p>
<p>When I went to run it died with the following exception:<br />
<script src="https://gist.github.com/706195.js?file=Arduino%20Error"></script></p>
<p>A little googling turned up the <a href="https://bugs.launchpad.net/ubuntu/+source/arduino/+bug/664309">this bug</a>.  It basically describes that there is an issue with Ubuntu 10.10 + sun-java not including the jni directory in the classpath.  There are several solutions, but basically <a href="https://bugs.launchpad.net/ubuntu/+source/arduino/+bug/664309/comments/7">this comment</a> sums it up the best:</p>
<blockquote><p>1) don&#8217;t use sun-java but default-jre instead. This bug is actually a known bug in sun-java. (<a href="https://bugs.launchpad.net/ubuntu/+source/sun-java6/+bug/325506">bug #325506</a>)<br />
2) add export LD_LIBRARY_PATH=/usr/lib/jni to your .bashrc, the .deskop file (in /usr/share/desktop), or on the command line before starting arduino<br />
3) add the new package (instructions are above).</p></blockquote>
<p>I opted for #2 so far&#8230;Â  The idea flow for potential projects are unending.Â  I should try some CI build Lights/lamps next <img src='http://colinharrington.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/BwoqNw4S2gr3rWfvDJ-9zMdQZqs/0/da"><img src="http://feedads.g.doubleclick.net/~a/BwoqNw4S2gr3rWfvDJ-9zMdQZqs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BwoqNw4S2gr3rWfvDJ-9zMdQZqs/1/da"><img src="http://feedads.g.doubleclick.net/~a/BwoqNw4S2gr3rWfvDJ-9zMdQZqs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/R4HusvoAa_s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2010/11/arduino-ubuntu-10-10-maverick-meerkat-no-rxtxserial/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2010/11/arduino-ubuntu-10-10-maverick-meerkat-no-rxtxserial/</feedburner:origLink></item>
		<item>
		<title>OSX Mouse Acceleration</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/d8AIMc7-oGI/</link>
		<comments>http://colinharrington.net/blog/2010/07/osx-mouse-acceleration/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 21:50:24 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mouse Acceleration]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=175</guid>
		<description><![CDATA[I dual-boot OSX and Ubuntu, but primarily live, work and play in Ubuntu.Â  The only reasons that I boot up into OSX these days are to sync an iPhone, or more recently play some Steam Games (Go Steam for Releasing an OSX Client!Â  A Linux client shouldn&#8217;t be too far behind right?).Â  Windows is now [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Mouse on Fire" src="http://www.colinharrington.net/images/mouse_on_fire.png" alt="Mouse on Fire" width="160" height="100" /></p>
<p>I dual-boot <a title="Mac OSX" href="http://en.wikipedia.org/wiki/Mac_OS_X">OSX</a> and <a title="Ubuntu" href="http://www.ubuntu.com/">Ubuntu</a>, but primarily live, work and play in <a title="Ubuntu" href="http://colinharrington.net/blog/category/linux/ubuntu-linux/">Ubuntu</a>.Â  The only reasons that I boot up into OSX these days are to sync an <a title="iPhone" href="http://www.apple.com/iphone/">iPhone</a>, or more recently play some Steam Games (Go <a title="Steam Released an OSX Client!" href="http://store.steampowered.com/browse/mac">Steam for Releasing an OSX Client</a>!Â  A Linux client shouldn&#8217;t be too far behind right?).Â  Windows is now relinquished to a VM for IE testing &amp; other software that is stuck on that platform.</p>
<p>I&#8217;ve always been bothered by mice in OSX, they never felt good and didn&#8217;t handle as I had expected.Â  This is especially important when doing some intricate work with Photoshop, or in a computer game.Â  I don&#8217;t have much time to play games on the computer, but I&#8217;ve been able to get a few hours in recently and really noticed that the mouse acceleration was unusable/unreliable for fast-paced action&#8230;</p>
<p style="text-align: left;">A little googling turned up the &#8220;<a title="Mouse Acceleration Preference Pane" href="http://triq.net/mac/mouse-acceleration-preference-pane-mac-os-x" target="_blank">Mouse Acceleration Preference Pane</a>&#8221; for Mac OSX by <a title="Christian Suckschwerdt" href="http://triq.net/content/about" target="_blank">Christian Zuckschwerdt</a>.</p>
<p style="text-align: left;">I downloaded version 1.1 and then had this preference pane is my System Preferences<img class="alignleft" style="margin: 0px; border: 0pt none;" title="System Preferences Icon" src="http://www.colinharrington.net/images/SystemPreferencesIcon-small.png" alt="System Preferences Icon" width="24" height="24" />:<br />
<img class="aligncenter" title="System Preferences" src="http://www.colinharrington.net/images/mouse-acceleration-pref-pane-system-preferences.png" alt="System Preferences" width="400" height="102" /></p>
<p style="text-align: left;">Which then lets me configure the acceleration for both the mouse and trackpad.<br />
<img class="aligncenter" title="Mouse Acceleration Pref Pane" src="http://www.colinharrington.net/images/mouse-acceleration-pref-pane-400px.png" alt="Mouse Acceleration Pref Pane" width="400" height="256" /></p>
<p>Even better, I could turn off acceleration all-together!</p>
<p><img class="aligncenter" title="Enable at Login" src="http://www.colinharrington.net/images/mouse-acceleration-pref-pane-enable-at-login.png" alt="Enable at Login" width="268" height="33" />From <a href="http://triq.net/mac/mouse-acceleration-preference-pane-mac-os-x">Christian Zuckschwerdt&#8217;s site</a>:</p>
<blockquote><p><strong>Extented mouse settings</strong></p>
<p>&#8220;The Mouse Acceleration PrefPane is a GUI and startup item to <a href="http://www.knockknock.org.uk/mac/">Richard Bentley&#8217;s MouseFix</a>.Â  You can set up extended speed parameters and acceleration curves for your mouse.&#8221;</p></blockquote>
<p>Good work Christian!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/V2arC2wDqtVjzWU1kVwhnZevmxU/0/da"><img src="http://feedads.g.doubleclick.net/~a/V2arC2wDqtVjzWU1kVwhnZevmxU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/V2arC2wDqtVjzWU1kVwhnZevmxU/1/da"><img src="http://feedads.g.doubleclick.net/~a/V2arC2wDqtVjzWU1kVwhnZevmxU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/d8AIMc7-oGI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2010/07/osx-mouse-acceleration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2010/07/osx-mouse-acceleration/</feedburner:origLink></item>
		<item>
		<title>Gnome CPU Frequency Scaling Monitor Authorization Policy</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/MC8B5Uh0n0o/</link>
		<comments>http://colinharrington.net/blog/2010/03/gnome-cpu-frequency-scaling-authorization-policy/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 03:42:13 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[cpufreq-applet]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=163</guid>
		<description><![CDATA[After setting up a laptop with Ubuntu, one of the things that I typically like to do is add a the CPU Frequency Scaling Monitor applet (cpufreq-applet) to my main Gnome panel. I typically work running large web applications (Grails&#8230;) that typically use a lot of CPU power when running tests, launching the apps or [...]]]></description>
			<content:encoded><![CDATA[<p>After setting up a laptop with Ubuntu, one of the things that I typically like to do is add a the <a href="http://library.gnome.org/users/cpufreq-applet/stable/cpufreq-applet-introduction.html.en">CPU Frequency Scaling Monitor applet</a> (cpufreq-applet) to my main Gnome panel.</p>
<p><img class="aligncenter" title="Gnome CPU Frequency Scaling In action" src="http://www.colinharrington.net/images/gnome-cpu-frequency.png" alt="" width="390" height="296" /></p>
<p>I typically work running large web applications (Grails&#8230;) that typically use a lot of CPU power when running tests, launching the apps or refactorings within an IDE.Â  I like the ability to quickly adjust the CPU &#8216;govenor&#8217; which governs how the CPU is utilized from a power/performance perspective (see <a href="http://idebian.wordpress.com/2008/06/22/cpu-frequency-scaling-in-linux/">CPU Frequency Scaling in Linux</a> for more).</p>
<p>Ubuntu 9.10 (Karmic Koala) uses Gnome 2.28.1 which requires authorization to change the CPU Frequency (which makes sense).Â  Earlier versions did not require this authorization since it is new in Gnome 2.28.</p>
<p>With policykit-1 (also new in Ubuntu 9.10) you can grant yourself authorization for the cpufreq-applet based on a user or group by creating a policy file (at /var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla for example) that looks something like this:<br />
<code>[org.gnome.cpufreqselector]<br />
Identity=unix-user:<em><strong>YourUser</strong></em><br />
Action=org.gnome.cpufreqselector<br />
ResultAny=no<br />
ResultInactive=no<br />
ResultActive=yes</code></p>
<p>Thanks to <a href="http://bbs.archlinux.org/viewtopic.php?id=82670">this post/discussion</a> for pointing this out <img src='http://colinharrington.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Â  be sure you change <em>YourUser</em> to your username or group that you wish to have authorized.</p>
<p>I don&#8217;t know of a policy GUI that works with policykit-1 yet, so let me know if you find something.</p>
<p>I also replaced the icons in the /usr/share/pixmaps/cpufreq-applet/ with something I found onÂ  <a href="http://gnome-look.org/content/show.php/CPU+Frequency+Scaling+icon+collection?content=113148">gnome-look.org</a></p>
<p style="text-align: center;"><img class="aligncenter" title="cpufreq humanity v1.6 discrete color" src="http://colinharrington.net/images/cpufreq-discrete-grey.png" alt="" width="142" height="24" /></p>

<p><a href="http://feedads.g.doubleclick.net/~a/9ebN778a1Swko_vu0Iujtl0IbBQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/9ebN778a1Swko_vu0Iujtl0IbBQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9ebN778a1Swko_vu0Iujtl0IbBQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/9ebN778a1Swko_vu0Iujtl0IbBQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/MC8B5Uh0n0o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2010/03/gnome-cpu-frequency-scaling-authorization-policy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2010/03/gnome-cpu-frequency-scaling-authorization-policy/</feedburner:origLink></item>
		<item>
		<title>Grails: The View Layer [GUM]</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/67nHoOkPdos/</link>
		<comments>http://colinharrington.net/blog/2010/02/grails-the-view-layer-gum/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 06:25:57 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[Groovy-Grails]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[GUM]]></category>
		<category><![CDATA[Sitemesh]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=155</guid>
		<description><![CDATA[This past month, I did a presentation at the Groovy Users of Minnesota which I called Grails: The View Layer.Â  We took our time delving into the Groovy Server Pages, how Grails utilizes Sitemesh and some of the more obscure tags related to Sitemesh.Â  Currently, Grails&#8217; Sitemesh integration is not very well understood by the [...]]]></description>
			<content:encoded><![CDATA[<p>This past month, I did a presentation at the <a title="GUM" href="http://groovy.mn" target="_blank">Groovy Users of Minnesota</a> which I called <span style="text-decoration: underline;">Grails: The View Layer</span>.Â  We took our time delving into the Groovy Server Pages, how <a href="http://www.grails.org" target="_blank">Grails</a> utilizes <a href="http://www.opensymphony.com/sitemesh/" target="_blank">Sitemesh</a> and some of the more obscure tags related to Sitemesh.Â  Currently, Grails&#8217; Sitemesh integration is not very well understood by the community at large and I wanted to spend some time on it since Sitemesh is such a powerful part of the Framework.</p>
<p><iframe src="http://docs.google.com/present/embed?id=dg8qcbkq_139dtddh5rm&#038;interval=10&#038;size=m" frameborder="0" width="555" height="451"></iframe></p>
<p>I was hoping to spend some more time polishing this slide deck, but hopefully this presentation skeleton is helpful to the community as it is.Â  I am hoping to give this talk again at <a href="http://www.gr8conf.org/" target="_blank">Gr8Conf</a> in the USA this upcoming April and spend some more time creating more concrete and digestible examples.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/5MGak6tbAsrVmh7h6U2DYXoqU6U/0/da"><img src="http://feedads.g.doubleclick.net/~a/5MGak6tbAsrVmh7h6U2DYXoqU6U/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/5MGak6tbAsrVmh7h6U2DYXoqU6U/1/da"><img src="http://feedads.g.doubleclick.net/~a/5MGak6tbAsrVmh7h6U2DYXoqU6U/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/67nHoOkPdos" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2010/02/grails-the-view-layer-gum/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2010/02/grails-the-view-layer-gum/</feedburner:origLink></item>
		<item>
		<title>Grails user-specific configurations</title>
		<link>http://feedproxy.google.com/~r/ColinHarrington/~3/c-_LzdR5T1k/</link>
		<comments>http://colinharrington.net/blog/2009/11/grails-user-specific-configurations/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 16:15:53 +0000</pubDate>
		<dc:creator>Colin</dc:creator>
				<category><![CDATA[Groovy-Grails]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Grails]]></category>

		<guid isPermaLink="false">http://colinharrington.net/blog/?p=133</guid>
		<description><![CDATA[I asked a question on the GUM (Groovy Users of Minnesota) User list about how to achieve a user/machine specific config. I didn&#39;t have much time to figure it out but this is what I ended up finding out: Grails 1.1.1 create-app generates a Config.groovy with this as the first few lines that would have [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" alt="grails" border="0" height="96" hspace="4" src="http://www.colinharrington.net/images/grails-128x128-icon.png" vspace="4" width="96" />I asked a question on the <a href="http://groovy.mn">GUM (Groovy Users of Minnesota)</a> User list about <a href="http://groups.google.com/group/groovymn/browse_thread/thread/f0a4c8647b2e10ca">how to achieve a user/machine specific config</a>.</p>
<p>I didn&#39;t have much time to figure it out but this is what I ended up finding out:</p>
<p>Grails 1.1.1 create-app generates a <code>Config.groovy</code> with this as the first few lines that would have told me what I need to know if I actually took the time to read it:<br />
<code style="font-size:0.9em">// locations to search for config files that get merged into the main config<br />
// config files can either be Java properties files or ConfigSlurper scripts<br />
//<br />
// grails.config.locations = [ &quot;classpath:${appName}-config.properties&quot;,<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;classpath:${appName}-config.groovy&quot;,<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;file:${userHome}/.grails/${appName}-config.properties&quot;,<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;file:${userHome}/.grails/${appName}-config.groovy&quot;]<br />
//<br />
// if(System.properties[&quot;${appName}.config.location&quot;]) {<br />
//&nbsp;&nbsp;&nbsp; grails.config.locations &lt;&lt; &quot;file:&quot; + System.properties[&quot;${appName}.config.location&quot;]<br />
// } </code></p>
<p>So in my case all I had to do was put this in <code>Config.groovy</code>:<br />
<code style="font-size:0.9em">if (new File(&quot;${userHome}/.grails/${appName}-config.groovy&quot;).exists()){<br />
&nbsp;&nbsp;&nbsp; grails.config.locations = [&quot;file:${userHome}/.grails/${appName}-config.groovy&quot;]<br />
}</code></p>
<p>which allowed me to override properties by doing something like this in my <code>~/.grails/${appName}-config.groovy</code> :<br />
<code style="font-size:0.9em">username = &quot;sa&quot;<br />
password = &quot;sekret&quot;<br />
// environment specific settings<br />
environments {<br />
&nbsp;&nbsp;&nbsp; development {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataSource {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbCreate = &quot;create-drop&quot; // use your imagination...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</code></p>
<p>I also ran across a little gem that you can do the same type of config merging with your <code>BuildConfig.groovy</code> by implementing a <code>~/.grails/settings.groovy</code> file. (yes its hardcoded rather than a config.locations property in <code>BuildConfig.groovy</code> &ndash; see <code>BuildSettings.groovy</code> for more)</p>
<p>Now I really wish there was a way to set defaults for things like <a href="http://jira.codehaus.org/browse/GRAILS-1861" target="_blank"><span style="font-family: courier new,monospace;">server.port</span> in the configs</a>.</p>
<p>Thanks, <a href="http://naleid.com/blog/">Ted Naleid</a>, <a href="http://www.refactr.com">Scott Vlaminck</a>, and <a href="http://smokejumperit.com/">Robert Fischer</a> for helping me find what I was looking for!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/hgzPh8QRKSrpko7jvaRLiEOk73Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/hgzPh8QRKSrpko7jvaRLiEOk73Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hgzPh8QRKSrpko7jvaRLiEOk73Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/hgzPh8QRKSrpko7jvaRLiEOk73Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ColinHarrington/~4/c-_LzdR5T1k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://colinharrington.net/blog/2009/11/grails-user-specific-configurations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://colinharrington.net/blog/2009/11/grails-user-specific-configurations/</feedburner:origLink></item>
	</channel>
</rss>

