<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15759571</id><updated>2011-11-27T17:22:08.529-06:00</updated><category term='linux'/><category term='ruby'/><category term='apache'/><category term='facebook'/><category term='annoyances'/><category term='media'/><category term='technology'/><category term='comment'/><category term='javascript'/><category term='mysql'/><category term='java'/><category term='cygwin'/><category term='mdns'/><category term='books'/><category term='apple'/><category term='programming'/><category term='politics'/><category term='development'/><category term='messaging'/><category term='gwt'/><category term='ssh'/><category term='ffmpeg'/><category term='hacking'/><category term='rubygems'/><category term='OSX'/><category term='dvd'/><category term='dyndns'/><category term='ssh_config'/><category term='netbeans'/><category term='gnome'/><category term='firefox'/><category term='redhat'/><category term='passenger'/><category term='exploits'/><category term='git'/><category term='tips'/><category term='mongrel'/><category term='html'/><category term='rails'/><category term='mac'/><category term='ssl'/><category term='debian'/><category term='video'/><category term='windows'/><category term='fix'/><category term='vim'/><category term='code'/><category term='ubuntu'/><title type='text'>Pixels and Politics</title><subtitle type='html'>Politics, Computers, Ruby on Rails, and Miscellaneous.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>99</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15759571.post-569384785050261776</id><published>2011-01-18T15:18:00.002-06:00</published><updated>2011-01-18T15:27:52.947-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><title type='text'>Netbeans Won't Debug Rails Project</title><content type='html'>If the Netbeans says it "can't contact the web server" when running "Debug Project" there is likely an issue with the debug gems that the IDE installs itself. To correct this problem:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Exit Netbeans&lt;/li&gt;&lt;li&gt;$ gem uninstall linecache&lt;/li&gt;&lt;li&gt;$ gem uninstall ruby-debug-base&lt;/li&gt;&lt;li&gt;$ gem uninstall ruby-debug-ide&lt;/li&gt;&lt;li&gt;$ gem install ruby-debug-ide&lt;/li&gt;&lt;li&gt;Start Netbeans, and "Debug Project"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Please note that I am using MRI (native Ruby), not JRuby.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Netbeans 6.9.1 (Linux)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]&lt;/li&gt;&lt;li&gt;RubyGems 1.4.1&lt;br /&gt;&lt;/li&gt;&lt;li&gt;linecache (0.43)&lt;/li&gt;&lt;li&gt;ruby-debug-base (0.10.4)&lt;/li&gt;&lt;li&gt;ruby-debug-ide (0.4.16)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-569384785050261776?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/569384785050261776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=569384785050261776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/569384785050261776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/569384785050261776'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2011/01/netbeans-wont-debug-rails-project.html' title='Netbeans Won&apos;t Debug Rails Project'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-8565768197792568052</id><published>2010-12-11T13:27:00.004-06:00</published><updated>2010-12-11T13:47:47.668-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh_config'/><title type='text'>Per Host SSH Key Configuration</title><content type='html'>&lt;div&gt;You can automatically specify an SSH private key, via local configuration, when connecting to SSH hosts.  This is especially helpful when using Git to connect to multiple repositories which require different SSH keys.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;On a Unix client (or compatible shell such as cygwin, Xming, or msysgit ), create/modify ~/.ssh/config&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"&gt;Host HOSTNAME_OR_IP&lt;br /&gt;IdentityFile ~/.ssh/OTHER_ID_RSA&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-8565768197792568052?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/8565768197792568052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=8565768197792568052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8565768197792568052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8565768197792568052'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2010/12/per-host-ssh-key-configuration.html' title='Per Host SSH Key Configuration'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4994784994664308031</id><published>2010-06-16T08:13:00.002-05:00</published><updated>2010-06-16T08:16:08.202-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>How to Enable Aero on Windows 7 N</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UVOPE-m78K4/TBjOTgtDr7I/AAAAAAAAJ90/WCInLafnwLg/s1600/screen.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 219px;" src="http://4.bp.blogspot.com/_UVOPE-m78K4/TBjOTgtDr7I/AAAAAAAAJ90/WCInLafnwLg/s320/screen.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5483359380915335090" /&gt;&lt;/a&gt;&lt;br /&gt;To enable the Aero UI enhancements in Windows 7, you must "rate" your computer using the Performance Information and Tools panel.  If you receive the error: "&lt;span style="font-style:italic;"&gt;This system does not have the necessary multi-media support to run the requested assessment&lt;/span&gt;", you may not have Windows Media Player installed (especially if you are running Windows 7 N).  Download and install Windows Media Player  at &lt;a href="http://www.microsoft.com/windows/windowsmedia/download/AllDownloads.aspx"&gt;http://www.microsoft.com/windows/windowsmedia/download/AllDownloads.aspx&lt;/a&gt; and try again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4994784994664308031?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4994784994664308031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4994784994664308031' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4994784994664308031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4994784994664308031'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2010/06/how-to-enable-aero-on-windows-7-n.html' title='How to Enable Aero on Windows 7 N'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UVOPE-m78K4/TBjOTgtDr7I/AAAAAAAAJ90/WCInLafnwLg/s72-c/screen.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-7087709753793881478</id><published>2010-03-02T12:04:00.002-06:00</published><updated>2010-03-02T12:09:40.793-06:00</updated><title type='text'>Convert a Hash to a Query String or Parameter String</title><content type='html'>I Rails, to convert a Hash object into a query string or parameter string for use in a url:&lt;br /&gt;&lt;br /&gt;opts = {:a =&gt; 1, :b =&gt; 2}&lt;br /&gt;params = ActionController::Routing::Route.new.build_query_string(opts)&lt;br /&gt;&lt;br /&gt;Params =&gt; "?a=1&amp;b=2"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-7087709753793881478?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/7087709753793881478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=7087709753793881478' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7087709753793881478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7087709753793881478'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2010/03/convert-hash-to-query-string-or.html' title='Convert a Hash to a Query String or Parameter String'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-7302598460782525077</id><published>2010-02-05T10:23:00.002-06:00</published><updated>2010-02-05T10:28:08.929-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby Multithreading with a Thread Size Limit</title><content type='html'>I wrote this class in the process of writing a multithreaded Amazon S3 key migrator. S3 doesn't like that, so don't even bother.&lt;br /&gt;&lt;br /&gt;You will want to use this with a thread-safe process block.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/295920.js?file=threaded_processor.rb"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-7302598460782525077?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/7302598460782525077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=7302598460782525077' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7302598460782525077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7302598460782525077'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2010/02/ruby-multithreading-with-thread-size.html' title='Ruby Multithreading with a Thread Size Limit'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4881823327574149014</id><published>2010-01-19T15:14:00.002-06:00</published><updated>2010-01-19T15:16:21.235-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>My .irbrc Ruby irb and Rails console configuration</title><content type='html'>Here is my customized configuration file for Ruby irb and Rails console.  You will need to install the wirble and hirb gems for full functionality.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/251853.js?file=.irbrc"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4881823327574149014?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4881823327574149014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4881823327574149014' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4881823327574149014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4881823327574149014'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2010/01/my-irbrc-ruby-irb-and-rails-console.html' title='My .irbrc Ruby irb and Rails console configuration'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4875370707577270213</id><published>2010-01-18T18:01:00.001-06:00</published><updated>2010-01-18T18:02:41.445-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Compile FFMPEG from Source with x264 Support</title><content type='html'>Here are my notes for compiling FFMPEG from source with x264 and Xvid/DivX support on Ubuntu 9.10 Karmic Koala.&lt;br /&gt;&lt;br /&gt;Your milage may vary!!!&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/280512.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4875370707577270213?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4875370707577270213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4875370707577270213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4875370707577270213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4875370707577270213'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2010/01/compile-ffmpeg-from-source-with-x264.html' title='Compile FFMPEG from Source with x264 Support'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-8880907692936273947</id><published>2009-10-30T14:51:00.002-05:00</published><updated>2009-10-30T14:52:52.012-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Change Default JVM on OSX</title><content type='html'>If you install the Java 1.6 JRE on OSX Leopard 10.5 and want to make it default:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;open /Applications/Utilities/Java\ Preferences.app&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-8880907692936273947?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/8880907692936273947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=8880907692936273947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8880907692936273947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8880907692936273947'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/10/change-default-jvm-on-osx.html' title='Change Default JVM on OSX'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-2183055979025195958</id><published>2009-10-24T20:34:00.003-05:00</published><updated>2009-10-24T20:38:05.991-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Giving Up on Windows 7</title><content type='html'>For some wonderful reason, Windows 7 takes eight minutes to boot on my desktop machine.  This is an Intel Core2Quad with 4GB of RAM.  Not a speed demon, but no slouch.  I have been in *Nix land too long and can't figure out what hardware is stalling the boot process.  Horrifically frustrating.&lt;br /&gt;&lt;br /&gt;I am not used to not being able to figure things out, but I have reached the point of not caring anymore.  Windows is just a game platform for me and I get real work done in Linux or OSX.&lt;br /&gt;&lt;br /&gt;Windows XP will play Left4Dead just fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-2183055979025195958?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/2183055979025195958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=2183055979025195958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2183055979025195958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2183055979025195958'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/10/giving-up-on-windows-7.html' title='Giving Up on Windows 7'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-2161199021772091199</id><published>2009-09-22T20:21:00.002-05:00</published><updated>2009-09-22T20:25:48.230-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Set Default Terminal Size in Gnome</title><content type='html'>This was difficult to find.  You CAN set the default size of Gnome Terminal.  The following instructions apply to Ubuntu 9.04, so your milage may vary:&lt;br /&gt;&lt;br /&gt;Open /usr/share/vte/termcap/xterm:&lt;br /&gt;&lt;tt&gt;   sudo gedit /usr/share/vte/termcap/xterm&lt;/tt&gt;&lt;br /&gt;Find the line containing &lt;span style="font-family:courier new;"&gt;:co#80:it#8:li#24:&lt;/span&gt;\ (line 10 in Ubunto 9.04)&lt;br /&gt;Replace the 80 with desired column width, and 24 with the desired row height.&lt;br /&gt;Save and close all terminals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-2161199021772091199?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/2161199021772091199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=2161199021772091199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2161199021772091199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2161199021772091199'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/09/set-default-terminal-size-in-gnome.html' title='Set Default Terminal Size in Gnome'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1666201510112182503</id><published>2009-08-30T08:39:00.002-05:00</published><updated>2009-08-30T08:43:54.045-05:00</updated><title type='text'>Lone Star Ruby Conference 2009</title><content type='html'>I must say that the conference this year was amazing.  This is the first time I have been to a Ruby conference.  Though I could have easily learned any of the subjects presented myself, the insight and enthusiasm from the speakers gave me better ideas for implementation and more excitement to actually do something.&lt;br /&gt;&lt;br /&gt;I have been inspired and now I want to give a talk next year.&lt;br /&gt;&lt;br /&gt;I am still stoked from the experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1666201510112182503?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1666201510112182503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1666201510112182503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1666201510112182503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1666201510112182503'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/08/lone-star-ruby-conference-2009.html' title='Lone Star Ruby Conference 2009'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1171836990123550924</id><published>2009-08-16T13:59:00.002-05:00</published><updated>2009-08-16T14:01:15.361-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><title type='text'>De-Interlace Video in AcidRip</title><content type='html'>To enable deinterlacing of video when converting DVD video with AcidRip, add the following to the "Post Filters" field under the "Video" tab:  "pp=lb"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1171836990123550924?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1171836990123550924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1171836990123550924' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1171836990123550924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1171836990123550924'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/08/de-interlace-video-in-acidrip.html' title='De-Interlace Video in AcidRip'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5881095152856738035</id><published>2009-08-01T21:59:00.002-05:00</published><updated>2009-08-01T22:05:42.502-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exploits'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Apple Exploits</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UVOPE-m78K4/SnUCYTtw0HI/AAAAAAAACDs/Qp1jtcOa0C0/s1600-h/Apple_keyboard_working.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 264px;" src="http://1.bp.blogspot.com/_UVOPE-m78K4/SnUCYTtw0HI/AAAAAAAACDs/Qp1jtcOa0C0/s320/Apple_keyboard_working.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5365197147714146418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hackers are having a seeming field day with Apple products.  Between the &lt;a href="http://www.semiaccurate.com/2009/07/31/apple-keyboard-firmware-hack-demonstrated/"&gt;Apple Keyboard Firmware hack&lt;/a&gt;, the &lt;a href="http://cyberinsecure.com/remote-code-execution-through-intel-cpu-vulnerability-will-be-presented-in-hack-in-the-box-security-conference/"&gt;Intel processor firmware hack&lt;/a&gt; (this one is OS agnostic), and the &lt;a href="http://www.theiphoneblog.com/2009/07/30/charlie-miller-demonstrate-iphone-sms-hack-black-hat-conference-today/"&gt;iPhone SMS hack&lt;/a&gt; it's a bad day to be an Apple fanboy or user.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll stick to doing my online banking on my Linux machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5881095152856738035?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5881095152856738035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5881095152856738035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5881095152856738035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5881095152856738035'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/08/apple-exploits.html' title='Apple Exploits'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UVOPE-m78K4/SnUCYTtw0HI/AAAAAAAACDs/Qp1jtcOa0C0/s72-c/Apple_keyboard_working.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-581626381400584240</id><published>2009-07-19T12:38:00.006-05:00</published><updated>2009-07-19T12:57:36.913-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Must Read Book for Web Developers</title><content type='html'>&lt;p style="margin: 0pt 20px; float: left;"&gt;&lt;a href="http://www.amazon.com/gp/product/0596529325?ie=UTF8&amp;amp;tag=fbqui-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596529325"&gt;&lt;img src="https://images-na.ssl-images-amazon.com/images/I/51QfNgF8QBL._SL160_.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;Today I got my copy of &lt;a href="http://www.amazon.com/gp/product/0596529325?ie=UTF8&amp;amp;tag=fbqui-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596529325"&gt;Programming Collective Intelligence&lt;/a&gt; and I wish I had bought this book back when it came out.  In my day job, I am developing mostly social networking type sites, and I could have saved days of hair pulling.&lt;br /&gt;&lt;p&gt;Some days it seems as if I am just writing the same old "dumb" web-sites, and I never really understood how other programmers integrated the massive amounts of data we collect every day into a usable and actionable form, both for user and stake-holder.  I figured it involved complicated maths that I either don't remember or never took (dotcom college dropout here).  Tobey Segaran puts data mining concepts into readable English and sample code.&lt;br /&gt;&lt;br /&gt;I never post book reviews, but I am only 3 chapters in, and I love it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-581626381400584240?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/581626381400584240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=581626381400584240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/581626381400584240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/581626381400584240'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/07/must-read-book-for-developers.html' title='Must Read Book for Web Developers'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-9200025061462532159</id><published>2009-06-22T13:13:00.004-05:00</published><updated>2009-06-28T07:36:36.494-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><title type='text'>Adium won't connect to Yahoo Messenger</title><content type='html'>&lt;p&gt;Do you have Yahoo Messenger connection problems with Adium or Pidgin.  The Adium 1.4 beta fixes the issue.  &lt;a href="http://beta.adium.im"&gt;beta.adium.im&lt;/a&gt;&lt;/p&gt;&lt;p&gt;More &lt;a href="http://adium.im/blog/2009/06/yahoo-change/"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-9200025061462532159?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/9200025061462532159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=9200025061462532159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/9200025061462532159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/9200025061462532159'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/06/adium-wont-connect-to-yahoo-messenger.html' title='Adium won&apos;t connect to Yahoo Messenger'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3450075085023792531</id><published>2009-06-10T10:53:00.001-05:00</published><updated>2009-06-10T10:57:08.982-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><title type='text'>View Contents of SSL CSR</title><content type='html'>&lt;span style="font-family: courier new;"&gt;openssl req -text -noout -in host.csr&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3450075085023792531?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3450075085023792531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3450075085023792531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3450075085023792531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3450075085023792531'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/06/view-contents-of-ssl-csr.html' title='View Contents of SSL CSR'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-520119233839510891</id><published>2009-05-25T11:03:00.000-05:00</published><updated>2009-05-25T11:04:17.368-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>Pushing to a Gitosis Git Repo for the first time</title><content type='html'>&lt;pre style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;git push origin master:refs/heads/master&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-520119233839510891?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/520119233839510891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=520119233839510891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/520119233839510891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/520119233839510891'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/05/pushing-to-gitosis-git-repo-for-first.html' title='Pushing to a Gitosis Git Repo for the first time'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-6104220098537314983</id><published>2009-05-09T16:24:00.003-05:00</published><updated>2009-05-09T16:32:57.277-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><title type='text'>Errors when Running GWT from Eclipse</title><content type='html'>I was able to get a preview release of the Google AppEngine SDK for Java last week, and finally had an opportunity to play with it.  I installed Eclipse on my 64bit Ubuntu Linux box and all the plugins as suggested by Google's Java docs.  Everything worked great until I tried to debug the default app as generated by the Eclipse Plugin.&lt;br /&gt;I got an error in the GWT (Google Web Toolkit) packages saying (among other things)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;libswt-pi-gtk-3235.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With a little digging, I found that this was related to 32bit compiled java libraries being run under the 64bit Java runtime.  The solution is to install the 32bit Java runtime binary, and instruct Eclipse to use it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;#From Terminal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo apt-get install sun-java-6-bin ia32-sun-java6-bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo apt-get remove gij&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo update-alternatives --config java&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# Select the 32bit runtime&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From Eclipse go to Window -&gt; Preferences -&gt; Java -&gt; Installed JRE's -&gt; Add -&gt; Standard VM   and use the path &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;/usr/lib/jvm/ia32-java-6-sun-1.6.0.13&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you can Run -&gt; Debug As -&gt; Web Application&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-6104220098537314983?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/6104220098537314983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=6104220098537314983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/6104220098537314983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/6104220098537314983'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/05/errors-when-running-gwt-from-eclipse.html' title='Errors when Running GWT from Eclipse'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1365600078691142907</id><published>2009-04-21T11:55:00.002-05:00</published><updated>2009-04-21T12:00:12.779-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Rails and form_for() within Partials</title><content type='html'>This one tripped me up for almost 2 hours.&lt;br /&gt;&lt;br /&gt;When using form_for() within a partial, use the variable reference instead of a symbol when specifying the form object.    i.e. Use form_for(@user){|user_form|}, instead of form_for(:user){|user_form|}&lt;br /&gt;&lt;br /&gt;I was creating a multi-model form with nested attributes using the new Rails 2.3 fields_for semantics, and the nested model field id's didn't have the numbered "*_attributes_0" suffix string.  Ruling out syntax errors, I inspected the nested form objects and found that my user_form.object was nil, and thus the form_for method was not assigning the form object.  When led me to find that my use of form_for(:user) was broken.  form_for(@user) worked perfectly.&lt;br /&gt;&lt;br /&gt;My conclusion may be incorrect, but it appears that using a symbolic reference as an object attribute for form_for() within a partial is broken.&lt;br /&gt;&lt;br /&gt;The moral of the story is, just use the variable reference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1365600078691142907?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1365600078691142907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1365600078691142907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1365600078691142907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1365600078691142907'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/04/rails-and-formfor-within-partials.html' title='Rails and form_for() within Partials'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-7011208874155482057</id><published>2009-03-28T16:12:00.002-05:00</published><updated>2009-03-28T16:14:44.838-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='passenger'/><title type='text'>Capistrano deploy.rb for Git and Phusion Passenger</title><content type='html'>Here is my Capsitrano &lt;a href="http://gist.github.com/87207"&gt;deploy.rb&lt;/a&gt; script/recipe for use with Git repos on servers powered by Phusion Passenger (mod_rails). &lt;br /&gt;&lt;br /&gt;&lt;a href="http://gist.github.com/87207"&gt;http://gist.github.com/87207&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-7011208874155482057?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/7011208874155482057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=7011208874155482057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7011208874155482057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7011208874155482057'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/03/capistrano-deployrb-for-git-and-phusion.html' title='Capistrano deploy.rb for Git and Phusion Passenger'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-8572424329037608865</id><published>2009-01-09T14:36:00.005-06:00</published><updated>2009-01-09T14:41:27.180-06:00</updated><title type='text'>Telnet SMTP Escape Character</title><content type='html'>When connecting to an SMTP server via telnet (i.e. &lt;span style="font-family: courier new;"&gt;telnet mail.example.com 25&lt;/span&gt;), you will be informed that "&lt;span style="font-family: courier new;"&gt;Escape character is '^]'.&lt;/span&gt;"  This means you need to press &lt;span style="font-family: courier new;"&gt;CTRL-]&lt;/span&gt; (control plus right-bracket)&lt;br /&gt;&lt;br /&gt;I am embarrassed how long it took me to realize that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-8572424329037608865?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/8572424329037608865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=8572424329037608865' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8572424329037608865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8572424329037608865'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/01/telnet-smtp-escape-character.html' title='Telnet SMTP Escape Character'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3209540117805388416</id><published>2009-01-04T22:00:00.003-06:00</published><updated>2009-01-05T09:10:29.144-06:00</updated><title type='text'>MySpace Mobsters Calculator and Strategy Helper</title><content type='html'>I wrote a &lt;a href="http://my-mobsters-helper.appspot.com/"&gt;Mobsters helper&lt;/a&gt; this weekend to help in choosing the best weapons configuration.  Enjoy!&lt;br /&gt;&lt;br /&gt;I am liking Google AppEngine so far, and this weekend project has really put me onboard with jQuery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3209540117805388416?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3209540117805388416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3209540117805388416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3209540117805388416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3209540117805388416'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2009/01/myspace-mobsters-strategy-helper.html' title='MySpace Mobsters Calculator and Strategy Helper'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3880096888823180144</id><published>2008-12-05T13:45:00.005-06:00</published><updated>2008-12-05T13:54:53.502-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Error Updating RubyGems</title><content type='html'>If you get the following error:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;undefined local variable or method `remote_gemspecs’&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then run:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;sudo gem install rubygems-update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo gem update&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3880096888823180144?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3880096888823180144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3880096888823180144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3880096888823180144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3880096888823180144'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/12/error-updating-rubygems.html' title='Error Updating RubyGems'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-2251971007987465153</id><published>2008-12-05T13:33:00.002-06:00</published><updated>2008-12-05T13:37:48.875-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Set JAVA_HOME on Mac OSX</title><content type='html'>If you want to install the rjb Ruby Gem, you will need to set the JAVA_HOME environment variable.&lt;br /&gt;&lt;br /&gt;Add the following line to&lt;span style="font-family: courier new;font-size:85%;" &gt; ~/.login&lt;/span&gt; or &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;/etc/profile&lt;/span&gt;&lt;/span&gt; and restart your terminal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Home&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-2251971007987465153?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/2251971007987465153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=2251971007987465153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2251971007987465153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2251971007987465153'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/12/set-javahome-on-mac-osx.html' title='Set JAVA_HOME on Mac OSX'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-404894298665123887</id><published>2008-10-21T13:04:00.002-05:00</published><updated>2008-10-21T13:07:59.259-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails Application in A Subdirectory</title><content type='html'>If you want to have a Rails application work under a subdirectory, as in &lt;span style="font-family: courier new;font-size:85%;" &gt;http://www.example.com/rails_app&lt;/span&gt; ,  then add this line to your &lt;span style="font-family: courier new;font-size:85%;" &gt;config/environment.rb&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ActionController::AbstractRequest.relative_url_root = "/rails_app"&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-404894298665123887?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/404894298665123887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=404894298665123887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/404894298665123887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/404894298665123887'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/10/rails-application-in-subdirectory.html' title='Rails Application in A Subdirectory'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-8229486004916108437</id><published>2008-10-16T16:39:00.004-05:00</published><updated>2008-10-16T16:41:21.112-05:00</updated><title type='text'>Using Ruby Java Bindings on Dreamhost</title><content type='html'>Getting rjb, also known as "Ruby Java Bindings' to work in a Dreamhost account can be somewhat problematic. Fortunately, it is also fairly straightforward.  You just have to install all the dependencies in the user directory.&lt;br /&gt;&lt;br /&gt;In my case, I was setting up a Rails Application that used the iText Java library to fill in PDF documents for user download.  Of course, the server environment was not using Sun Java and the Java headers were not present, so &lt;span style="font-family:Courier New;"&gt;gem install rjb&lt;/span&gt; failed.  Joy.&lt;br /&gt;&lt;br /&gt;The first course of action was to do a local install of Java.&lt;br /&gt;&lt;br /&gt;Download &lt;span style="font-family:Courier New;"&gt;jdk-6u7-linux-x64.bin&lt;/span&gt; and &lt;span style="font-family:Courier New;"&gt;jre-6u7-linux-x64.bin&lt;/span&gt; from the Sun Java site. Then create an &lt;span style="font-family:Courier New;"&gt;~/opt&lt;/span&gt; directory and extract the JRE and JDK (you will need to &lt;span style="font-family:Courier New;"&gt;chmod u+x&lt;/span&gt; both files then call them from the command line).  Move the resulting folders to &lt;span style="font-family:Courier New;"&gt;~/opt&lt;/span&gt; .   I renamed the folders to&lt;i&gt; jdk&lt;/i&gt; and &lt;i&gt;jre&lt;/i&gt; for simplicity.&lt;br /&gt;&lt;br /&gt;Now you ensure that user gems are enabled in cPanel.  Then add the following 3 lines to &lt;span style="font-family:Courier New;"&gt;~/.bash_profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;export JAVA_HOME=/home/username/opt/jdk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;export GEM_PATH=/home/username/ruby/gems&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;export GEM_HOME=/home/username/ruby/gems&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run &lt;span style="font-family:Courier New;"&gt;source ~/.bash_profile&lt;/span&gt; to load the paths.&lt;br /&gt;&lt;br /&gt;Now you can run &lt;span style="font-family:Courier New;"&gt;gem install rjb&lt;/span&gt; without any problems.  You will likely have to re-install Rails and other gems because we will be telling our Rails app to load gems from the user directory.  Just use the regular &lt;span style="font-family:Courier New;"&gt;gem install &lt;span style="font-family:Arial;"&gt;syntax.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add the following 2 lines to your config/environment.rb at the top&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;ENV['GEM_PATH']='/home/username/ruby/gems'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;ENV['JAVA_HOME']='/home/username/opt/jdk'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's pretty much it.&lt;br /&gt;&lt;br /&gt;I will concede that these probably aren't the best instructions, but this is the real meat of the solution.  If you keep getting "no such file to load" errors, you will need to extract the gems to the vendor/plugins directory.  &lt;span style="font-family:Courier New;"&gt;cd RAILS_ROOT/vendor/plugins&lt;/span&gt; and &lt;span style="font-family:Courier New;"&gt;gem unpack gem_name&lt;/span&gt; for each problematic gem.  I believe this is an issue with Passenger.&lt;br /&gt;&lt;br /&gt;Please correct me if I am wrong about any of this, it was a very long day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-8229486004916108437?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/8229486004916108437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=8229486004916108437' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8229486004916108437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8229486004916108437'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/10/using-ruby-java-bindings-on-dreamhost.html' title='Using Ruby Java Bindings on Dreamhost'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-665194667041639426</id><published>2008-10-16T15:58:00.002-05:00</published><updated>2008-10-16T15:58:45.434-05:00</updated><title type='text'>A big thank-you to the Planet</title><content type='html'>Thanks for getting hacked, you made my day a whole lot more interesting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-665194667041639426?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/665194667041639426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=665194667041639426' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/665194667041639426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/665194667041639426'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/10/big-thank-you-to-planet.html' title='A big thank-you to the Planet'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-8357675159185535703</id><published>2008-09-27T22:48:00.004-05:00</published><updated>2008-09-27T22:59:23.092-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Problems with IE7 Sessions Not Saved in Rails or PHP</title><content type='html'>If you are unlucky, your login routine will work in Firefox, Internet Explorer 6, Safari, Opera, or whatever, but it won't persist in Internet Explorer 7.  x&lt;br /&gt;&lt;br /&gt;I spent days on this one:  Login worked great in Firefox, but in IE7 the same credentials resulted in a page that looked like I never attempted to log in.  The logs showed me that the user credentials were accepted and the page redirected as expected, but the subsequent page load was absent any sign that I logged in.&lt;br /&gt;&lt;br /&gt;Well, check your subdomain.  You can't have an underscore in a subdomain. http://support.microsoft.com/kb/909264&lt;br /&gt;&lt;br /&gt;In this instance, IE7 is inconsistently supporting standards.  The browser will accept a badly formatted domain and show you the page in your browser, but will refuse to set the session cookie.  Firefox and Safari are not quite so strict.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-8357675159185535703?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/8357675159185535703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=8357675159185535703' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8357675159185535703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/8357675159185535703'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/09/problems-with-ie7-sessions-not-saved-in.html' title='Problems with IE7 Sessions Not Saved in Rails or PHP'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5272895612036148232</id><published>2008-07-03T10:55:00.005-05:00</published><updated>2009-01-08T16:53:41.198-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Rails:  Get controller route hash from url string</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:verdana;"&gt;This is somewhat uncommon, but to get the routing hash from a URL string:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ActionController::Routing::Routes.recognize_path('/users/1')&lt;br /&gt;# =&gt; {:controller =&gt; 'users', :action =&gt; 'show', :id =&gt; '1' }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5272895612036148232?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5272895612036148232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5272895612036148232' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5272895612036148232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5272895612036148232'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/07/rails-get-controller-route-hash-from.html' title='Rails:  Get controller route hash from url string'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1937045882550662552</id><published>2008-06-07T10:01:00.000-05:00</published><updated>2008-06-07T10:02:07.444-05:00</updated><title type='text'>Firefox in Ubuntu 8.04</title><content type='html'>Is it just me, or is Firefox 3 Beta unusably unstable???&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1937045882550662552?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1937045882550662552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1937045882550662552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1937045882550662552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1937045882550662552'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/06/firefox-in-ubuntu-804.html' title='Firefox in Ubuntu 8.04'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5667264927053724979</id><published>2008-05-17T18:37:00.009-05:00</published><updated>2008-09-28T00:31:10.816-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdns'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Using mDNS / Zeroconf / Avahi and Firestarter Firewall on Ubuntu</title><content type='html'>&lt;span style="font-weight: bold;"&gt;About Multicast DNS&lt;/span&gt;&lt;br /&gt;Multicast DNS (mDNS) allows machines on a local network to connect by name without the need for a local DNS server.  Each machine must have a hostname set, and a mDNS client/server installed.  Macs have it preinstalled (being called Bonjour), as well as modern releases of Linux including Ubuntu(called &lt;span style="font-style: italic;"&gt;avahi).  &lt;/span&gt;Windows clients can download and install &lt;a href="http://www.apple.com/support/downloads/bonjourforwindows.html"&gt;Bonjour for Windows&lt;/a&gt; from the Apple website.  It seems most modern printers use mDNS for easy printer setup.  Even though I run a local DNS server using dnsmasq, mDNS makes DHCP client access easy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Problem&lt;/span&gt;&lt;br /&gt;Long ago I installed Bonjour for Windows so I could access the machine via mDNS (multicast DNS).  Today, my Ubuntu 8.04 machine would no longer connect to my Windows printer share. It turns out that Firestarter on the Ubuntu machine was the culprit.   mDNS requests were being blocked regardless of my Firestarter config.  So here is the fix:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;sudo gedit /etc/firestarter/user-pre&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add the following two lines and save:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$IPT -A INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$IPT -A OUTPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These two IP tables rules allow the mDNS requests in and out, and override any GUI configuration in Firestarter.&lt;br /&gt;&lt;br /&gt;Restart avahi, then restart firestarter:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;sudo /etc/init.d/avahi-daemon restart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo /etc/init.d/firestarter restart&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are still having trouble, look at  &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;/etc/default/avahi-daemon&lt;/span&gt;&lt;/span&gt; and make sure it says: &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;AVAHI_DAEMON_DETECT_LOCAL=1&lt;/span&gt;&lt;/span&gt; .  Also run &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;sudo netstat -ltunp&lt;/span&gt;&lt;/span&gt; to verify that avahi-daemon is listening on port 5353.&lt;br /&gt;&lt;br /&gt;Found &lt;a href="http://ubuntuforums.org/showthread.php?t=164193"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE:  &lt;/span&gt;apparently this doesn't work for some.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5667264927053724979?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5667264927053724979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5667264927053724979' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5667264927053724979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5667264927053724979'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/05/using-mdns-zeroconf-avahi-and.html' title='Using mDNS / Zeroconf / Avahi and Firestarter Firewall on Ubuntu'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1760778830287938274</id><published>2008-03-18T14:31:00.007-05:00</published><updated>2008-03-19T08:45:17.093-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Compile And Install FFMPEG on Redhat RHEL4</title><content type='html'>I just had the wonderful opportunity to set up a video sharing site on Redhat Enterprise Linux 4.  Yeah.  Four.&lt;br /&gt;&lt;br /&gt;The worst part was getting ffmpeg to work, so here are my notes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;(download, extract, etc.)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://downloads.sourceforge.net/faac/faac-1.26.tar.gz"&gt;faac&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./bootstrap &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;a href="http://downloads.sourceforge.net/faac/faac-1.26.tar.gz"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz"&gt;faad2&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./bootstrap &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;a href="http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt; &lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://superb-west.dl.sourceforge.net/sourceforge/lame/lame-3.98b6.tar.gz"&gt;lame&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://downloads.xiph.org/releases/theora/libtheora-1.0beta2.tar.gz"&gt;libtheora&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz"&gt;libvorbis&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz"&gt;xvidcore&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;cd build/generic; ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20080317-2245.tar.bz2"&gt;x264&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;download and install latest subversion&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;pre&gt;&lt;a href="http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/apr-0.9.12-2.i386.rpm"&gt;apr-0.9.12-2.i386.rpm&lt;/a&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;&lt;a href="http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/apr-util-0.9.12-1.i386.rpm"&gt;apr-util-0.9.12-1.i386.rpm&lt;/a&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;&lt;a href="http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/subversion-1.4.6-1.i386.rpm"&gt;subversion-1.4.6-1.i386.rpm&lt;/a&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./configure --enable-shared &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configure, Compile, and Install FFMPEG&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;./configure --enable-libmp3lame  --enable-libvorbis \&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;    --enable-libxvid --enable-shared --enable-libfaac \&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;    --enable-libfaad --enable-gpl --enable-libtheora \&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;    --enable-libx264&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;make&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;make install&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Create Symlinks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libavformat.so.52 /usr/lib/libavformat.so.52  &lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libx264.so.58 /usr/lib/libx264.so.58&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libtheora.so.0 /usr/lib/libtheora.so.0    &lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libfaad.so.0 /usr/lib/libfaad.so.0&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;ln -s /usr/local/lib/libfaac.so.0 /usr/lib/libfaac.so.0&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If you don't create these symlinks you will get errors like:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;blockquote&gt;ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Done.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run &lt;span style="font-family:courier new;"&gt;ffmpeg &lt;span style="font-family:georgia;"&gt;and it should spit out that insane list of options, wihout any errors.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1760778830287938274?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1760778830287938274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1760778830287938274' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1760778830287938274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1760778830287938274'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/03/compile-ffmpeg-on-rhel4.html' title='Compile And Install FFMPEG on Redhat RHEL4'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4484172739296385992</id><published>2008-03-01T17:34:00.003-06:00</published><updated>2008-03-01T17:59:03.556-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><title type='text'>Online Flashcards and Quizzer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_UVOPE-m78K4/R8ntgZ7x36I/AAAAAAAAAE4/YypaEJsCu0s/s1600-h/qzr_ss.png"&gt;&lt;img style="margin: 0px auto 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_UVOPE-m78K4/R8ntgZ7x36I/AAAAAAAAAE4/YypaEJsCu0s/s320/qzr_ss.png" alt="" id="BLOGGER_PHOTO_ID_5172926787984940962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I just launched a new online &lt;a href="http://quizzr.argon.ath.cx/"&gt;flash cards&lt;/a&gt; and quizzing site called &lt;a href="http://quizzr.argon.ath.cx/"&gt;FB_Quizzr&lt;/a&gt;. The site is primarily intended to be used as a &lt;a href="http://www.facebook.com/apps/application.php?id=28782830288"&gt;Facebook application&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4484172739296385992?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4484172739296385992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4484172739296385992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4484172739296385992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4484172739296385992'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/03/online-flashcards-and-quizzer.html' title='Online Flashcards and Quizzer'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_UVOPE-m78K4/R8ntgZ7x36I/AAAAAAAAAE4/YypaEJsCu0s/s72-c/qzr_ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5483179394323734197</id><published>2008-02-27T10:07:00.002-06:00</published><updated>2008-02-27T10:17:32.219-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>How to Disable Asset Timestamps in Rails</title><content type='html'>By default, Rails appends a timestamp parameter to asset urls to aid in cache management.  If you need to disable this, simply add the following line to your &lt;span style="font-family: courier new;"&gt;config/environment.rb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ENV['RAILS_ASSET_ID'] = ''&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5483179394323734197?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5483179394323734197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5483179394323734197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5483179394323734197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5483179394323734197'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/02/how-to-disable-asset-timestamps-in.html' title='How to Disable Asset Timestamps in Rails'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3549224214215076366</id><published>2008-02-26T09:32:00.002-06:00</published><updated>2008-02-26T09:38:06.584-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Advanced puts Syntax in Ruby</title><content type='html'>The "puts" command can be used with sprintf syntax using the percent (%) sign as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;puts "ABC %2.2f" % 3.567&lt;br /&gt;  =&gt; &lt;span style="font-style: italic;"&gt;"ABC 3.57&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;puts "ABC %2.2f DEF %5s" % [3.567, "abcd"]&lt;br /&gt;  =&gt; &lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-style: italic;"&gt;"ABC 3.57 DEF  abcd"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3549224214215076366?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3549224214215076366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3549224214215076366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3549224214215076366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3549224214215076366'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/02/advanced-puts-syntax-in-ruby.html' title='Advanced puts Syntax in Ruby'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5520950908151703089</id><published>2008-02-16T15:31:00.003-06:00</published><updated>2008-02-16T15:41:34.948-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='mongrel'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Load Balance Rails Mongrel Clusters With Apache</title><content type='html'>A simple solution for load balancing a Ruby on Rails Mongrel cluster with an Apache front end is to use the randomizing feature in Apache module mod_apache’s rewrite map feature. Say, for instance, you have 3 Mongrel servers, running on ports 4000 to 4002 on &lt;span style="font-style: italic;"&gt;localhost&lt;/span&gt;. First create a file &lt;span style="font-style: italic;"&gt;map.txt&lt;/span&gt; containing these numbers:   &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ports  4000|4001|4002&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then ensure the following directives are present inside the VirtualHost stanza in your Apache configuration:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ProxyRequests Off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ProxyPassReverse / http://localhost:4000/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ProxyPassReverse / http://localhost:4001/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ProxyPassReverse / http://localhost:4002/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ProxyPreserveHost On&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;RewriteEngine On&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;RewriteMap  servers rnd:/path/to/your/map.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;RewriteRule ^/(images|stylesheets|javascripts)/?(.*) $0 [L]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;RewriteRule ^/(.*)$ http://localhost:${servers:ports}/$1 [P,L]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Restart Apache, and that is it.&lt;br /&gt;&lt;br /&gt;I have had great success using both the Pound load balancer, and Nginx, which I suggest highly, but Apache does a great job when necessary.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5520950908151703089?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5520950908151703089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5520950908151703089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5520950908151703089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5520950908151703089'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/02/load-balance-rails-mongrel-clusters.html' title='Load Balance Rails Mongrel Clusters With Apache'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5674504943371310886</id><published>2008-02-13T17:57:00.009-06:00</published><updated>2009-07-07T16:16:25.878-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Using :db_file with attachment_fu</title><content type='html'>The README for attachment_fu says that accessing data using the :db_file backend is outside the scope of the document.  Well here is my take on it.  You will also need the "&lt;a href="http://code.google.com/p/mimetype-fu/"&gt;mimetype_fu&lt;/a&gt;" plugin.  Follow the instructions with attachment_fu as usual, and do the following.&lt;br /&gt;&lt;br /&gt;Assuming that your attachment model is called "Asset" add the following line to "config/routes.rb":&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;map.asset_data '/asset/:id', :controller =&gt; 'assets', :action =&gt; 'show'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create an AssetController containing at least the following:&lt;br /&gt;(The thumbnail of the original image is found if necessary, and mimetype_fu is used to determine the mime-type sent to the browser)&lt;br /&gt;&lt;pre name="code" class="ruby"  &gt;class AssetsController &lt; ApplicationController&lt;br /&gt;  def show&lt;br /&gt;    asset = Asset.find(params[:id])&lt;br /&gt;    if params[:thumbnail]&lt;br /&gt;      data = asset.thumbnails.find_by_thumbnail(params[:thumbnail])&lt;br /&gt;    end&lt;br /&gt;    data ||= asset&lt;br /&gt;    send_data (data.db_file.data,&lt;br /&gt;        :filename =&gt; data.filename,&lt;br /&gt;        :type =&gt; File.mime_type?(data.filename),&lt;br /&gt;        :disposition =&gt; 'inline')&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Add this method to app/helpers/application_helper.rb&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;  def assetpath(asset,thumb=nil)&lt;br /&gt;    "#{asset_data_url(:id =&gt; asset.id)}#{thumb.nil? ? '' : "?thumbnail=#{thumb.to_s}"}"&lt;br /&gt; end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So now you may use the helper in your views (i.e.):&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;%= image_tag(assetpath(asset_model_instance)) %&gt;&lt;br /&gt;&lt;%= image_tag(assetpath(asset_model_instance,:thumb)) %&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5674504943371310886?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5674504943371310886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5674504943371310886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5674504943371310886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5674504943371310886'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2008/02/using-dbfile-with-attachmentfu.html' title='Using :db_file with attachment_fu'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4866231874590630233</id><published>2007-12-14T12:20:00.000-06:00</published><updated>2007-12-14T12:21:36.963-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails Multi-Model Forms</title><content type='html'>Here is an excellent &lt;a href="http://jamesgolick.com/2007/12/5/introducing-attributefu-multi-model-forms-made-easy"&gt;plugin&lt;/a&gt; to do all the magic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4866231874590630233?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4866231874590630233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4866231874590630233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4866231874590630233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4866231874590630233'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/12/rails-multi-model-forms.html' title='Rails Multi-Model Forms'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-741961605086398582</id><published>2007-12-14T11:59:00.000-06:00</published><updated>2007-12-14T12:06:00.841-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>URLs With file_column</title><content type='html'>This patch modifies the Rails file_column plugin so that it may download a remote file via HTTP in addition  to using uploaded data.  Now you can specify a string with a full valid URL.&lt;br /&gt;&lt;br /&gt;Run it against &lt;span style="font-family: courier new;"&gt;lib/file_column.rb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!  &lt;a href="http://patrick.morgan.googlepages.com/file_column.patch"&gt;file_column patch&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-741961605086398582?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/741961605086398582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=741961605086398582' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/741961605086398582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/741961605086398582'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/12/urls-with-filecolumn.html' title='URLs With file_column'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3027613473840289223</id><published>2007-12-13T12:19:00.001-06:00</published><updated>2007-12-13T12:21:55.585-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails 2.0 Screencast</title><content type='html'>He goes a bit fast:&lt;br /&gt;&lt;a href="http://www.akitaonrails.com/2007/12/10/the-first-rails-2-0-screencast-english"&gt;http://www.akitaonrails.com/2007/12/10/the-first-rails-2-0-screencast-english&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Direct links to the text versions:&lt;br /&gt;&lt;a href="http://www.akitaonrails.com/2007/12/12/rolling-with-rails-2-0-the-first-full-tutorial"&gt;http://www.akitaonrails.com/2007/12/12/rolling-with-rails-2-0-the-first-full-tutorial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.akitaonrails.com/2007/12/12/rolling-with-rails-2-0-the-first-full-tutorial-part-2"&gt;http://www.akitaonrails.com/2007/12/12/rolling-with-rails-2-0-the-first-full-tutorial-part-2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3027613473840289223?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3027613473840289223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3027613473840289223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3027613473840289223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3027613473840289223'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/12/rails-20-screencast.html' title='Rails 2.0 Screencast'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5118374923234923398</id><published>2007-12-13T12:00:00.000-06:00</published><updated>2007-12-13T12:17:31.239-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Getting Rails 2.0 Running</title><content type='html'>So, Rails 2.0 has finally been released.  It was a bit of a pain getting all my Ruby Gems updated for some reason.  &lt;span style="font-style: italic;"&gt;Please keep in mind that the MySQL path is specific to OSX 10.5.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$ sudo gem update sources&lt;br /&gt;$ sudo gem update --system&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo gem uninstall mysql&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo gem install mysql  -- --with-mysql-dir=/usr/local/mysql&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$ sudo gem update  -- --with-mysql-dir=/usr/local/mysql&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;$ sudo gem install rails --include-dependencies&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I know there is a bit of duplicated effort there, but I had issues with that MySQL gem.&lt;br /&gt;&lt;br /&gt;Finally Rails 2.0 joy.  Now to fiddle around with it before starting a new project...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5118374923234923398?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5118374923234923398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5118374923234923398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5118374923234923398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5118374923234923398'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/12/getting-rails-20-running.html' title='Getting Rails 2.0 Running'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3593421672173711390</id><published>2007-12-13T11:41:00.000-06:00</published><updated>2008-01-13T20:58:37.706-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubygems'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Installing the MySQL Ruby Gem for Rails MySQL Support on OSX Leopard</title><content type='html'>Some special command line magic is required to install the MySQL Gem on OSX Leopard (10.5).&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$ export ARCHFLAGS="-arch i386"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I got this information from &lt;a href="http://trac.macosforge.org/projects/ruby/wiki/Troubleshooting"&gt;http://trac.macosforge.org/projects/ruby/wiki/Troubleshooting&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3593421672173711390?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3593421672173711390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3593421672173711390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3593421672173711390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3593421672173711390'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/12/installing-mysql-ruby-gem-on-leopard.html' title='Installing the MySQL Ruby Gem for Rails MySQL Support on OSX Leopard'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-556659160100521798</id><published>2007-12-05T22:16:00.000-06:00</published><updated>2007-12-05T22:19:30.707-06:00</updated><title type='text'>Netbeans 6 Final</title><content type='html'>Finally &lt;a href="http://download.netbeans.org/netbeans/6.0/final/"&gt;released&lt;/a&gt;!    There's not many pieces of software I will actually use in beta, but.  Wow.  Amazing IDE here.  I wish there had been nice open source IDE's like this back in the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-556659160100521798?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/556659160100521798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=556659160100521798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/556659160100521798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/556659160100521798'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/12/netbeans-6-final.html' title='Netbeans 6 Final'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5796858685379713580</id><published>2007-11-21T22:09:00.001-06:00</published><updated>2007-12-15T14:58:45.036-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails SQL Optimization</title><content type='html'>In order to automate the optimization of SQL queries in Ruby on Rails, I wrote this script to parse the output of the logs.  It finds all the unique SQL queries made by different controllers, and runs an SQL EXPLAIN for each.  This is really good for finding missing indexes and large table scans.&lt;br /&gt;&lt;br /&gt;I have only tested this on Mac/MySQL, so your mileage may vary (it uses *NIX file paths).  This script has saved me MUCH time.  Of course, when optimizing queries, don't go overboard on eager loading.  ActiveRecord eager loading can be slow if you use multiple nested includes.&lt;br /&gt;&lt;br /&gt;Just run this script within your Rails application root directory, and it will create a file named &lt;span style="font-family:courier new;"&gt;explained.html&lt;/span&gt;.  You may set the &lt;span style="font-family:courier new;"&gt;RAILS_ENV&lt;/span&gt; environment variable to specify production mode.  The script automatically loads your database configuration from l&lt;span style="font-family:courier new;"&gt;og/database.yml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oh, and there needs to be at least 2 pageloads in your log.  I haven't bothered fixing this bug.&lt;br /&gt;&lt;br /&gt;So here is the &lt;a href="http://patrick.morgan.googlepages.com/explain_log.rb"&gt;script&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE&lt;/span&gt;:  I came across some good tips for additional optimization &lt;a href="http://blog.new-bamboo.co.uk/2007/11/20/database-optimization-for-rails-apps"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5796858685379713580?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5796858685379713580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5796858685379713580' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5796858685379713580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5796858685379713580'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/11/rails-sql-optimization.html' title='Rails SQL Optimization'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-469089102196779188</id><published>2007-05-04T10:00:00.001-05:00</published><updated>2008-03-18T15:03:50.426-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dyndns'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Dynamic DNS Setup In Ubuntu Using DynDNS</title><content type='html'>&lt;p&gt;I use &lt;a href="http://www.dyndns.org/"&gt;Dyndns.org&lt;/a&gt; for dynamic domain services. There is easy setup and you can update your IP via a web browser, or schedule an application to run on a regular basis. Updating your IP address is important because you will lose your domain if you don’t update your record every 30-35 days. Here is a basic guide.&lt;/p&gt;                 &lt;p&gt;In Debian/Ubuntu you can install the updater via apt:&lt;/p&gt;   &lt;table class="CodeRay"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;   &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;sudo apt-get install ipcheck&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;Create bin directory, dyndns directory and updater script:&lt;/p&gt;   &lt;table class="CodeRay"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;mkdir ~/bin&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;mkdir ~/.dyndns&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;touch ~/bin/dyndns-update.sh&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;chmod 700 ~/bin/dyndns-update.sh&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;vi ~/bin/dyndns-update.sh&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;table class="CodeRay"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;#!/bin/sh&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;USERNAME=yourusername&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;PASSWORD=yourpassword&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;HOSTNAME=your.domain.name&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;cd ~/.dyndns&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;if [ -f ~/.dyndns/ipcheck.dat ]; then&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;  /usr/sbin/ipcheck -r checkip.dyndns.org:8245 \&lt;br /&gt; $USERNAME $PASSWORD $HOSTNAME&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;else&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;  /usr/sbin/ipcheck --makedat -r checkip.dyndns.org:8245 \&lt;br /&gt; $USERNAME $PASSWORD $HOSTNAME&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;fi&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;Edit your crontab:&lt;/p&gt;   &lt;table class="CodeRay"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;   &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;crontab -e&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;Add the following line to your crontab to run the script daily.&lt;/p&gt;      &lt;table class="CodeRay"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;   &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;* 6 * * * /home/username/bin/dyndns-update.sh&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-469089102196779188?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/469089102196779188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=469089102196779188' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/469089102196779188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/469089102196779188'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/05/dyndns.html' title='Dynamic DNS Setup In Ubuntu Using DynDNS'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-38717566316262081</id><published>2007-05-01T22:52:00.000-05:00</published><updated>2007-05-01T22:53:19.133-05:00</updated><title type='text'>User Driven Sites</title><content type='html'>Today digg.com was completely spammed by user submitted articles about the HD-DVD media access key. Digg admins rightly decided to censor and ban users posting the number to avoid legal consequences. I only hope that the community driven site I am making doesn’t suffer from similar problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-38717566316262081?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/38717566316262081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=38717566316262081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/38717566316262081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/38717566316262081'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/05/user-driven-sites.html' title='User Driven Sites'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-7739845838481247471</id><published>2007-03-22T23:02:00.000-05:00</published><updated>2007-03-22T23:09:00.816-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>A Server Monitor</title><content type='html'>I can't believe that I haven't been doing proper server monitoring.  Well, that had to come to an end.  I didn't like any of the monitoring apps out there and I did as a good code primate should and wrote my own.  Here is my own &lt;a href="http://code.google.com/p/rubyservermonitor/"&gt;server monitor&lt;/a&gt; and module written in and for Ruby.  It outputs in XML format.&lt;br /&gt;&lt;br /&gt;You write a simple XML configuration file, and call the app via the commandline specifying where the config, output, and XSL template are (cross-domain issues with XSL are fun!).&lt;br /&gt;&lt;br /&gt;What are you waiting for?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/rubyservermonitor/"&gt;http://code.google.com/p/rubyservermonitor/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-7739845838481247471?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/7739845838481247471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=7739845838481247471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7739845838481247471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7739845838481247471'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/03/server-monitor.html' title='A Server Monitor'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-7268103492953889956</id><published>2007-03-22T22:51:00.000-05:00</published><updated>2007-03-22T22:58:34.257-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Tabbed Pages with CSS and Javascript</title><content type='html'>It's been done before many times, but here's my stab at it.  This took me far too long, as my javascript and CSS skills are severely lacking (I like backend stuff better, what can I say?).&lt;br /&gt;&lt;br /&gt;What we have here is a horizontally styled list acting as a navigation bar, and a set of hidden divs shown when appropriate.&lt;br /&gt;&lt;br /&gt;Source &lt;a href="http://patrick.morgan.googlepages.com/css-javascript-tabbed-pages.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-7268103492953889956?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/7268103492953889956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=7268103492953889956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7268103492953889956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/7268103492953889956'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/03/tabbed-pages-with-css-and-javascript.html' title='Tabbed Pages with CSS and Javascript'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1607273996802960068</id><published>2007-03-05T17:32:00.000-06:00</published><updated>2007-03-05T17:34:12.425-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dvd'/><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Must-Have DVD Apps</title><content type='html'>DeVeDe:  DVD Authoring Tool&lt;br /&gt;    k9copy:  DVD9 to DVD5 copier&lt;br /&gt;    Thoggen: Rip DVD to OGG video&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1607273996802960068?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1607273996802960068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1607273996802960068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1607273996802960068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1607273996802960068'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/03/must-have-dvd-apps.html' title='Must-Have DVD Apps'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3278132899649358706</id><published>2007-03-02T10:50:00.000-06:00</published><updated>2007-03-02T10:59:43.956-06:00</updated><title type='text'>Hard Drive Performance and hdparm</title><content type='html'>Ok, I don't invest that much cash into my computer.  Heck, I haven't purchased new (or used) computer hardware for myself in almost 2 years.  My computer is at least 6 years out of date.  Its slow.&lt;br /&gt;&lt;br /&gt;Well, a RAM stick went out and I am down to 512MB, can we say SWAP???.  So I checked out the ouput from hdparm and I had a nasty surprise.  8.59 MB/sec!!!&lt;br /&gt;&lt;br /&gt;hdparm to the rescue. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$ hdparm -c3 -m16 -d1 -u1 -X70 -k /dev/hdb&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;37.99 MB/sec!!!&lt;br /&gt;&lt;br /&gt;That should improve performance significantly!&lt;br /&gt;&lt;br /&gt;Note:  These settings are for a Seagate Barracuda 80GB&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$ sudo hdparm -I /dev/hdb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ATA device, with non-removable media&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Model Number:       ST380021A                               &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Serial Number:      3HV291LP            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Firmware Revision:  3.19&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   ...&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3278132899649358706?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3278132899649358706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3278132899649358706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3278132899649358706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3278132899649358706'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/03/hard-drive-performance-and-hdparm.html' title='Hard Drive Performance and hdparm'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-2009385924242293581</id><published>2007-02-16T10:57:00.000-06:00</published><updated>2007-03-12T10:34:22.124-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Gnome Startup Programs Bug</title><content type='html'>If you specify additional startup programs through the Gnome Sessions application, and your changes won't save, it is likely that "~/.config/autostart" has the wrong file ownership.  Sometimes installation of Beagle will screw things up.&lt;br /&gt;&lt;br /&gt;To correct:&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;sudo chown -R username:username /home/username/.config&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-2009385924242293581?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/2009385924242293581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=2009385924242293581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2009385924242293581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/2009385924242293581'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/02/gnome-startup-programs-bug.html' title='Gnome Startup Programs Bug'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4424079874415947313</id><published>2007-02-09T12:10:00.000-06:00</published><updated>2007-02-09T12:10:16.999-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Ruby HTTPS with HTTP Basic Auth</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Fetching HTTPS data with Ruby using HTTP Basic Authorization&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;require 'net/http'&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;require 'net/https'&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;def get_feed(server,path,username,password)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;div style="margin-left: 40px; font-family: Courier New;"&gt;http = Net::HTTP.new(server,443)&lt;br&gt;req = Net::HTTP::Get.new(path)&lt;br&gt;http.use_ssl = true&lt;br&gt;req.basic_auth username, password&lt;br&gt;response = http.request(req)&lt;br&gt;return response.body&lt;br&gt;&lt;/div&gt;&lt;span style="font-family: Courier New;"&gt;end&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4424079874415947313?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4424079874415947313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4424079874415947313' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4424079874415947313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4424079874415947313'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/02/ruby-https-with-http-basic-auth.html' title='Ruby HTTPS with HTTP Basic Auth'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4629836890785871967</id><published>2007-01-31T09:59:00.000-06:00</published><updated>2007-01-31T10:07:34.109-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Complicity in Murder</title><content type='html'>This would have been more topical awhile back, but considering &lt;br /&gt;Saddam Hussein's execution is still in very recent memory it is &lt;br /&gt;worth remembering that the United States government has long been aware of the crimes that Saddam committed, and to a certain &lt;br /&gt;extent complicit.  A key quote from Barry Lando:&lt;br /&gt;&lt;blockquote&gt;The US gave satellite information, more to the Iraqis, enabling them to target Iranian troop concentrations, even though the US knew that the Iraqis were using chemical weapons.&lt;/blockquote&gt;&lt;br /&gt;Follow the &lt;a href="http://www.democracynow.org/article.pl?sid=07/01/30/1515254"&gt;link&lt;/a&gt; for an enlightening interview with a former&lt;i&gt; 60 Minutes&lt;/i&gt; producer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4629836890785871967?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4629836890785871967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4629836890785871967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4629836890785871967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4629836890785871967'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/complicity-in-murder.html' title='Complicity in Murder'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-223274024802424532</id><published>2007-01-22T10:39:00.000-06:00</published><updated>2007-01-22T14:42:16.794-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>SSH Public Key Authentication</title><content type='html'>    &lt;font size="3"&gt;&lt;span style="font-weight: bold;"&gt;SSH Public Key Authentication&lt;/span&gt;&lt;/font&gt;&lt;br&gt;(password-less SSH authentication on *nix systems)&lt;br&gt;&lt;br&gt;Its a pain to enter in passwords all day.  If you are like me and have a dozen or more machines and accounts to maintain, password management gets ridiculous.  A great solution is public key authentication.  You create a public key and a private key on a client machine, and distribute the public key to the various accounts and servers you need to access.  The public key identifies you, and your private key verifies your identity.  You only create your key pair once, and place your public key on all the servers you want to configure for password-less login.  If you do create another new key pair on the local machine, you will again have to follow the steps for configuring the remote machines.&lt;br&gt;&lt;br&gt;Keep in mind, the idea is to have a key pair for a specific local account on a specific machine.  If you want to be able to use password-less login from another machine, you should create a new key pair on that machine.  DON'T simply copy your key pair to another machine.  &lt;br&gt;&lt;br&gt;Public key authentication also makes scripted remote management possible, but thats beyond the scope of this mini-article.  So let's begin:&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;On Local/Client Machine&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br&gt;          &lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;# Create .ssh directory unless it already exists&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;mkdir ~/.ssh&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;cd ~/.ssh&lt;/span&gt;&lt;br&gt;&lt;br&gt;#&lt;span style="font-style: italic;"&gt; Create your keypair.  Specifying a password will protect your private key even if the private key file is compromised.  Remember, the private key file identifies you, and if that     file is compromised, the server is compromised as well.  Regardless of password security, set secure permissions for this file.&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;ssh-keygen -t dsa&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;chmod 600 id_dsa&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-style: italic;"&gt;# Copy your public key to the server, specifically your remote user's home directory.&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;scp id_dsa.pub remote_username@example.com:/home/remote_username&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-style: italic;"&gt;# Now login to the remote machine via ssh&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;On Remote/Server Machine&lt;br&gt;&lt;/span&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-style: italic;"&gt;# Create the .ssh directory unless it exists&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-family: Courier New;"&gt;mkdir ~/.ssh&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;cd ~/.ssh&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-style: italic;"&gt;# Create the authorized key file unless it already exists&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;touch authorized_keys2&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;chmod 600 authorized_keys2&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-style: italic;"&gt;# Append your public key to the authorized key file.  Directly editing the key file is generally a bad idea.  Then delete the public key file you copied to this machine.&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;cat ~/id_dsa.pub &amp;gt;&amp;gt; authorized_keys2&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;rm ~/id_dsa.pub&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;You may now logout, and log back in.  This time you should be automatically logged in without a password prompt.&lt;br&gt;&lt;br&gt;If you mess up, or your private key is compromised, there is a small amount of cleanup involved.  On each of the configured servers, delete the line in the authorized_keys2 file that corresponds to your public key, and delete your local key pair as well.  You can then start over.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-223274024802424532?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/223274024802424532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=223274024802424532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/223274024802424532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/223274024802424532'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/ssh-public-key-authentication.html' title='SSH Public Key Authentication'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5444395598963667128</id><published>2007-01-22T10:15:00.001-06:00</published><updated>2007-01-22T10:16:14.772-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Strip HTML Tags</title><content type='html'>It's trivial really...but regexp's are a bitch.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;blockquote&gt;#!/usr/bin/ruby -n&lt;br /&gt;puts $_.gsub(/&lt;\/?[^&gt;]*&gt;/, "") &lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5444395598963667128?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5444395598963667128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5444395598963667128' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5444395598963667128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5444395598963667128'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/strip-html-tags.html' title='Strip HTML Tags'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-1717662593171325373</id><published>2007-01-21T13:01:00.000-06:00</published><updated>2007-01-21T13:05:12.235-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Edit A Webpage in Place</title><content type='html'>This works for Firefox.  Enter the following into the address bar.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;javascript:document.body.contentEditable='true'; document.designMode='on'; void 0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;This is an interesting hack.  It is nothing of immediate utility, but combined with some other functionailty...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-1717662593171325373?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/1717662593171325373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=1717662593171325373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1717662593171325373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/1717662593171325373'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/edit-webpage-in-place.html' title='Edit A Webpage in Place'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4244081588487067123</id><published>2007-01-18T22:29:00.000-06:00</published><updated>2007-12-13T12:09:06.765-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>UNBELIEVABLE!!!!</title><content type='html'>A quote from today's Senate Judiciary Committee hearings.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; &lt;p&gt;Specter: Now wait a minute, wait a minute. The Constitution says you can't take it away except in the case of invasion or rebellion. Doesn't that mean you have the right of habeas corpus?&lt;/p&gt;  &lt;p&gt;Gonzales: I meant by that comment that &lt;strong&gt;the Constitution doesn't say that every individual in the United States or every citizen has or is assured the right of habeas corpus. It doesn't say that. It simply says that the right of habeas corpus shall not be suspended.&lt;/strong&gt; &lt;/p&gt; &lt;/blockquote&gt;&lt;br /&gt;http://www.dailykos.com/storyonly/2007/1/18/15219/0788&lt;br /&gt;&lt;br /&gt;Apparently our ATTORNEY GENERAL doesn't understand the fundamental premise of the Constitution, that ALL rights not EXPLICITLY given to the government are retained by the people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4244081588487067123?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4244081588487067123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4244081588487067123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4244081588487067123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4244081588487067123'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/unbelievable.html' title='UNBELIEVABLE!!!!'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-4055317367891162497</id><published>2007-01-18T14:37:00.000-06:00</published><updated>2007-01-18T14:39:57.241-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Ruby Cheat Sheets</title><content type='html'>I found a handy ruby gem that makes reference very easy. &lt;span style="font-family: courier new;"&gt; gem install cheat&lt;/span&gt; to install the gem, then run &lt;span style="font-family: courier new;"&gt;cheat sheets&lt;/span&gt; to get a list of available cheat sheets.  Run &lt;span style="font-family: courier new;"&gt;cheat &lt;span style="font-style: italic;"&gt;cheat_name&lt;/span&gt;&lt;/span&gt; to display useful info.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-4055317367891162497?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/4055317367891162497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=4055317367891162497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4055317367891162497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/4055317367891162497'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/ruby-cheat-sheets.html' title='Ruby Cheat Sheets'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5189674620033328962</id><published>2007-01-14T12:48:00.000-06:00</published><updated>2007-01-14T13:52:18.646-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>United States Activities Inside Iran?</title><content type='html'>This morning, national security advisor Stephen Hadley spoke about US engagement of Iranians aiding insurgents in Iraq.&lt;br /&gt;&lt;br /&gt;When asked whether U.S. forces would cross into Iran to pursue those aiding Iraqi insurgents, he said: He said the priority "is what's going on inside Iraq. ... That's where we're going to deal with his problem."  and, "Anytime you have questions about crossing international borders there are legal issues. ... We intend to deal with it by interdicting and disrupting activities in Iraq sponsored by Iran."&lt;br /&gt;&lt;br /&gt;This response raises several questions as to whether the U.S. &lt;span style="font-weight: bold;"&gt;IS&lt;/span&gt; currently operating inside Iran.  This administration has had a pattern of operating outside of established legal precedent (NSA wiretapping case, abuse of prisoners, suspension of habeas corpus, extraordinary rendition, etc, etc.), then dealing with the consequences (or lack of), later.  In my mind, these aren't questions, but rather indications, but there is the cynicism and pragmatism.&lt;br /&gt;&lt;br /&gt;Don't get me wrong, if people are assisting insurgents in killing our troops, they should be taken care of.  Yet military incursions into a sovereign country against citizens of that country is an act of war, and war must be declared by Congress.  Hence the "legal issues" mentioned by Mr. Hadley.  Regardless, it has been apparent for some time that the administration's mind and direction are already set.&lt;br /&gt;&lt;br /&gt;Just last Thursday, U.S. forces captured and detained 5 Iranian officials of relatively high rank.  It has become obvious, that Iran is supporting at least the Shia side of the insurgency, and is establishing a political and military toehold in the power vacuum of Iraq.&lt;br /&gt;&lt;br /&gt;War with Iran has already started.  With politics, and on a small scale (on our side), soldiers.  The battleground just happens to be Iraq.&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;    References:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.cbsnews.com/stories/2007/01/14/ap/politics/mainD8ML45IO0.shtml"&gt;http://www.cbsnews.com/stories/2007/01/14/ap/politics/mainD8ML45IO0.shtml&lt;/a&gt;&lt;br /&gt;                         &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2007/01/11/AR2007011100427.html"&gt;http://www.washingtonpost.com/wp-dyn/content/article/2007/01/11/AR2007011100427.html&lt;/a&gt;&lt;br /&gt;                         &lt;a href="http://www.slate.com/id/2157489/fr/flyout"&gt;http://www.slate.com/id/2157489/fr/flyout&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.slate.com/id/2157489/fr/flyout"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5189674620033328962?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5189674620033328962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5189674620033328962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5189674620033328962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5189674620033328962'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/united-states-activities-inside-iran.html' title='United States Activities Inside Iran?'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-5605205877619279365</id><published>2007-01-12T10:56:00.000-06:00</published><updated>2007-01-12T11:00:00.591-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='annoyances'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Disable Low Disk Space Notification in Windows XP</title><content type='html'>&lt;table class="list ol"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;1.&lt;/td&gt;&lt;td class="text"&gt;Click &lt;strong class="uiterm"&gt;Start&lt;/strong&gt;, click &lt;strong class="uiterm"&gt;Run&lt;/strong&gt;, type &lt;span class="userInput"&gt;regedit&lt;/span&gt;, and then click &lt;strong class="uiterm"&gt;OK&lt;/strong&gt;.  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;2.&lt;/td&gt;&lt;td class="text"&gt;&lt;span style="font-size:78%;"&gt;Locate and then click the following key in the registry: &lt;/span&gt;&lt;div class="indent"&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;3.&lt;/td&gt;&lt;td class="text"&gt;On the &lt;strong class="uiterm"&gt;Edit&lt;/strong&gt; menu, point to &lt;strong class="uiterm"&gt;New&lt;/strong&gt;, and then click &lt;strong class="uiterm"&gt;DWORD Value&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;4.&lt;/td&gt;&lt;td class="text"&gt;Type &lt;span class="userInput"&gt;NoLowDiskSpaceChecks&lt;/span&gt;, and then press ENTER. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;5.&lt;/td&gt;&lt;td class="text"&gt;On the &lt;strong class="uiterm"&gt;Edit&lt;/strong&gt; menu, click &lt;strong class="uiterm"&gt;Modify&lt;/strong&gt;. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="number"&gt;6.&lt;/td&gt;&lt;td class="text"&gt;Type &lt;span class="userInput"&gt;1&lt;/span&gt;, and then &lt;strong class="uiterm"&gt;click OK&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; 7. Logout.&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://support.microsoft.com/kb/285107"&gt;http://support.microsoft.com/kb/285107&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-5605205877619279365?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/5605205877619279365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=5605205877619279365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5605205877619279365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/5605205877619279365'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/disable-low-disk-space-notification-in.html' title='Disable Low Disk Space Notification in Windows XP'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3553633839215599511</id><published>2007-01-03T20:22:00.000-06:00</published><updated>2007-01-03T20:47:45.664-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails Development Using Vim</title><content type='html'>Rails developers fortunate enough to run OSX have raved to no end about TextMate, but what do the rest of us, being *Nix and Windows users, have available?  &lt;a href="http://www.radrails.org/"&gt;RadRails&lt;/a&gt; is an EXCELLENT IDE, and I have used it almost exclusively for nearly a year now, but as an editor, like all software, it has severe limitations.  It's a bit slow and too much of a memory hog for my taste, and not nearly as easy to extend as I would like.&lt;br /&gt;&lt;br /&gt;In my experience as a Linux administrator and desktop user, I have learned to appreciate, and now love the Vi editor.  Well, more accurately Vim.  If you are using a GUI, &lt;a href="http://cream.sourceforge.net/"&gt;Cream&lt;/a&gt; is an excellent set of customizations for GVim that make Vim more accessible to the new user.&lt;br /&gt;&lt;br /&gt;To improve the state of affairs even further, there are various Ruby and Rails specific extensions and customizations that bring Vim to the point of being nearly as good, and better in some ways, than TextMate or RadRails.  We're talking autocompletion, autoindention, syntax highlighting, abbreviations, and much much more.  See this &lt;a href="http://t0fuu.wordpress.com/2006/09/11/using-vim-for-editing-ruby/"&gt;post&lt;/a&gt; (so useful to me that I mirrored it &lt;a href="http://docs.google.com/View?docid=dhbtjpk7_39f3fnq2"&gt;&lt;span style="text-decoration: underline;"&gt;here&lt;/span&gt;&lt;/a&gt;) for how to tweak Vim for Rails development.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3553633839215599511?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3553633839215599511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3553633839215599511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3553633839215599511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3553633839215599511'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2007/01/rails-development-using-vim.html' title='Rails Development Using Vim'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-3600333371660881243</id><published>2006-12-30T13:41:00.000-06:00</published><updated>2006-12-30T13:51:51.520-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Ugly fonts in GTK 1.2 Apps</title><content type='html'>In Ubuntu (and perhaps other distributions), the menus in GTK apps may have a huge, ugly, and nearly unreadable font.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_UVOPE-m78K4/RZbCi9Ie7uI/AAAAAAAAAAU/Rz0YJFvclsw/s1600-h/Audacity-before.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_UVOPE-m78K4/RZbCi9Ie7uI/AAAAAAAAAAU/Rz0YJFvclsw/s320/Audacity-before.jpg" alt="" id="BLOGGER_PHOTO_ID_5014409140905111266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To somewhat fix this, edit &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;/etc/gtk/gtkrc.utf-8 &lt;span style=";font-family:lucida grande;font-size:100%;"  &gt;and change the fontset definition.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;style "default-text-better" {&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;       fontset = "-bitstream-charter-medium-r-normal-*-*-100-*-*-p-*-iso8859-1,\&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;                 --bitstream-charter-medium-r-normal-*-*-100-*-*-p-*-iso8859-1"&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;}&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;class "GtkWidget" style "default-text-better"&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;This will fix the menus, at least.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_UVOPE-m78K4/RZbCzNIe7vI/AAAAAAAAAAc/c7tFnzIwePc/s1600-h/Audacity-after.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_UVOPE-m78K4/RZbCzNIe7vI/AAAAAAAAAAc/c7tFnzIwePc/s320/Audacity-after.jpg" alt="" id="BLOGGER_PHOTO_ID_5014409420077985522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-3600333371660881243?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/3600333371660881243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=3600333371660881243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3600333371660881243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/3600333371660881243'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/12/ugly-fonts-in-gtk-12-apps.html' title='Ugly fonts in GTK 1.2 Apps'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_UVOPE-m78K4/RZbCi9Ie7uI/AAAAAAAAAAU/Rz0YJFvclsw/s72-c/Audacity-before.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-9176784249606454105</id><published>2006-12-29T23:36:00.000-06:00</published><updated>2006-12-29T23:42:58.549-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='comment'/><title type='text'>Blogger Out of Beta</title><content type='html'>At long last, labels!  Now posts can actually be categorized!  The blog layout designer is very nice as well.&lt;br /&gt;&lt;br /&gt;The suite of applications now offered by Google is amazing.  They are all well written, simple, and user friendly.  I have only two more wishes.  The ability to back up account data, and public key encryption for GMail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-9176784249606454105?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/9176784249606454105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=9176784249606454105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/9176784249606454105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/9176784249606454105'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/12/blogger-out-of-beta.html' title='Blogger Out of Beta'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116499823065748528</id><published>2006-12-01T12:34:00.000-06:00</published><updated>2006-12-01T12:37:10.670-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>RubyGems Error</title><content type='html'>If you get this error when trying to install a gem:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;  /usr/local/lib/ruby/1.8/yaml.rb:133: [BUG] Segmentation fault&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Run "gem environment" to find the "gem path"  (i.e. /usr/local/lib/ruby/gems/1.8 ) and delete the "source_cache" file located in that directory.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116499823065748528?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116499823065748528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116499823065748528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116499823065748528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116499823065748528'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/12/rubygems-error.html' title='RubyGems Error'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116343664926229571</id><published>2006-11-13T10:50:00.000-06:00</published><updated>2006-11-13T11:01:58.393-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Work Timer</title><content type='html'>I scratched an itch.  &lt;a href="http://docs.google.com/View?docid=dhbtjpk7_18g8nrfh"&gt;Here's&lt;/a&gt; a simple task and time tracker written in Ruby.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116343664926229571?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116343664926229571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116343664926229571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116343664926229571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116343664926229571'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/11/work-timer.html' title='Work Timer'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116343564365915683</id><published>2006-11-13T10:33:00.000-06:00</published><updated>2006-11-13T10:34:03.673-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Election Day Followup</title><content type='html'>It is great to be a cynic and have fears proven to be false.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116343564365915683?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116343564365915683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116343564365915683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116343564365915683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116343564365915683'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/11/election-day-followup.html' title='Election Day Followup'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116291440717668518</id><published>2006-11-07T09:36:00.000-06:00</published><updated>2006-11-07T09:46:47.346-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Election Day</title><content type='html'>This is perhaps the most important day in recent memory.   The results of today's election will affect the course of this nation and by proxy the world.  Actually...one can only hope.&lt;br /&gt;&lt;br /&gt;It is unfortunate that an opaque and untrustworthy voting system negates the democracy of the process.  There are reports from Texas and Florida (go figure) about electronic voting systems switching Democratic votes to Republican.  That's one hell of a bug, especially one-way.  Not to mention that exit polling is not being done in many areas.&lt;br /&gt;&lt;br /&gt;They say never to attribute malice to incompetence or stupidity...but yet again, cynicism colors my perception.  I think it quite unlikely that the Democrats will win overall this election.  Not that I particularly like the Democratic party, but the Republican party has done more to destroy the liberty of the American people than any of the enemies it has sworn to protect us from.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116291440717668518?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116291440717668518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116291440717668518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116291440717668518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116291440717668518'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/11/election-day.html' title='Election Day'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116283883132178131</id><published>2006-11-06T12:43:00.000-06:00</published><updated>2006-11-06T12:47:45.223-06:00</updated><title type='text'>PHPMyAdmin Authentication Error</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Error: &lt;/span&gt;PHPMyAdmin - &lt;span style="font-family:courier new;"&gt;Client does not support authentication protocol requested by server; consider upgrading MySQL client.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Explanation:  &lt;/span&gt;The user's password is stored on the server in the new password format.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution:  &lt;/span&gt; In the server MySQL console:  &lt;span style="font-family:courier new;"&gt;set password for user@host = OLD_PASSWORD('the_password');&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116283883132178131?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116283883132178131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116283883132178131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116283883132178131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116283883132178131'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/11/phpmyadmin-authentication-error.html' title='PHPMyAdmin Authentication Error'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116271154116311506</id><published>2006-11-05T01:18:00.000-06:00</published><updated>2006-11-05T01:25:41.176-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Fedora Core 6</title><content type='html'>I decided to give Fedora Core 6 a go since I had to reinstall Linux anyway.&lt;br /&gt;&lt;br /&gt;My First Thoughts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installation isn't too bad...much better than the slow Ubuntu LiveCD&lt;/li&gt;&lt;li&gt;I've got a lot of tweaking to do.&lt;/li&gt;&lt;li&gt;These icons are HORRID!&lt;/li&gt;&lt;li&gt;Where are my Nautilus bookmarks???  Where is the side panel???&lt;/li&gt;&lt;/ul&gt;I went the whole way and installed my entire toolset, here's to trying this out for a bit.  My install notes are &lt;a href="http://docs.google.com/View?docid=dhbtjpk7_144wf5p7"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116271154116311506?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116271154116311506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116271154116311506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116271154116311506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116271154116311506'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/11/fedora-core-6.html' title='Fedora Core 6'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116254156156851336</id><published>2006-11-03T01:59:00.000-06:00</published><updated>2006-11-03T10:01:01.686-06:00</updated><title type='text'>Hard Lessons Learned...again</title><content type='html'>&lt;span style="font-family:lucida grande;"&gt;So yeah...I was trying to set up a VMWare virtual machine, and no matter what OS I tried to  install, I would get errors.  I poked around and noticed that a file in my /tmp directory was eating up ALL my disk space.  A file with no owner...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Well, I can't delete it, so I go to single user mode...and still can't delete it.  Oh joy!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Time to bust out the trusty Knoppix boot DVD.  I run &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;reiserfsck&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt; and find errors.  Big surprise there.  I run it again to fix and proceed to corrupt the partition even more.  (Oh, by the way, this is my / partition, which is separate from my /home partition, thank god!!!).  Of course the on-screen instructions DONT TELL YOU to  &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;--scan-whole-partition&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt; when you run &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;reiserfsck --rebuild-tree ( it should be reiserfsck --scan-whole-partition  --rebuild-tree /dev/hda1).&lt;span style="font-family: lucida grande;"&gt;  So I proceeded to fubar my root partition beyond all recognition.  Guess who didn't make backups???&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: lucida grande;"&gt;I managed to clear space off my trusty 40GB IBM SCSI HD, and try to install Ubuntu Edgy Eft.  6 attempts later...I give up (due to some horrific installer bugs) and try Dapper Drake.  I don't know what the hell is wrong with my box...but only the Xubuntu 6.06 installer worked.  All the other installers hung at some point.  Hey, maybe my RAM is bad.  I'll start Memcheck before going to bed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: lucida grande;"&gt;But anyway...my rant is coming to a close.  Lesson learned...BACK UP YOUR SHIT.  I had tweaked this box for almost 2 years running (thank you Debian/Ubuntu for in-place distro updates!) and I lost a LOT of config files...not to mention weeks of work logs, journal entries, and wiki entries stored in my /var/www folder.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: lucida grande;"&gt;Today sucked.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: lucida grande;"&gt;UPDATE:&lt;/span&gt;&lt;span style="font-family: lucida grande;"&gt;  It was bad RAM.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116254156156851336?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116254156156851336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116254156156851336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116254156156851336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116254156156851336'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/11/hard-lessons-learnedagain.html' title='Hard Lessons Learned...again'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116210357804536557</id><published>2006-10-29T01:07:00.000-06:00</published><updated>2006-10-29T20:55:37.000-06:00</updated><title type='text'>The Joke of Airline Security</title><content type='html'>From Wired:&lt;br /&gt;&lt;blockquote&gt;Security researcher Christopher Soghoian created the Northwest Airline Boarding Pass Generator in the hope of spurring Congress to look closely at the nation's aviation security policies, which he calls "security theater." &lt;p&gt;The site lets anyone create a facsimile of a Northwest Airlines boarding pass, with whatever name they choose.&lt;/p&gt;  &lt;p&gt;On Friday, Congress heard Soghoian's message loud and clear. But instead of promising to reform broken airport security procedures, Rep. Edward Markey (D- Massachusetts), a member of the House Homeland Security committee known for his defenses of privacy, wants the site shut down and Soghoian arrested.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;A warrant was submitted, and the Feds broke down his door taking computers, etc.  I guess it is a crime to point out that the emperor has no clothes.  This "fake boarding pass generator" had nothing to do with computer security.  Any 6 year old that can type on a keyboard could edit the HTML of an internet issued "boarding pass" and reprint it.&lt;br /&gt;&lt;br /&gt;My point here is that the government really doesn't care about security.  A state of fear is to be instilled in the populace, and limited token steps are taken to give the impression of security.  Not only does this create a cycle of dependence on the powers that be for security, it is a slow path to the elimination of freedoms of the public and empowerment of the establishment.&lt;br /&gt;&lt;br /&gt;Maybe I am just a cynic and see pretense and dissimulation in the place of stupidity, shortsightedness, and incompetence.&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);font-family:Maiandra GD;" &gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116210357804536557?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116210357804536557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116210357804536557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116210357804536557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116210357804536557'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/joke-of-airline-security.html' title='The Joke of Airline Security'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116201229437711899</id><published>2006-10-28T00:08:00.000-05:00</published><updated>2006-10-28T00:26:39.496-05:00</updated><title type='text'>Merchanthound.com</title><content type='html'>The &lt;a href="http://www.merchanthound.com"&gt;Merchant Hound&lt;/a&gt; site is coming along quite nicely.  Fun Ajax action, and very aggressive caching make for a fast enjoyable experience.  I'd use the site myself if I bought anything online anymore.  I am still working out some of the kinks in the page and database cache, so performance can be spotty at times, especially when I am committing changes for the day.&lt;br /&gt;&lt;br /&gt;I fixed the XML product feeds today.  They look beautiful on the Google feed reader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116201229437711899?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116201229437711899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116201229437711899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116201229437711899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116201229437711899'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/merchanthoundcom.html' title='Merchanthound.com'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116192573701108230</id><published>2006-10-27T00:08:00.000-05:00</published><updated>2006-10-27T00:08:57.013-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Installing Java, the Ubuntu Way</title><content type='html'>&lt;pre&gt;sudo apt-get install fakeroot java-package java-common&lt;br /&gt;fakeroot make-jpkg --full-name "My Name" --email "me@example.com"&lt;br /&gt;sudo dpkg -i sun-j2re1.5_1.5.0+update05_i386.deb&lt;br /&gt;sudo update-alternatives --config java&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116192573701108230?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116192573701108230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116192573701108230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192573701108230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192573701108230'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/installing-java-ubuntu-way.html' title='Installing Java, the Ubuntu Way'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116192564240164513</id><published>2006-10-27T00:07:00.000-05:00</published><updated>2006-10-27T00:07:22.403-05:00</updated><title type='text'>Italian Sausage Soup</title><content type='html'>&lt;h2&gt;Ingredients&lt;/h2&gt;    &lt;ul&gt;&lt;li&gt;2lb. italian sausage&lt;/li&gt;&lt;li&gt;1 onion sliced&lt;/li&gt;&lt;li&gt;2 cans stewed tomatoes&lt;/li&gt;&lt;li&gt;1 12oz can tomato sauce&lt;/li&gt;&lt;li&gt;3 raw potatoes julienne sliced&lt;/li&gt;&lt;li&gt;1 bag frozen vegetables (asian blend)&lt;/li&gt;&lt;li&gt;1 tsp. basil&lt;/li&gt;&lt;li&gt;3 tbs. parsley&lt;/li&gt;&lt;li&gt;1/4 tsp. oregano&lt;/li&gt;&lt;li&gt;1 tsp. onion salt&lt;/li&gt;&lt;li&gt;1 tsp. sugar&lt;/li&gt;&lt;li&gt;3 bay leaves&lt;/li&gt;&lt;/ul&gt;    &lt;h2&gt;Directions&lt;/h2&gt;    &lt;ol&gt;&lt;li&gt;Brown meat&lt;/li&gt;&lt;li&gt;Combine ingredients in large pot&lt;/li&gt;&lt;li&gt;Add water to 1 1/2 in. of top of pot.&lt;/li&gt;&lt;li&gt;Bring to boil.&lt;/li&gt;&lt;li&gt;Simmer covered for 45 min. to 1 hr.&lt;/li&gt;&lt;/ol&gt;    &lt;h3&gt;Serves …a lot of food&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116192564240164513?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116192564240164513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116192564240164513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192564240164513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192564240164513'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/italian-sausage-soup.html' title='Italian Sausage Soup'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116192542433648109</id><published>2006-10-27T00:02:00.000-05:00</published><updated>2006-10-27T00:03:44.336-05:00</updated><title type='text'>Quotes</title><content type='html'>&lt;span class="huge"&gt;&lt;/span&gt;&lt;blockquote&gt;To announce that there must be no criticism of the president, or that we are to stand by the president right or wrong, is not only unpatriotic and servile, but is morally treasonable to the American public.&lt;br /&gt;   -Theodore Roosevelt&lt;br /&gt;&lt;span class="huge"&gt;&lt;br /&gt;If Tyranny and Oppression come to this land, it will be in the guise of fighting a foreign enemy.&lt;/span&gt;&lt;br /&gt;   &lt;span class="bodybold"&gt;-James Madison&lt;/span&gt; &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116192542433648109?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116192542433648109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116192542433648109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192542433648109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192542433648109'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/quotes.html' title='Quotes'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116192496152693388</id><published>2006-10-26T23:52:00.000-05:00</published><updated>2006-10-26T23:56:01.526-05:00</updated><title type='text'>Late Night Rambling</title><content type='html'>There is far too much information, and far too many ways of storing it.  I have a local blog and wiki, for sake of data &lt;span style="font-weight: bold;"&gt;ownership&lt;/span&gt;, but I would like to push data to the wider net as well to give back.&lt;br /&gt;&lt;br /&gt;Everything I could possibly care to know and more is available due to the work of others, and it is a small effort to return the favor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116192496152693388?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116192496152693388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116192496152693388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192496152693388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192496152693388'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/late-night-rambling.html' title='Late Night Rambling'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116192427070444409</id><published>2006-10-26T23:41:00.000-05:00</published><updated>2006-10-26T23:44:30.706-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Cannot Install any Ruby Gems</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem: &lt;/span&gt; Error trying to install ANY gem.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error Message:&lt;/span&gt;&lt;br /&gt;ERROR: While executing gem … (Gem::GemNotFoundException)&lt;br /&gt;Could not find rubyzip (&gt; 0) in the repository&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution:&lt;/span&gt;  Delete source_cache file  (run gem environment to find the Gems install location)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116192427070444409?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116192427070444409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116192427070444409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192427070444409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192427070444409'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/cannot-install-any-ruby-gems.html' title='Cannot Install any Ruby Gems'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-116192379076007576</id><published>2006-10-26T23:33:00.000-05:00</published><updated>2006-10-26T23:40:59.540-05:00</updated><title type='text'>Rails Setup With Mongrel and Apache mod_proxy</title><content type='html'>&lt;p&gt;I set up Apache to proxy requests to the 3 Mongrel servers providing blogging, wiki, and todo list functionality.&lt;/p&gt;&lt;br /&gt; &lt;p&gt;This setup is for local access only.&lt;/p&gt;&lt;br /&gt; &lt;ul&gt;&lt;br /&gt; &lt;li&gt;Create mongrel system group and user&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Place Rails applications in /var/www/mongrel &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;code&gt;chown -R mongrel:mongrel /var/www/mongrel&lt;/code&gt; &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Create mongrel initscript: &lt;code&gt;/etc/init.d/mongrel&lt;/code&gt; and symlink to &lt;code&gt;/etc/rc2.d/S99mongrel&lt;/code&gt;&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#!/bin/bash&lt;br /&gt;case $1 in&lt;br /&gt;    start)&lt;br /&gt;        port="12000" &lt;br /&gt;        for appdir in `ls /var/www/mongrel`; do            cd /var/www/mongrel/$appdir ;           echo " * Starting $appdir on port $port." &lt;br /&gt;           mongrel_rails start -d -e production -p $port                --user mongrel --group mongrel -a 127.0.0.1 ;            port=`echo "$port + 1" | bc`&lt;br /&gt;        done&lt;br /&gt;    ;;&lt;br /&gt;    stop)&lt;br /&gt;        for appdir in `ls /var/www/mongrel`; do            cd /var/www/mongrel/$appdir ;           echo -n " * Stopping $appdir..." &lt;br /&gt;           mongrel_rails stop ;         done&lt;br /&gt;    ;;&lt;br /&gt;    restart)&lt;br /&gt;        for appdir in `ls /var/www/mongrel`; do             cd /var/www/mongrel/$appdir ;            echo -n " * Restarting $appdir..." &lt;br /&gt;            mongrel_rails restart ;         done&lt;br /&gt;     ;;&lt;br /&gt;esac&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; &lt;ul&gt;&lt;br /&gt; &lt;li&gt;Start mongrel service and test &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Add entries for &lt;code&gt;127.0.0.3 blog.localhost&lt;/code&gt;, &lt;code&gt;127.0.0.4 wiki.localhost&lt;/code&gt;, etc. to &lt;code&gt;/etc/hosts&lt;/code&gt; &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Enable mod_proxy (&lt;code&gt;sudo a2enmod proxy&lt;/code&gt;) &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Allow local proxy requests by modifying the &lt;code&gt;/etc/apache2/mods-enabled/proxy.conf&lt;/code&gt; (&lt;code&gt;Allow 127.0.0.0/255.255.255.0&lt;/code&gt;) &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Add &lt;code&gt;Listen 127.0.0.3:80&lt;/code&gt;, etc. to /etc/apache2/ports.conf &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Create VirtualHosts entries for the servers in a new &lt;code&gt;sites-enabled&lt;/code&gt; file (I used &lt;code&gt;proxy&lt;/code&gt;)&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;NameVirtualHost wiki.localhost:80&lt;br /&gt;&amp;lt;VirtualHost wiki.localhost:80&amp;gt;&lt;br /&gt;    &amp;lt;Directory "/"&amp;gt;&lt;br /&gt;        Order allow,deny&lt;br /&gt;        Allow from all&lt;br /&gt;    &amp;lt;/Directory&amp;gt;&lt;br /&gt;    ProxyPass / http://localhost:12000/&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; &lt;ul&gt;&lt;br /&gt; &lt;li&gt;Restart Apache&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-116192379076007576?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/116192379076007576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=116192379076007576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192379076007576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/116192379076007576'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2006/10/rails-setup-with-mongrel-and-apache.html' title='Rails Setup With Mongrel and Apache mod_proxy'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-113580286986435184</id><published>2005-12-28T14:43:00.000-06:00</published><updated>2005-12-28T14:47:49.863-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby on Rails</title><content type='html'>...but still here.&lt;br /&gt;&lt;br /&gt;My latest interest is Ruby on Rails.  From a complete Ruby on Rails n00b to a custom, from scratch, multiple bank account balancing web app in less than 9 hours.  Yeah, thats 9 hours INCLUDING reading, learning, debugging, etc.   WOW!&lt;br /&gt;&lt;br /&gt;The framework seems to be worth the hype.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-113580286986435184?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/113580286986435184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=113580286986435184' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/113580286986435184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/113580286986435184'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/12/ruby-on-rails.html' title='Ruby on Rails'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112943936233747586</id><published>2005-10-16T00:09:00.000-05:00</published><updated>2005-10-16T00:09:22.343-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>VNC Server Setup on Ubuntu 4.10</title><content type='html'>VNC Server Setup on Ubuntu 4.10&lt;br /&gt;=====================================&lt;br /&gt;$ sudo vi /etc/apt/sources.lst&lt;br /&gt; # uncomment the unverse repository&lt;br /&gt;$ sudo apt-get update &amp;&amp; apt-get install vnc4server&lt;br /&gt;$ sudo vi /etc/X11/Xwrapper.config&lt;br /&gt; # change&lt;br /&gt;  allowed_users=console&lt;br /&gt;   to&lt;br /&gt;  allowed_users=anybody&lt;br /&gt;$ sudo vi /etc/vnc.conf&lt;br /&gt; # change&lt;br /&gt;  $XFConfigPath = "/etc/X11/XF86Config"&lt;br /&gt;   to&lt;br /&gt;  $XFConfigPath = "/etc/X11/xorg.conf"&lt;br /&gt;$ echo "gnome-session &amp;" &gt; vi ~/.vnc/xstartup&lt;br /&gt;$ vncpasswd&lt;br /&gt; # set password here&lt;br /&gt;$ vncserver -geometry 1024x768 -depth 24 :1&lt;br /&gt;$ vncserver -kill :1&lt;br /&gt; # to kill vnc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112943936233747586?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112943936233747586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112943936233747586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112943936233747586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112943936233747586'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/10/vnc-server-setup-on-ubuntu-410.html' title='VNC Server Setup on Ubuntu 4.10'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112813471706131307</id><published>2005-09-30T21:44:00.000-05:00</published><updated>2005-09-30T21:45:17.066-05:00</updated><title type='text'>VMware Error</title><content type='html'>"Unable to change virtual machine power state: Failed to connect to peer process."&lt;br /&gt;&lt;br /&gt;chmod o+x /opt/vmware/lib/bin/vmware-vmx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112813471706131307?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112813471706131307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112813471706131307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112813471706131307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112813471706131307'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/vmware-error.html' title='VMware Error'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112691171642956694</id><published>2005-09-16T17:59:00.000-05:00</published><updated>2005-09-16T18:10:15.123-05:00</updated><title type='text'>Perl Script to Convert CSV to Tab Delimited</title><content type='html'>Converting commas to tabs is trivial:  print s/,/\t/g;&lt;br /&gt;&lt;br /&gt;Now, handling quoted commas makes it interesting, especially when the quotes are only present when necessary.  I wrote this today as an exercise. Perl r0XX0r5!!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;# csv2tab.pl&lt;br /&gt;# Converts comma delimited text to tab delimited text&lt;br /&gt;# Input from STDIN, output to STDOUT&lt;br /&gt;# Note: any pre-existing tabs are converted to commas  &lt;br /&gt;&lt;br /&gt;while (&lt;&gt;) {&lt;br /&gt;   s/,/\t/g;&lt;br /&gt;   while (m/"[^\t"]+\t[^\t"]*"/g)&lt;br /&gt;   { s/("[^\t"]+)\t/\1,/g; }&lt;br /&gt;   print;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;###&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112691171642956694?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112691171642956694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112691171642956694' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112691171642956694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112691171642956694'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/perl-script-to-convert-csv-to-tab.html' title='Perl Script to Convert CSV to Tab Delimited'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112663452019202307</id><published>2005-09-13T12:55:00.000-05:00</published><updated>2005-09-13T13:02:57.886-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Video Problems</title><content type='html'>Apparently, there is a bug in old AMD implementations of the AGP specification, leading to instability and crashes. For example I have an ASUS A7M266 mobo with the AMD 760 Northbridge and the VIA VT82C686B South Bridge and an AMD Athlon Thunderbird 1.4Ghz processor.  This hardware combination prevents 3D games from working properly or at all without driver updates.&lt;br /&gt;&lt;br /&gt;To fix, install: the latest BIOS, the VIA 4-in-1 chipset drivers (do not install the AGP driver), and the AMD AGP Miniport Driver.&lt;br /&gt;&lt;br /&gt;This fixes problems in Windows, but in a linux install, you seem to be out of luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112663452019202307?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112663452019202307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112663452019202307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112663452019202307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112663452019202307'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/video-problems.html' title='Video Problems'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112655534008194987</id><published>2005-09-12T14:56:00.000-05:00</published><updated>2005-09-12T15:03:05.016-05:00</updated><title type='text'>Parthenogenesis</title><content type='html'>The Roslin Institute announced the creation of a human embryo without male genetic material.&lt;br /&gt;&lt;br /&gt;Keep up the good work!  It is a pity that so many people see an ethical problem with genetic and reproductive research.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112655534008194987?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112655534008194987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112655534008194987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112655534008194987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112655534008194987'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/parthenogenesis.html' title='Parthenogenesis'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112655367211730528</id><published>2005-09-12T14:01:00.000-05:00</published><updated>2005-09-12T14:44:09.133-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Culpability</title><content type='html'>Many people are blaming President Bush for the bungled response to the Katrina disaster for really stupid reasons.  Here is a real one: his appointment of Michael Brown as FEMA director, a man with absolutely no disaster management experience (he was formerly the "Judges and Stewards Commissioner" of the International Arabian Horse Assoc).  Mr. Brown resigned today in the face of his incompetence.&lt;br /&gt;&lt;br /&gt;One must ask oneself how concerned our President is with the security and well being of the American people when he appoints such incompetents to important posts.  Obviously Bush relies completely on the suggestions of his advisors.  The blantant corruption and pork-barreling of the Administration is sickening and should be frightening to everyone.  As they say: "If You're Not Outraged, You're Not Paying Attention!"&lt;br /&gt;&lt;br /&gt;The culpability of the President of the actions or inaction of his appointees needs to be addressed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112655367211730528?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112655367211730528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112655367211730528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112655367211730528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112655367211730528'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/culpability.html' title='Culpability'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112569388567772773</id><published>2005-09-02T15:27:00.000-05:00</published><updated>2005-09-02T15:49:37.170-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>A few words on the political spectrum...</title><content type='html'>On one side lies the liberals, who want a federal government that cares for them, provides for them, and tells them no when they make fun of their friends, graciously relieves them of their dirty evil money to fund massive social programs, and has laws on the books for just about everything.  The interests of individuals trump business, and the state always knows best regulating every last minuitae of business and private doings.&lt;br /&gt;&lt;br /&gt;On the other side lies the conservatives, who want a government with few laws but those laws are enforced in a severely draconian fashion.  This is a government with low taxes, but spends freely in overseas military and police action to impose the freedom of "Democracy."  Business interest trumps individual, and in practice business runs the state.&lt;br /&gt;&lt;br /&gt;Somewhere completely off on a tangent lies the libertarian who wants a very small government.  One with minimal involvement, existing merely to facilitate the contruction of infrastructure and organize a militia to defend life, property, and borders.  Taxes are negligible.  In practice, business trumps all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of course this is theory and idealism.  A more pragmatic point of view incorporates a little of all three.&lt;br /&gt;&lt;br /&gt;Myself...I lean toward the latter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112569388567772773?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112569388567772773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112569388567772773' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112569388567772773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112569388567772773'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/few-words-on-political-spectrum.html' title='A few words on the political spectrum...'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112560272022161355</id><published>2005-09-01T12:52:00.000-05:00</published><updated>2005-09-01T14:25:20.246-05:00</updated><title type='text'>Hurricane Katrina</title><content type='html'>New Orleans is in chaos.  I can't say that I wouldn't be looting for supplies and guns myself, stuck in a flooded city without water, electricity or other means to acquire food.  I would rather be out there than in the Superdome packed like sardines with 25,000 other people.  The reports coming out of the Superdome seem quite dire as well.   Not enough food, 2 bottles of water a day, no electricty or running water.  One can only imagine the stench of 25,000 people in the humid New Orleans summer heat.  It has been about 4 days these people have been stuck there.  Gunfire has stalled evacuation from the Superdome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112560272022161355?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112560272022161355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112560272022161355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112560272022161355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112560272022161355'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/hurricane-katrina.html' title='Hurricane Katrina'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112559620595141356</id><published>2005-09-01T12:26:00.000-05:00</published><updated>2005-09-01T12:38:19.183-05:00</updated><title type='text'>Gas Prices</title><content type='html'>Premium is over $3/gal. now, and unleaded at $2.95.&lt;br /&gt;&lt;br /&gt;I told all my friends at the beginning of the year that we would be seeing this by years end.  I wish I hadn't been right, I didn't think I would be right so soon.&lt;br /&gt;&lt;br /&gt;Economically and politically, the United States is experiencing a "perfect storm."  I just wonder how worse it will get, and I don't want to know.  I am hating driving my V8 truck 20 miles to work and 20 miles back every day, it really hurts the wallet.&lt;br /&gt;&lt;br /&gt;Where is our nuclear/hydrogen economy?  That is the only sustainable solution for energy, as far as I see.  I see banks of wind generators at sea powering the electrolysis of sea water supplementing nuclear power plants.  Electricity for the home, hydrogen fuel cells for autos.  Ship the nuclear waste to Antarctica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112559620595141356?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112559620595141356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112559620595141356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112559620595141356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112559620595141356'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/gas-prices.html' title='Gas Prices'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112558912275151466</id><published>2005-09-01T10:29:00.000-05:00</published><updated>2005-09-01T10:38:42.756-05:00</updated><title type='text'>Opera</title><content type='html'>Opera was having their 10 year "anniversary party" and offered free registration codes for their browser.  I took up the opportunity and installed Opera in Windows and Gentoo.  WOW, I am a convert!  This a a brower for a power user!  The functionality built into this app is quite impressive.  Normally I would consider this bloat, but the memory footprint of Opera is actually the same or less than Firefox!&lt;br /&gt;&lt;br /&gt;The email client can be confusing at times, but I am now using it on my Gentoo box to check system mail, I am not fond of KMail. (Side Note:  Opera does not support local maildir or mailspool so installing a local IMAP server was necessary.  Courier-IMAP would not give me joy and I had little patience to fiddle with it, so Dovecot saved the day. Courier-IMAP is a powerful and extremely flexible IMAP server, but Dovecot "just works" with very very little configuration)&lt;br /&gt;&lt;br /&gt;I never bothered trying Opera because I hate ads, I see now that I really wouldn't have cared.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112558912275151466?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112558912275151466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112558912275151466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112558912275151466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112558912275151466'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/09/opera.html' title='Opera'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112509259615762586</id><published>2005-08-26T16:23:00.000-05:00</published><updated>2005-08-26T16:43:42.486-05:00</updated><title type='text'>From a Whitewash to Finger Pointing...</title><content type='html'>A highly classified report was released detailing failures within the CIA before 9/11. At last there is some semblance of accountability, but who knows if the fingers are pointing in the right direction. More misdirection as I see it.&lt;br /&gt;&lt;blockquote&gt;"...But a former intelligence official close to Mr. Tenet said Mr. Helgerson's team had failed to interview policy makers and intelligence officers outside the agency or to note that the agency was more focused on Al Qaeda than any other arm of government was before 2001." (&lt;a href="http://www.nytimes.com/2005/08/26/politics/26intel.html?hp&amp;ex=1125028800&amp;amp;amp;en=72cc3ff24b4cc0c0&amp;ei=5094&amp;amp;partner=homepage"&gt;article&lt;/a&gt;)&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112509259615762586?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112509259615762586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112509259615762586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112509259615762586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112509259615762586'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/from-whitewash-to-finger-pointing.html' title='From a Whitewash to Finger Pointing...'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112509128738386311</id><published>2005-08-26T16:17:00.000-05:00</published><updated>2005-08-26T16:21:27.383-05:00</updated><title type='text'>Google Earth</title><content type='html'>I FINALLY got around to installing Google Earth on my WinXP partition.  Simply amazing.  The first time you zoom in on your house from space is mind-boggling.  The community is amazing as well.  I spent most of last night sight-seeing.  =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112509128738386311?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112509128738386311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112509128738386311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112509128738386311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112509128738386311'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/google-earth.html' title='Google Earth'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112509101906697065</id><published>2005-08-26T16:15:00.000-05:00</published><updated>2005-08-26T16:16:59.070-05:00</updated><title type='text'>FedEx Furniture</title><content type='html'>Furniture made from FedEx boxes... Wouldn't it be cheaper to go to a garage sale or goodwill.  Cool nonetheless.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fedexfurniture.com/"&gt;link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112509101906697065?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112509101906697065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112509101906697065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112509101906697065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112509101906697065'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/fedex-furniture.html' title='FedEx Furniture'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112507546012143989</id><published>2005-08-26T11:57:00.000-05:00</published><updated>2005-08-26T11:57:40.126-05:00</updated><title type='text'>Thoughts on MS Vista</title><content type='html'>Considering the hardware requirements of Vista, the majority of installations of the new Windows release will be preinstalled on new computers, rather than upgrades.  An entrenched monopoly like Microsoft will have the upper hand here, an 800-ton gorilla upper hand&lt;br /&gt;&lt;br /&gt;As for Linux competition with those taking the XP to Vista upgrade, Microsoft will need to flex its lock-in muscle.  Such as with Vista-only IE feature updates, cooperation with online media outlets for Vista-only DRM, and incompatibily/reduced performance with OpenGL for games.  Considering the high hardware requirements, again it seems that a consumer eying an upgrade to Vista will most likely purchase a new computer, as it will be a better value proposition.  Of course the power user and enthusiast will mostly likely have the required hardware already and is probably dual booting with Linux. &lt;br /&gt;&lt;br /&gt;Those that cannot afford the inevitable hardware and software upgrade for Vista will find Linux a very affordable and functional route.&lt;br /&gt;&lt;br /&gt;The funtional improvements in Vista seem very debatable at this point.  Businesses will ask themselves what ROI will materialize from an upgrade.  Many business have not migrated from Windows2000 to XP as of yet.  Case in point, I am writing this post from a Win2k machine, and there isn't a single install of XP at my business....by choice.&lt;br /&gt;&lt;br /&gt;So in summary, my $0.02 is that the outlook for Linux migrations look quite rosy, and the majority of MS Vista installations will be new computer purchases.  I forsee retail sales of Vista to be very disappointing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112507546012143989?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112507546012143989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112507546012143989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112507546012143989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112507546012143989'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/thoughts-on-ms-vista.html' title='Thoughts on MS Vista'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112500043303423531</id><published>2005-08-25T14:50:00.000-05:00</published><updated>2005-08-25T15:14:31.043-05:00</updated><title type='text'>Iran and Nuclear Power</title><content type='html'>An interesting &lt;a href="http://www.atimes.com/atimes/Middle_East/GH24Ak02.html"&gt;article&lt;/a&gt; about Iran pursuing nuclear energy. You might as well call this "The Economic Case for Nuclear Energy in Iran." Here is a nice quote from the article.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;David Kay, former head of the Iraq Survey Group, speaking in November 2004 at a forum sponsored by the Center for Strategic and International Studies said: &lt;blockquote&gt;The first thing - of what we do know, and it's amazing how many Americans seem to skate over this - the first nuclear reactor given to Iran was given by the United States in 1967 - a five-megawatt trigger reactor, research reactor, under the Eisenhower Atoms for Peace Program. Still operated ... The other thing that Americans forget is that in 1974, the shah announced a policy of 23,000 megawatts of nuclear energy in Iraq. The US reaction? [Former US national security adviser and secretary of state] Henry Kissinger beat down the door to be sure that two US constructors, General Electric and Westinghouse, had a preferred position in selling those reactors. We did not say, "it's a stupid idea, why would you want to do that when you are flaring gas and you have immense oil reserves?" We said, "That is very interesting; it's an example of how the Iranian economy is moving and becoming modern." Imagine in Iranian ears how it sounds now when we denigrate that capacity. They remember. We were sellers of nuclear reactors and wanted to be sellers of nuclear reactors to the shah.&lt;br /&gt;&lt;/blockquote&gt; &lt;/blockquote&gt;The Administration is showing the same kind of hypocrisy shown towards Iraq and it's "WMD"'s which were provided in-part by the US during the Iran-Iraq conflict.   &lt;br /&gt;&lt;blockquote&gt;"The Centers for Disease Control and Prevention sent samples directly to several Iraqi sites that U.N. weapons inspectors determined were part of Saddam Hussein's biological weapons program, CDC and congressional records from the early 1990s show. Iraq had ordered the samples, claiming it needed them for legitimate medical research."  &lt;a href="http://www.usatoday.com/news/world/2002-09-30-iraq-ushelp_x.htm"&gt;--USATODAY.COM&lt;/a&gt; (Another article &lt;a href="http://www.usatoday.com/news/world/2002-09-30-iraq-ushelp-list_x.htm"&gt;here&lt;/a&gt;).&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112500043303423531?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112500043303423531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112500043303423531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112500043303423531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112500043303423531'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/iran-and-nuclear-power.html' title='Iran and Nuclear Power'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112497928006635818</id><published>2005-08-25T08:59:00.000-05:00</published><updated>2005-08-25T09:14:40.103-05:00</updated><title type='text'>Google Talk</title><content type='html'>Yesterday, Google announced its "Google Talk" IM service which also offers voice communication.  The service is Jabber based, no big surprise there.  Finally an IM service I can depend not to break 3rd party client compatibility.  I run Gentoo Linux, so have not tried the Windows native client, but Gaim works perfectly.&lt;br /&gt;&lt;br /&gt;The service is obviously still in beta, so new features are bound to come.  This will be necessary if Google wants to differentiate its service and expand its user base.&lt;br /&gt;&lt;br /&gt;I would put money on that Google plans to place targeted ads in the chat window when the service comes out of beta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112497928006635818?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112497928006635818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112497928006635818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112497928006635818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112497928006635818'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/google-talk.html' title='Google Talk'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112491781693234308</id><published>2005-08-24T15:57:00.000-05:00</published><updated>2005-08-26T16:22:49.110-05:00</updated><title type='text'>US Pressure on Iran</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;"The United States said that Iran should not be let off the hook although an independent probe has reportedly showed no evidence of clandestine atomic weapons activities in the Islamic republic."&lt;br /&gt;&lt;a href="http://news.yahoo.com/s/afp/20050823/wl_mideast_afp/usirannucleareu_050823222809"&gt;Yahoo News&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is more BS coming from the State Department. Iran's nuclear program is merely an excuse for war against Iran. Just as WMD's were for Iraq. An excuse and tool to instill fear and forward a neocon agenda. The US securing its worldwide interests is good and all, but the current implementation is unsustainable. Not to mention that the rhetoric is quite transparent.&lt;br /&gt;&lt;br /&gt;Undoubtedly, Iran wishes to develop nuclear weapons.  Just as Saddam desired to. What soverign nation wouldn't? (Key word here: &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;sovereign&lt;/span&gt;&lt;/span&gt;) The US won't attempt to militarily intervene against a country with nukes. Case in point: North Korea. The problem in this case is that the US has little economic clout over Iran.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112491781693234308?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112491781693234308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112491781693234308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491781693234308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491781693234308'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/us-pressure-on-iran.html' title='US Pressure on Iran'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112491634308177886</id><published>2005-08-24T15:40:00.000-05:00</published><updated>2005-08-24T15:45:43.080-05:00</updated><title type='text'>friggin SPAM!</title><content type='html'>...I knew it would happen eventually.&lt;br /&gt;&lt;br /&gt;A piece of spam made it into my inbox through the to-date quite excellent combination of postfix, procmail, clamav, spamassassin, and rules de jour.  The culprit:  the origination address was forged to be from my account!  Well, it probably would have been marked as spam if I had not whitelisted my own domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112491634308177886?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112491634308177886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112491634308177886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491634308177886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491634308177886'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/friggin-spam.html' title='friggin SPAM!'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112491494440185435</id><published>2005-08-24T15:20:00.000-05:00</published><updated>2005-08-24T15:22:24.403-05:00</updated><title type='text'>...reasons for existence</title><content type='html'>1.  To archive opinions, news, tip-and-tricks.&lt;br /&gt;2.  Myspace.com sucks.&lt;br /&gt;3.  Pretty...so very pretty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112491494440185435?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112491494440185435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112491494440185435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491494440185435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491494440185435'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/reasons-for-existence.html' title='...reasons for existence'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15759571.post-112491456058432572</id><published>2005-08-24T15:15:00.000-05:00</published><updated>2005-08-24T15:16:00.586-05:00</updated><title type='text'>first post</title><content type='html'>FIRST POST!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15759571-112491456058432572?l=blog.patrick-morgan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.patrick-morgan.net/feeds/112491456058432572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15759571&amp;postID=112491456058432572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491456058432572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15759571/posts/default/112491456058432572'/><link rel='alternate' type='text/html' href='http://blog.patrick-morgan.net/2005/08/first-post.html' title='first post'/><author><name>Patrick</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
